Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyświetlenie danych z MySQL poprzez pętle
Forum PHP.pl > Forum > Przedszkole
Dawka
Witam,

Chcę wyświetlić kolejno po jednym rekordzie z bazy poprzez pętle for. Niestety nie działa. Może dam najpierw kod.

  1.  
  2. <?
  3. for($i;$i<5;$i++) {
  4.  
  5. $sql = "SELECT `key` FROM `baza` WHERE id='$for' LIMIT 1";
  6.  
  7. $wynik=mysql_query($sql);
  8.  
  9.  
  10. while ($rekord = mysql_fetch_array($wynik)) {
  11.  
  12. $blogTitle= $rekord[0];
  13.  
  14. $rekord[0];
  15.  
  16. }
  17. }
  18. ?>


Najdziwniejsze jest to, że, gdy zdefiniuję sobie sam $i, to wszystko działa. Także o błędzie w zapytaniu do MySQL raczej nie ma mowy. Nie wiem, czy może do zapytania nie można używać pętli? Za każdym razem wyskakuje błąd:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.25/kanonier/www/dodaj.php on line 42

Z góry dzięki za pomoc.
zzeus
A co zawiera zmienna $for ?
thek
Ja bym sie zastanowił jaki jest sens użycia sposobu Twojego winksmiley.jpg Pobierasz każdy rekord pojedynczo. 100 rekordów = 100 zapytań do bazy sciana.gif
Pobierz za jednym zamachem ileś i potem w pętli while to odczytuj.
MiChaSSs
Przykladowy kod:
  1. // Oczywiscie wczesniej musisz sie polaczyc z baza i wybrac nazwe bazy, na ktorej chcesz dokonywac operacje
  2. $mysql_host = 'localhost';
  3. $mysql_login = 'twoj_user';
  4. $mysql_password = 'twoje_haslo';
  5. $mysql_database = 'nazwa_bazy_danych';
  6.  
  7. // Polaczenie do bazy danych MySQL
  8. $mysql_connection = @mysql_connect($mysql_host, $mysql_login, $mysql_password)
  9. // Gdy polaczenie sie nie powiedzie to wyswietl komunikat i przerwij skrypt
  10. or die("$current_time -> Error while connecting to MySQL -> ".mysql_error()."\n");
  11. // Wybor bazy danych
  12. $mysql_db = @mysql_select_db($mysql_database, $mysql_connection)
  13. // Gdy wybor bazy danych sie nie powiedzie wyswietl komunikat i przerwij skrypt
  14. or die("$current_time -> Error while selecting database\n");
  15. // Ustawianie kodowania polaczenia z baza MySQL
  16. mysql_query('SET NAMES utf8');
  17. mysql_query('SET CHARACTER_SET utf8_unicode_ci');
  18.  
  19. // Tak jak pisal kolega wyzej, to jest lepsze wyjscie
  20. $sql = 'SELECT key FROM nazwa_tabeli;'; // popraw sobie nazwe tabeli jaka tam masz :)
  21. $wynik=mysql_query($sql, $mysql_connection);
  22.  
  23. while ($rekord = mysql_fetch_array($wynik, MYSQL_NUM))
  24. {
  25. $blogTitle= $rekord[0];
  26. echo($rekord[0]); // zeby widzec to przydaloby sie echo tongue.gif
  27. }
Dawka
Zmienna $for to $i winksmiley.jpg Po prostu zmieniałem tutaj jak dodałem i zapomniałem - powinno być $i. A dlaczego pobieram wszystkie po kolei?;p Bo mam nazwy tematów w bazie MySQL i muszę je dodać do Wordpressa, każdy po kolei do oddzielnego tematu, dlatego pojedynczo to robiłem.

A w tym kodzie, który dałeś MiChaSSs MYSQL_NUM co oznacza? Właśnie dany element w bazie? Jeśli tak, to byłoby to dużo lepsze rozwiązanie smile.gif
MiChaSSs
MYSQL_NUM oznacza, ze tablica z wynikami, bedzie tablica numeryczna a nie asocjacyjna smile.gif W twoim kodzie miales tablice asocjacyjna i numeryczna (a po co dwie? smile.gif)

http://us.php.net/manual/en/function.mysql-fetch-array.php
Dawka
Genialnie smile.gif Teraz wszystko działa nie dość, że prawidłowo, to do tego szybciej! Dziękuję za pomoc winksmiley.jpg
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.