Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Problem z pętlą
bubusek
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


Stworzyłem sobie o to pętle która mi nie działa ( widać źle ją zrobiłem (IMG:style_emoticons/default/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ć ?
Go to the top of the page
+Quote Post
Daiquiri
post
Post #2





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Co konkretnie nie działa? Proponuję też usunąć wszelkie @, które maskują potencjalne błędy.
Go to the top of the page
+Quote Post
bubusek
post
Post #3





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


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
Go to the top of the page
+Quote Post
Daiquiri
post
Post #4





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




@ - 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]; )
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
bubusek
post
Post #6





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


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

Ten post edytował bubusek 20.05.2011, 09:17:48
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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++) {
Go to the top of the page
+Quote Post
bubusek
post
Post #8





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


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 (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo warunek w pętli jest ok, tylko kod w pętli masz teraz nie ok (IMG:style_emoticons/default/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' ";
Go to the top of the page
+Quote Post
bubusek
post
Post #10





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 2.10.2007

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


No nie wierze że mi to działa (IMG:style_emoticons/default/thumbsupsmileyanim.gif)

Ślicznie dziękuje za pomoc

I love forum.php.pl (IMG:style_emoticons/default/Lkingsmiley.png)
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 - 03:35