Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]problem z mysql_fetch_array
Forum PHP.pl > Forum > Przedszkole
kartez
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. <center>
  5. Klinkij na zdjęcie, aby zobaczyć je w pełnych wymiarach.<br>
  6. </head>
  7. <?
  8. $db = mysql_connect('blablabla', 'blablabla', 'blablabla');
  9. mysql_select_db ("blablabla");
  10.  
  11. $zapytanie = 'SELECT Max(id) FROM foto1 ;';
  12. $zaznacz = mysql_query($zapytanie);
  13. $tab = mysql_fetch_array($zaznacz);
  14. $MaxId = $tab[0];
  15.  
  16. $zapytanie = 'SELECT link FROM foto1;';
  17. $zaznacz = mysql_query($zapytanie);
  18. $link = mysql_fetch_array($zaznacz);
  19.  
  20. $zapytanie = 'SELECT linkm FROM foto1;';
  21. $zaznacz = mysql_query($zapytanie);
  22. $linkm = mysql_fetch_array($zaznacz);
  23.  
  24. for ($i = 0;$i < $MaxId; $i++)
  25. {
  26. // if (isset ($link[i]) && isset ($linkm[i]) )
  27. // {
  28.  echo '<br><a target="_blank" href="';
  29.  echo $link[$i];
  30.  echo '"><img src="';
  31.  echo $linkm[$i];
  32.  echo '" border="0" align="middle" ></a><br>';
  33. // }
  34. }
  35.  
  36. ?>
  37. </center>
  38. </html>


Witam!
Skrypcik w powyższym kodzie powinien w założeniu wyświetlać na ekranie zdjęcia.
Niestety wyświetla on tylko pierwsze zdjęcie wraz z jego miniaturką (adres z $link[0] i $linkm[0])

Pozostałe zdjęcia nie wyświetlają się, tj. html wygląda tak:
  1. <a target="_blank" href=""><img src="" border="0" align="middle" ></a><br><br><a target="_blank" href=""><img src="" border="0" align="middle" ></a>

(wcina zawartości zmiennych $link[$i], $linkm[$i], gdy $i ma wartość inną niż 0).

Czy ktoś z Was wie może co robię nie tak?
Będę bardzo wdzięczny za wszelkie odpowiedzi...

I przy okazji: w komentarzu występuje if mający sprawdzać, czy wyświetlane dane nie są pozostałością z wykasowanego zdjęcia (klucz podstawowy 'id' jest auto_increament, więc po usunięciu jakiegoś rekordu zostaje jego id). Niestety zawsze, kiedy go stosuję nie wyświetla się nic, nawet to pierwsze, zwykle działające zdjęcie...
Trobin
Spróbuj
  1. <?php
  2. $MaxId=$tab['0'];
  3. ?>

a tak w ogóle to nie wygodniej odwoływać się do danych z tabeli przez nazwy pól? winksmiley.jpg
poza tym chyba lepiej napisać
  1. <?php
  2. echo "<br><a target=\"_blank\" href=\" .$zmienna. \"><img src=\". $zmienna2 .\" inne=\"ciekawostki\">";
  3. ?>
Gość
Zmieniłem, nic nie dało.
Z $MaxId ogólnie chyba nie ma problemu...

Przez nazwy pól? Nie jestem pewien co masz na myśli - przecież używam tych danych w pętelce for, która za każdym razem odwołuje się do danych z innego rekordu (co coraz to większym id)...
A poza tym nazwy pół wchodzą w grę chyba tylko wtedy, gdy odwołuję się jedynie do pół w jednym konkretnym rekordzie...
Jeśli się mylę, będę wdzięczny za sprostowanie...
Trobin
  1. <?php
  2. while ($row = mysql_fetch_array($result)) {
  3. printf("ID: %s Name: %s", $row["id"], $row["name"]);
  4. }
  5. ?>

Mowiłem o czymś takim winksmiley.jpg . Ale to jest raczej kwestia przyzwyczajeń.
Nie mam pewności, ale chyba tyle średników jest niepotrzebne?
  1. <?php
  2. $zapytanie = 'SELECT Max(id) FROM foto1 ;';
  3. ?>
nevt
ogólnie cały ten kod wymaga sporej optymalizacji, coś w rodzaju:
  1. <?php
  2. $db = mysql_connect('...', '...', '...');
  3. mysql_select_db ('...');
  4.  
  5. $sql = 'SELECT link, linkm FROM foto1;';
  6. $result = mysql_query($sql);
  7. while($row=mysql_fetch_assoc($result))
  8. echo '<br /><a target="_blank" href="'.$row['link'].
  9. '"><img src="'.$row['linkm'].'" border="0" align="middle" ></a><br />';
  10.  
  11. ?>
Gość
jeden średnik do zapytania, drugi do php-cza... W każdym razie usunąłem po jednym, (nie)działa tak jak wcześniej

Wybacz ignorancję i brak wiedzy, ale co właściwie robi twój kod (ten z pętelką while) i jak go użyć?
W ogóle to dzięki wielkie za odpowiedzi...
Gość
działa. jesteście boscy.
wielkie dzięki...
Gość
niestety jako gość nie mogę edytować moich postów, sry za ten lekki spam

chciałem zapytać na czym właściwie polega działanie tego kodu:

while($row=mysql_fetch_assoc($result))
echo '<br /><a target="_blank" href="'.$row['link'].
'"><img src="'.$row['linkm'].'" border="0" align="middle" ></a><br />';

niezabardzo w nim mogę zauważyć jakąkolwiek inkrementację (aż wstyd pytać, ale nawet google mi nie pomogły...)
Trobin
Bo jej tu nie ma.
Ten kod po prostu zwraca wszystkie rekordy z bazy wyświetlając je w dany sposób (czyli wkładając zmienne w atrybuty np. linka). To jest przerobiona pod Twój skrypt wersja tego o czym pisałem wcześniej, ale w innym kontekście.
nevt
  1. <?php
  2. while($row=mysql_fetch_assoc($result))
  3. ?>

while(warunek) - pętla, powtarza się dopóki warunek = TRUE
mysql_fetch_assoc($result) - odczytuje kolejny wiersz z rezultatu zapytania, po kolei od pierwszego do ostatniego, po ostatnim zwraca wartość FALSE
$row=mysql_fetch_assoc($result) - przypisuje kolejny wiersz do zmiennej $row
kiedy już nie ma kolejnego wiersz, $row przyjmuje wartość FALSE i pętla while() przestaje się powtarzać..

jaśniej już nie potrafię...
Gość
Dzięki wielkie panowie
Myślałem (sam nie wiem czemu), że mysql_fetch_assoc($result) działa raz dla wszystkich wierszy od razu...
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.