Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[PHP/MYSQL] tylko pętla wykonuje tylko jedno polecenie

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[PHP/MYSQL] tylko pętla wykonuje tylko jedno polecenie

Post 07.03.2007, 07:33:27

Kod: Zaznacz cały
<?
else {

$x=<<<HTM

<Br>
<center>
<b>$nazwa Czlonkow: $czlonkow</b><br><br>
<table>
<tr>
   <th>Miejsce</th>   <th>Login</th> <th>Druzyna</th> <th>Punkty</th><th>Akcja</th>
</tr>
HTM;

echo "$x";

$x = 1;


$zapytanie = "SELECT * FROM userranking WHERE idran='$id'" or die(mysql_error());   
$wykonaj = mysql_query($zapytanie) or die(mysql_error());
while($rekord = mysql_fetch_array($wykonaj))
{
$login = $rekord['login'];


$zapytanie = "SELECT * FROM user WHERE login='$login'" or die(mysql_error());   
$wykonaj = mysql_query($zapytanie) or die(mysql_error());
while($rekord = mysql_fetch_array($wykonaj))
{
$dru = $rekord['druzyna'];
$pkt = $rekord['pkt'];

$body=<<<HTM

<tr>
   <td>$x</td>   <td>$login</td><td>$dru</td><td>$pkt</td><td><A href=index.php?goto=addliga3&idran=$id&login=$login><b>[USUN]</B></a></td>
</tr>

HTM;

echo "$body";

}

$x = $x + 1;


}
echo "</table>";
$x=<<<HTM
<br>
<center><b><a href="index.php?goto=addliga4">SKASUJ LIGE</a></b></center>

HTM;

echo "$x";
}

}

?>


Napisałem taki skrypcik który miałby na zadanie mieć pokazywanie rankingów w którym jest gracz.

Niestety wyświetla tylko pierwszą osobe w bazie pod danym id .

Jak usuna ją to wyświetla następna ale tylko jedną zamiast wszystkich...

Pomóżcie co jest źle z góry dziękuje i pozdrawiam

//edit

Wpadłem na błąd dlatego poprawiłem ale teraz nic nie wyświetla :/ Chłopaki co z tym jest nie tak ?

Kod: Zaznacz cały

<?

[...]

else {

$x=<<<HTM

<Br>
<center>
<b>$nazwa Czlonkow: $czlonkow</b><br><br>
<table>
<tr>
   <th>Miejsce</th>   <th>Login</th> <th>Druzyna</th> <th>Punkty</th><th>Akcja</th>
</tr>
HTM;

echo "$x";

$x = 1;


 $query = "SELECT * FROM userranking WHERE idran='$id'" or die(mysql_error());   
 $result = mysql_query($query)or die(mysql_error());
 while ($row = mysql_fetch_array($result))
     {
$login = $row['login'];

 $query2 = "SELECT * FROM user WHERE login='$login'" or die(mysql_error());   
 $result2 = mysql_query($query2)or die(mysql_error());
 while ($row2 = mysql_fetch_array($result))
     {
$dru = $row2['druzyna'];
$pkt = $row2['pkt'];



$body=<<<HTM

<tr>
   <td>$x</td>   <td>$login</td><td>$dru</td><td>$pkt</td><td><A href=index.php?goto=addliga3&idran=$id&login=$login><b>[USUN]</B></a></td>
</tr>

HTM;

echo "$body";

}

$x = $x + 1;


}
echo "</table>";
$x=<<<HTM
<br>
<center><b><a href="index.php?goto=addliga4">SKASUJ LIGE</a></b></center>

HTM;

echo "$x";
}

}

?>



pomocy :(
Avatar użytkownikasexbik
Posty: 239
Dołączył(a): 02.02.2006
Lokalizacja: Bytom

Post 07.03.2007, 21:08:43

skoro juz pododawales wszedzie dwojki, to nie uwazasz ze i tu powinienes:
while ($row2 = mysql_fetch_array($result))
?
Zagadka:
Gdzie w kodzie powyzej brakuje dwójki?
nospor
Posty: 1039
Dołączył(a): 20.04.2005

Post 07.03.2007, 23:59:38

no i oto stary chodzilo, jesteś wielki ;) dzięki (zaraz zobacze czy tylko w tym jest błąd czy dalej nei bedzie działać :/)

--

Panowie kolejna zagadka mam nadzieje, ze tym razem będziecie pomocni

Kod: Zaznacz cały
<? if($xxtestxxqwertyxxtestxx!='39dfjs3odkss933jsaa493dddkddd22'){exit;} ?>
<?
if ($clogin!="") {
$x=<<<HTM
<center><b>Aby dolaczyc do ligi wypelnij formularz.</b></center><br>

<form action="index.php?goto=liga2" method="POST">
<input type="text" name="login" value="" maxlength="20"/> <b>Login administratora ligi</b><br>
<input type="password" name="haslo" value="" maxlength="20"/> <b>Haslo do ligi</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Dolacz do ligi" />

</form>
<Br><br>
<center>
<b>

Nalezysz do do nastepujacych prywatnych lig:
</b>
</center>

HTM;

echo "$x";

 $query = "SELECT * FROM userranking WHERE login='$clogin'" or die(mysql_error());   
 $result = mysql_query($query)or die(mysql_error());
 while ($row = mysql_fetch_array($result))
     {
$idran = $row['idran'];
$loginxx = $row['login'];

if ($loginxx==$clogin) {

echo "$idran";


if ($idran!="") {


$zapytanie = "SELECT * FROM ranking WHERE id='$idran'" or die(mysql_error());   
$wykonaj = mysql_query($zapytanie) or die(mysql_error());
while($rekord = mysql_fetch_array($wykonaj))
{
$nazwa = $rekord['nazwa'];
$czlonkow = $rekord['czlonkow'];


$x=<<<HTM

<Br>
<center>
<b>$nazwa Czlonkow: $czlonkow</b><br><br>
<table>
<tr>
      <th>Login</th> <th>Druzyna</th> <th>Punkty</th>
</tr>
HTM;

echo "$x";


 $query = "SELECT * FROM user " or die(mysql_error());   
 $result = mysql_query($query)or die(mysql_error());
 while ($row = mysql_fetch_array($result))
     {
$druzyna= $row['druzyna'];
$pkt= $row['pkt'];
$login= $row['login'];



$zapytanie = "SELECT * FROM userranking WHERE login='$login'" or die(mysql_error());   
$wykonaj = mysql_query($zapytanie) or die(mysql_error());
while($rekord = mysql_fetch_array($wykonaj))
{
$idranx = $rekord['idran'];

if ($idran==$idranx) {



$body=<<<HTM

<tr>
   <td>$login</td><td>$druzyna</td><td>$pkt</td>
</tr>

HTM;

echo "$body";

}



}




     }







 
     }


}

echo "</table>";

}

}

}

?>


Czemu wyswietla tylko 1 wynik skoro sa 2 w bazie. Niewykonuje polecenia od nowa niewiadomo czemu tylko konczy na 1 wywołaniu.

Wiem, że kod troche zagmatwany no ale tak baza zrobiona cuż zrobić.

Widzi ktos jakis blad?
Avatar użytkownikasexbik
Posty: 239
Dołączył(a): 02.02.2006
Lokalizacja: Bytom

Post 08.03.2007, 10:08:09

Twoj kod to sieczka.... analiza jego to jeszcze wieksza sieczka. Naucz sie robic jakies sensowne wciecia bo niedaje sie tego czytac.

zmienne nadpisujesz i tyle.
oto jak przebiegaja twoje zapytania:
result
wykonaj
result - tu juz nadpisujesz
wykonaj - tu juz nadpisujesz

pozatym Twoj sposob jest "bardzo" optymalny. robienie zapytan w kolejnych zagniezdzonych petlach to zabojstwo dla bazy. Wszakze u ciebie to po dwa rekordy tylko ale i tak powinienes uczyc sie pisac optymalniej. Poczytaj cos o left join
nospor
Posty: 1039
Dołączył(a): 20.04.2005

Post 08.03.2007, 20:51:14

@sexbik: proszę w przyszłości korzystać z funkcji edytuj oraz kod php wklejać w odpowiednich tagach, w przeciwnym wypadku skończy się to blokadą tematu.
Avatar użytkownikaMavestinus
Paweł Nowak

Out of time
Out of time

Posty: 2384
Dołączył(a): 09.01.2003
Lokalizacja: Katowice


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50894 zarejestrowanych użytkowników.
Najnowszy użytkownik: LetaMest


Nasi użytkownicy napisali:

  • 936378 wiadomości
  • w 246838 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)