Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wyświetlenie danych z MySQL poprzez pętle
Dawka
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2006

Ostrzeżenie: (0%)
-----


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.

Ten post edytował nospor 8.09.2009, 11:30:35
Go to the top of the page
+Quote Post
zzeus
post
Post #2





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

Ostrzeżenie: (0%)
-----


A co zawiera zmienna $for ?
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja bym sie zastanowił jaki jest sens użycia sposobu Twojego (IMG:style_emoticons/default/winksmiley.jpg) Pobierasz każdy rekord pojedynczo. 100 rekordów = 100 zapytań do bazy (IMG:style_emoticons/default/sciana.gif)
Pobierz za jednym zamachem ileś i potem w pętli while to odczytuj.
Go to the top of the page
+Quote Post
MiChaSSs
post
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/tongue.gif)
  27. }


Ten post edytował MiChaSSs 8.09.2009, 11:54:05
Go to the top of the page
+Quote Post
Dawka
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2006

Ostrzeżenie: (0%)
-----


Zmienna $for to $i (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
MiChaSSs
post
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


MYSQL_NUM oznacza, ze tablica z wynikami, bedzie tablica numeryczna a nie asocjacyjna (IMG:style_emoticons/default/smile.gif) W twoim kodzie miales tablice asocjacyjna i numeryczna (a po co dwie? (IMG:style_emoticons/default/smile.gif) )

http://us.php.net/manual/en/function.mysql-fetch-array.php

Ten post edytował MiChaSSs 8.09.2009, 12:18:55
Go to the top of the page
+Quote Post
Dawka
post
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2006

Ostrzeżenie: (0%)
-----


Genialnie (IMG:style_emoticons/default/smile.gif) Teraz wszystko działa nie dość, że prawidłowo, to do tego szybciej! Dziękuję za pomoc (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 06:19