Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Pobieranie danych z 2 tabel
Forum PHP.pl > Forum > Przedszkole
oomaster
Witam,

Chcę pobrać dane z 2 tabel. Tak ,że w jedej tabeli mam id kategorii a w drugiej nazwę kategorii i chcę to skleić w całość lecz wywala mi błąd:

Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/x/domains/x/public_html/x/x.php on line 91


DLaczego wywala błąd ? :-(

  1. function pasek($rekordow,$na_stronie,$na_pasku,$skrypt,$s) {
  2. $stron = ceil($rekordow/$na_stronie);
  3. if ($s<1) $s=1;
  4. if ($s>$stron) $s=$stron;
  5. $koniec = $s+$na_pasku;
  6. if ($s<=$na_pasku) $koniec = $na_pasku*2+1;
  7. if ($koniec>$stron) $koniec = $stron;
  8. $start = $koniec-$na_pasku*2;
  9. if ($start<1) $start=1;
  10. if ($s>1) $p = "<a href='$skrypt".($s-1)."'>< Poprzednia</a>";
  11. else $p = "<span style='color:gray'>< Poprzednia</span>";
  12. if ($s<$stron) $n = "<a href='$skrypt".($s+1)."'>Następna ></a>";
  13. else $n = "<span style='color:gray'>Następna ></span>";
  14. for ($i=$start; $i<=$koniec; $i++) {
  15. if ($i==$s) $l .= " <span style='color:#2b5676;'><b><u>$i</u></b></span> ";
  16. else $l .= " <a href='$skrypt$i'>$i</a> ";
  17. }
  18. if ($rekordow<1) $wynik = "<div class=\"alert\">Brak Wyników spełniających podane kryteria</div>";
  19. else $wynik = "Znalezionych: $rekordow, strona $s z $stron<br />";
  20. if ($stron>1) $wynik .= "$p  - $l -  $n";
  21. return $wynik;
  22. }
  23.  
  24. $s = ($_GET["s"]>1)?number_format($_GET["s"], 0, "", ""):1; // numer strony
  25. $na_stronie = 6; // liczba rekordow widocznych na stronie
  26. $na_pasku = 5; // liczba odpowiedzi/2 na pasku
  27. $skrypt = 'x.php?s='; // skrypt do wysyłania danych
  28.  
  29. $start = ($s-1)*$na_stronie;
  30. $wynik = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM mvo_foto_folder JOIN mvo_foto_kat on mvo_foto_folder.kat = mvo_foto_kat.id ORDER BY id DESC LIMIT $start, $na_stronie");
  31. $rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
  32.  
  33. $stron = ceil($rekordow/$na_stronie);
  34. if ($s>$stron and $rekordow>0) {
  35. $start = ($stron-1)*$na_stronie;
  36. $wynik = mysql_query('SELECT * FROM mvo_foto_folder JOIN mvo_foto_kat on mvo_foto_folder.kat = mvo_foto_kat.id ORDER BY id DESC LIMIT $start, $na_stronie');
  37.  
  38. }
  39. while($web2 = mysql_fetch_assoc($wynik)) {
  40. echo '<b>'.$web2['mvo_foto_folder.title'].'</b>
  41. <i>'.$web2['mvo_foto_kat.title'].'</i>';
  42. }
  43. echo "<p style='text-align:center;'>";
  44. echo pasek($rekordow,$na_stronie,$na_pasku,$skrypt,$s);
  45. echo "</p>";
sajegib
Podaj linie 91 i kilka przed i za nią
oomaster
Linia 91. to na powyższym listingu linia 39.
Michasko
Linia 36 - masz apostrofy, daj cudzysłowy.
Zainwestuj też w jakąś kontrolę błędów, bo teraz nawet nie sprawdzasz, czy zapytanie wykonało Ci się poprawnie ;]
oomaster
Zmieniłem z apostrofa na cudzysłów i dalej ten sam błąd :-/
brzoza91
a spróbuj
  1. ORDER BY mvo_foto_kat.id
oomaster
Teraz niby jest ok ale wogóle nie wyświetla danych.

Czy wywołanie np.:

  1. echo $web2['mvo_foto_folder.title'];
brzoza91
włóż do pętli var_dump($web2);

wtedy pokaże Ci w każdym kroku strukturę i wartości tablicy w danym kroku

  1. while($web2 = mysql_fetch_assoc($wynik))
  2. {
  3. //echo '<b>'.$web2['mvo_foto_folder.title'].'</b>
  4. //<i>'.$web2['mvo_foto_kat.title'].'</i>';
  5. var_dump($web2);
  6. }
oomaster
OK a co w przypadku gdy w 2 tabelach występują pola o takiej samej nazwie ?

Ponieważ niestety ale pole title występuje zarówno w tabeli 1 jak i 2 :-/
aras785
  1. tabela2.title AS title2
brzoza91
spróbuj na początku dać

  1. SELECT *,mvo_foto_folder.title as title2 FROM mvo_foto_folder JOIN mvo_foto_kat on mvo_foto_folder.kat = mvo_foto_kat.id ORDER BY mvo_foto_kat.id DESC LIMIT $start, $na_stronie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.