Problem z while :/

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Balas
Moderator
Posty: 252
Rejestracja: wt sie 02, 2005 12:53 pm
Lokalizacja: Inowroclaw
Kontakt:

Problem z while :/

Post autor: Balas »

Gdy mam taki kod
[php]<?php
$sql = 'SELECT * FROM menu_blok WHERE pozycja="left"';
$zapytanie = mysql_query($sql);
while($wiersz = mysql_fetch_array($zapytanie))
{
echo $wiersz['title'];
echo '<br>';
}
?>[/php]

Wyswietla wszystko OK (Blok 1, Blok 2, Blok 3)


Gdy dodałem jeszcze 2 petle :

[php]<?php
$sql = 'SELECT * FROM menu_blok WHERE pozycja="left"';
$zapytanie = mysql_query($sql);
while($wiersz = mysql_fetch_array($zapytanie))
{
echo $wiersz['title'];
echo '<br>';

$sql = 'SELECT * FROM menu_link WHERE blok_id='.$wiersz['id'];
$zapytanie = mysql_query($sql);
while($wiersz = mysql_fetch_array($zapytanie))
{
echo $wiersz['nazwa'];
echo '<br>';
}
}
?>[/php]

Nie wyswietla pozostalych blokow :/ Czemu ?? (tak jakby petla juz nie przechodzila :/) W czym blad ?? Czy wogole tak mozna ??
Krzysztof Gaudy
Nowy
Nowy
Posty: 77
Rejestracja: sob sty 17, 2004 11:10 am
Lokalizacja: Kraków
Kontakt:

Błędny kod

Post autor: Krzysztof Gaudy »

Witam !
... id='.$wiersz['id'];
W powyższym usuń apostrofy wokół id.

Najważniejsze jednak: zmień nazwy zmiennych w drugiej wewnętrznej pętli, na np. $zapytanie2, $sql2, $wiersz2. Powinno pomóc, daj znać czy o to chodziło. Wyświetla Ci się jakiś komunikat o błędzie?
Balas
Moderator
Posty: 252
Rejestracja: wt sie 02, 2005 12:53 pm
Lokalizacja: Inowroclaw
Kontakt:

Re: Problem z while :/

Post autor: Balas »

Teraz działa :) Nie pomyslalem ze to przez podwojone nazwy :D (bo tylko skopiowalem bezmyslnie od wyswietlania tytulu bo sie pisac nie chciało :) )
Krzysztof Gaudy
Nowy
Nowy
Posty: 77
Rejestracja: sob sty 17, 2004 11:10 am
Lokalizacja: Kraków
Kontakt:

Zastępowanie zmiennych

Post autor: Krzysztof Gaudy »

Witam !

Po prostu pętla druga zastępowała nazwy zmiennych pętli pierwszej, przez co zamiast powtarzającego się zapytania pierwszego do bazy danych, miałeś cały czas zapytanie drugie w pętli pierwszej, które nie mogło być zrealizowane.
ODPOWIEDZ