Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]funkcja foreach cos zle pisze
ukasz20
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 28.06.2007

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


Witam

dopiero raczkuje w temacie php wiec prosze o wyrozumialsc.

mam taki kod i chce pokazac wynik zapytania sql na stronie:
  1. <html>
  2. <head>
  3. <title>
  4. spis plyt
  5. </title>
  6. </head>
  7. <body>
  8. <?
  9.  
  10. @ $db = mysql_pconnect('localhost', 'root', 'on');
  11. if (!$db)
  12. {
  13. echo 'baza dupa';
  14. }
  15. mysql_select_db(lista_plyt);
  16.  
  17. $zapytanie = "select tytul from gry";
  18. #---------------------------------------
  19. $wynik = mysql_query($zapytanie);
  20.  
  21. $ile_znalezionych = mysql_num_rows($wynik);
  22.  
  23. echo "<p>ilosc znaezionych pozycji: $ile_znalezionych</p>";
  24.  
  25. foreach ($wynik as $d) {
  26. echo "$d<br>";
  27. }
  28.  
  29. ?>
  30. </body>
  31. </html>

krzyczy :
Warning: Invalid argument supplied for foreach()

hasla użytkownicy itp sie zgadzaja
o co chodzi ?


-------------------------
ponieważ dostałeś już odpowiedzi
nie zamknę wątku ale dodam
odpowiedni [tag] do tematu
na przyszłość o tym pamiętaj
~Cienki1980
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


mysql_query zwraca wynik typu resource, czyli taki pseudo-uchwyt do odpowiedzi bazy danych. Teraz jeszcze trzeba taki uchwyt przepisać do tablicy (np za pomocą funkcji mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual albo mysql_fetch_row" title="Zobacz w manualu PHP" target="_manual albo innym "fetch"), czyli tak jak jest w manualu.


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
rasgan
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 30.05.2007
Skąd: Kleszczów

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


przed foreach wklej linijkę
Kod
$wynik = mysql_fetch_row($wynik);


--------------------
Szczęścia w mrokach...
Go to the top of the page
+Quote Post
yaotzin
post
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 12.02.2007
Skąd: Zielona Góra

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


Cytat(rasgan @ 29.06.2007, 09:43:18 ) *
przed foreach wklej linijkę
Kod
$wynik = mysql_fetch_row($wynik);



A nie powinno być tak questionmark.gif

while($wynik1 = mysql_fetch_row($wynik)){
echo $wynik['kolumna'];
}

Tak z ciekawości pytam.


-----------------------------------------------
chyba że się mylę....

Ten post edytował yaotzin 29.06.2007, 09:58:34


--------------------
------
Per Aspera Ad Astra
Go to the top of the page
+Quote Post
rasgan
post
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 30.05.2007
Skąd: Kleszczów

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


Tak, oczywiście masz rację. Napisałem jedną linijkę, bo w moim frameworku mam tą pentelkę zapisaną jako jedną funkcję. Przepraszam za wprowadzenie w błąd.


--------------------
Szczęścia w mrokach...
Go to the top of the page
+Quote Post
ukasz20
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 28.06.2007

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


hmm to jak ma byc w koncu ?

  1. <?php
  2. $wynik = mysql_fetch_row($wynik)
  3. foreach ($wynik as $d) {
  4. echo "$d<br>";
  5. }
  6. ?>


to nie dziala :
  1. <?php
  2. while($wynik1 = mysql_fetch_row($wynik)){
  3. echo $wynik['kolumna'];
  4. }
  5. ?>


dziala natomiast:
  1. <?php
  2. while($dane = mysql_fetch_object($wynik)){
  3. $cd_id="$dane->cd_id";
  4. echo "$cd_id";
  5. $tytul="$dane->tytul";
  6. echo "$tytul";
  7. };
  8. ?>


czy jest jakis sposob zeby napisac funkcje w php ktora wypluwalaby to co jest w zapytaniu(w sensie wszystko) a manipulowac zapytaniami sql tylko i wylacznie bez mieszania w funkcji.
Go to the top of the page
+Quote Post
uli
post
Post #7





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Cytat(ukasz20 @ 28.06.2007, 23:26:02 ) *
Witam

dopiero raczkuje w temacie php wiec prosze o wyrozumialsc.

mam taki kod i chce pokazac wynik zapytania sql na stronie:
  1. <html>
  2. <head>
  3. <title>
  4. spis plyt
  5. </title>
  6. </head>
  7. <body>
  8. <?
  9.  
  10. @ $db = mysql_pconnect('localhost', 'root', 'on');
  11. if (!$db)
  12. {
  13. echo 'baza dupa';
  14. }
  15. mysql_select_db(lista_plyt);
  16.  
  17. $zapytanie = "select tytul from gry";
  18. #---------------------------------------
  19. $wynik = mysql_query($zapytanie);
  20.  
  21. $ile_znalezionych = mysql_num_rows($wynik);
  22.  
  23. echo "<p>ilosc znaezionych pozycji: $ile_znalezionych</p>";
  24.  
  25. foreach ($wynik as $d) {
  26. echo "$d<br>";
  27. }
  28.  
  29. ?>
  30. </body>
  31. </html>

krzyczy :
Warning: Invalid argument supplied for foreach()

hasla użytkownicy itp sie zgadzaja
o co chodzi ?


-------------------------
ponieważ dostałeś już odpowiedzi
nie zamknę wątku ale dodam
odpowiedni [tag] do tematu
na przyszłość o tym pamiętaj
~Cienki1980


No dobra, obiadek prosto na stół, bo już sił nie mam:

  1. <html>
  2. <head>
  3. <title>
  4. spis plyt
  5. </title>
  6. </head>
  7. <body>
  8. <?
  9.  
  10. @ $db = mysql_pconnect('localhost', 'root', 'on');
  11. if (!$db)
  12. {
  13. echo 'baza dupa';
  14. }
  15. mysql_select_db(lista_plyt);
  16.  
  17. $zapytanie = "select tytul from gry";
  18. #---------------------------------------
  19. $wynik = mysql_query($zapytanie);
  20.  
  21. $ile_znalezionych = mysql_num_rows($wynik);
  22.  
  23. echo "<p>ilosc znaezionych pozycji: $ile_znalezionych</p>";
  24.  
  25. while ($wiersz = mysql_fetch_array($wynik)) {
  26.  
  27. $a = $wiersz["tytul"];
  28. echo "$a<br>";
  29.  
  30. }
  31.  
  32. ?>
  33. </body>
  34. </html>


Ten post edytował uli 29.06.2007, 13:58:17


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
ukasz20
post
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 28.06.2007

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


dzieki
Go to the top of the page
+Quote Post
wilkolaski
post
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.10.2006

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


A ja mam dwa pytania. Chodzi o ta czesc kodu:
  1. <?php
  2. while ($wiersz = mysql_fetch_array($wynik)) {
  3.  
  4. $a = $wiersz["tytul"];
  5. echo "$a<br>";
  6.  
  7. }
  8. ?>

Jezeli sie myle to mnie poprawcie.
Rozumiem ze funkcja mysql_fetch_array($wynik) tworzy tablice asocjacyjna z wyniku odpowiedz bazy w ktorej jest jeden klucz o nazwie tytul i ktory przyjmuje rozne wartosci, tyle wartosci ile jest wybranych rekordow z tabeli. Tablica zapisana jest nastepnie w $wiersz. Teraz zaczynaja sie moje pytania.
1. Z tego co wiem do dzialania petli while potrzebne jest spelnienie warunku w nawiasie a jezeli dobrze czaje warunek ten bedzie zawsze spelniony bo nie widze w nim zadnego licznika petli. Czyli bedzie to nie konczaca sie petla chyba ze jest jakis niejawny licznik ktory wplywa na spelnienie lub nie warunku w petli.
2. W jaki sposob wobec tego pod zmienna $a beda podstawiane kolejne wartosci wyciagniete z tablicy $wiersz skoro nie ma licznika.

Pozdrawiam.
Go to the top of the page
+Quote Post
rasgan
post
Post #10





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 30.05.2007
Skąd: Kleszczów

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


warunek
Kod
$wiersz = mysql_fetch_array($wynik)
nie zawsze jest spełniony. Jeśli skończą się elementy tablicy to warunek nie jest spełniony. mysql_fetch_array — Zapisuje wiersz wyniku w tablicy asocjacyjnej, numerycznej lub w obu (php.net.pl) i zwraca false jeśli wiersz wyniku tablicy asocjacyjnej nie istnieje. Tak więc pętla jest powtarzana tak długo jak są wiersze w tablicy. Gdy się skończa pętla nie jest powtórzona.


--------------------
Szczęścia w mrokach...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 15:38