Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z pętlą
Forum PHP.pl > Forum > Przedszkole
bubusek
Stworzyłem sobie o to pętle która mi nie działa ( widać źle ją zrobiłem smile.gif )

  1. $idstat = mysql_fetch_array(mysql_query("select ile from stats where stat='ile'")) or die(mysql_error());
  2. $id = $idstat[0] + 1;
  3. $eee = "SELECT COUNT(*) FROM url WHERE id='$id' ";
  4. if(!$result = mysql_query($eee)){
  5. return SERWER_ERROR;
  6. }
  7. if(!$row = mysql_fetch_row($result)){
  8. return SERWER_ERROR;
  9. }
  10. if($row[0] < 1){
  11. mysql_query("INSERT INTO url (qq, ww, ee) VALUES ($id, '".addslashes($_POST['ww'])."', '$ee')");
  12. mysql_query("UPDATE stats SET ile='$id' WHERE stat='ile'");
  13. echo " ".$id."
  14. ";
  15. }
  16. else{
  17. for ($i=$id;$row[0]<1;$i++) {
  18. $eee = "SELECT COUNT(*) FROM url WHERE id='$id' ";
  19. if(!$result = mysql_query($eee)){
  20. return SERWER_ERROR;
  21. }
  22. if(!$row = mysql_fetch_row($result)){
  23. return SERWER_ERROR;
  24. }
  25. if($row[0] < 1){
  26. mysql_query("INSERT INTO url (qq, ww, ee) VALUES ($i, '".addslashes($_POST['ww'])."', '$ee')");
  27. mysql_query("UPDATE stats SET ile='$i' WHERE stat='ilel'");
  28. echo " ".$i."
  29. ";
  30. }
  31. }
  32. }

Błędy pewnie jak na przedszkolaka banalne ale nie mam już pomysłu. Co poprawić ?
Daiquiri
Co konkretnie nie działa? Proponuję też usunąć wszelkie @, które maskują potencjalne błędy.
bubusek
Otóż chcę by kiedy $row[0] będzie większy od 0 (czyli wykaże iż dany rekord jest już w bazie ) to tak długo powiększał $i o 1 aż $row[0] wyniesie 0 i wtedy zadziała podany INSERT UPDATE i echo.
Nie działa to w taki sposób bo gdy mam $row[0] większy od 0 to ani nie ma zmiany w bazie ani echo nie jest pokazane.
Co do usunięcia @ to nie rozumiem co to są te @. upss
Daiquiri
@ - maskują opcjonalnie pojawiające się informacje o tym, że coś poszło nie tak. Sprawdź czy błędem są warunki i pętle, czy np. fakt, że $row[0] nie ma wartości (np. echo $row[0]; )
nospor
Totalnie nie rozumiem co chcesz zrobić, ale błąd masz w FOR
for ($i=$id;$row[0]<1;$i++) {
skoro $row[0] jest większe od 0, to warunek $row[0]<1 nigdy nie będzie spełniony a co za tym idzie pętla nie wykona się ani razu
bubusek
Cytat(Daiquiri @ 20.05.2011, 09:58:27 ) *
@ - maskują opcjonalnie pojawiające się informacje o tym, że coś poszło nie tak. Sprawdź czy błędem są warunki i pętle, czy np. fakt, że $row[0] nie ma wartości (np. echo $row[0]; )

No więc
echo $row[0]; daje mi 1 czyli dobrze pokazuje tam wartość.

Cytat(nospor @ 20.05.2011, 10:00:21 ) *
Totalnie nie rozumiem co chcesz zrobić, ale błąd masz w FOR
for ($i=$id;$row[0]<1;$i++) {
skoro $row[0] jest większe od 0, to warunek $row[0]<1 nigdy nie będzie spełniony a co za tym idzie pętla nie wykona się ani razu


No więc problem jest w całym ustawieniu mojej pętli...
Więc tak.
Kiedy $row[0] daje mi wynik 0 to wszystko działa ładnie czyli wykonuje mi to co mam w if($row[0] < 1){} nad tą moja pętlą,
natomiast kiedy dostaje wynik 1 to chcę by pętla podmieniała mi $i (który wyjściową wartość ma $id) do takiego momentu aż $row[0] da znów wynik 0
nospor
No to ci podałem odpowiedź....

Skor tak jest źle:
for ($i=$id;$row[0]<1;$i++) {

To logiczne że tak będzie dobrze
for ($i=$id;$row[0]>=1;$i++) {
bubusek
Cytat(nospor @ 20.05.2011, 10:22:14 ) *
No to ci podałem odpowiedź....

Skor tak jest źle:
for ($i=$id;$row[0]<1;$i++) {

To logiczne że tak będzie dobrze
for ($i=$id;$row[0]>=1;$i++) {


Mi to ni jak nie pasuje ale ok ja przedszkolak wy się znacie to podmieniam i ku nie mojemu zdziwieniu przy takim ustawieniu teraz dostaje.
"Request Timeout

This request takes too long to process, it is timed out by the server. If it should not be timed out, please contact administrator of this web site to increase 'Connection Timeout'."
Hosting mam płatny wiec to żadna jego wina tym bardziej ze sprawdzam ciągle tą pętle na przykładzie kiedy ma jedynie 2 razy podnieść wartość $i więc coś tu nie tak smile.gif

ps Pozatym nie bardzo rozumiem dla czego podajesz mi taki kod skoro ja chcę z wartosci $row[0] = 1 poprzez wykorzystanie pętli przejść na $row[0] = 0
nospor
Bo warunek w pętli jest ok, tylko kod w pętli masz teraz nie ok tongue.gif

Masz tak:
$eee = "SELECT COUNT(*) FROM url WHERE id='$id' ";
skoro to $i się zmienia więc powinno być:
$eee = "SELECT COUNT(*) FROM url WHERE id='$i' ";
bubusek
No nie wierze że mi to działa thumbsupsmileyanim.gif

Ślicznie dziękuje za pomoc

I love forum.php.pl Lkingsmiley.png
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.