![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie.
Dlaczego moja petla nie wykonuje zleconych zadań? Czy ktoś może mi pomóc ? Proszę o pomoc i podpowiedzi. Chcę wyciągnąć dane z tabeli koordy, i zapisać je do tabeli miasta, ale nie mogą się powtarzać właśnie w tabeli miasta i zablokowane. Więc najpierw sprawdzam czy wylosowanych rekordów nie ma w tabeli miasta, potem czy nie ma ich w tabeli zablokowane. I jeśli nie ma takich rekordów w tabeli miasta ani w tabeli zablokowane- to zapisuję te wylosowane rekordy do tabeli miasta. Gdzie robię błąd?
Ten post edytował miccom 5.10.2009, 20:40:31 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 32 Dołączył: 21.08.2008 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
A skrypt wychodzi w ogóle z pętli WHILE? Jest
i $wyjdz ciągle ma wartość TRUE więc pętla ciągle się wykonuje. Ten post edytował jasin 5.10.2009, 09:34:12 -------------------- ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
No ok. Ale jak to zrobić.
Czy jak nie zainicjuję wartości $wyjdz, to pętla się wykona? -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Czy jak nie zainicjuję wartości $wyjdz, to pętla się wykona? Nie.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
No ale to $wyjdz które wskazałeś dopiero ma zatrzymać wykonywanie pętli. Ale ona nawet nie zacznie działać. -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Może zamiast pętli while użyj do-while. Różnica między nimi jest taka, że do-while wykona się conajmniej raz, podczas gdy while może się nie wykonać ani razu.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Podstawy logiki i czytania manuala...
While wykonuje się dopoki ma w swoim "argumencie" wartość true. Wiec jak chcesz zatrzymac wykonywanie petli skoro CAŁY CZAS zmienna $wyjdz na wartosc true? Dlatego przeciez napisalem, żebys w tamtej linijce ustawił wartość na FALSE i po klopocie. Cytat Ale ona nawet nie zacznie działać. No jak nie? Przecież masz przed petal $wyjdz = true; Czy ja mówilem zebys to zmienial? Przetestuj a dopiero pisz posty. -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
No ale to $wyjdz które wskazałeś dopiero ma zatrzymać wykonywanie pętli. Ale ona nawet nie zacznie działać. od razu za: while($wyjdz) { daj echo ++$i."\r\n<br />"; pętla się wykonuje - nie wiem jaki masz dokładnie zamiar ale na pewno masz złą logikę wewnątrz pętli ![]() wyświetlaj sobie przez echo krokami zmienne tam gdzie są ok i tam gdzie się psuj ą żebyś znalazł błąd - tam gdzie niepotrzebne echo daj komentarz... -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
ok. Dałem tak jak mówiliście:
I otrzymuję coś takiego: Array ( ) Notice: Undefined variable: wynik in /losowanie.php on line 50 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /losowanie.php on line 50 Notice: Undefined variable: zapytanie in /losowanie.php on line 63 Notice: Undefined variable: zapytanie1 in /losowanie.php on line 64 Notice: Undefined variable: zapytanie2 in /losowanie.php on line 65 wyjdz= zapytanie1= zapytanie2= zapytanie3= wylosowałem koordx= , i koordy= Linia 47 to linia $rows3=mysql_fetch_array($wynik);, więc mniemam ze się w ogóle pętla nie wykonuje. Chcę wyświetlić wyniki dla zapytań- to nie mogę bo ich nie ma. Tak myślę. Ten post edytował miccom 5.10.2009, 14:16:48 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To sprawdź/przeczytaj jeszcze raz jak ci mówiłem. Ale lepiej byłoby gdybyś powiedział co ty robisz tymi zapytaniami. Co chcesz uzyskać, jakie są struktury tabel bo coś czuje, że jest dużo prawdopodobieństwo załątwienia wszystkiego jednym zapytaniem. Dobrze by było gdybyś dał jeszcze mała ilość przykładowych danych ( w formie zapytań INSERT)
Ten post edytował wookieb 5.10.2009, 14:23:21 -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
ok. Zmieniłem.
Ale ja i tak mówię: ten $wyjdz ma zatrzymać pętlę! Stąd zmieniam jej wartość na false, aby przestała się wykonywać, A na początku mam true, aby się zaczęła pętla iterować. Teraz po twojej zmianie mam pętlę nie kończącą się ![]()
I takich rekordów mam 240000 bo skrypt po 30sek jest wyłączany. Fatal error: Maximum execution time of 30 seconds exceeded in /home/bazawesel/domains/wichry-wojny.pl/public_html/strona/losowanie.php on line 39 Ten post edytował miccom 5.10.2009, 14:29:43 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
dopiero pisałeś, że pętla newet nie startuje ;p - nie czytasz ze zrozumieniem - pisałem, że logikę z tymi ifami masz pomieszaną a nie znam struktury bazy i założenia aplikacji (przy okazji masz 100% pewności że będzie tylko 1 wynik wyszukiwania w bazie??)
-------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
dopiero pisałeś, że pętla newet nie startuje ;p - nie czytasz ze zrozumieniem - pisałem, że logikę z tymi ifami masz pomieszaną a nie znam struktury bazy i założenia aplikacji (przy okazji masz 100% pewności że będzie tylko 1 wynik wyszukiwania w bazie??) losuję dwie liczby, pole i mapa. Wrzucam je do pętli, i jeśli takiego zestawu nie ma w tabeli (miasta) i 2 tabeli (zablokowane)- to wrzucam do tabeli (miasta) wylosowane rekordy. Ale jeśli będą już takie rekordy w 1 lub 2 tabeli- to losuję ponownie liczby pole i mapa( za pomoca rand())- i wykonuję ponownie tą pętlę sprawdzając powyższe warunki. Aż do skutku. Ale jakoś mi nie idzie ![]() Witam. Zmodyfikowałem pętelkę- i teraz jest ok.
Ten post edytował miccom 5.10.2009, 14:40:33 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:18 |