![]() |
if + pętla while = kiepski wynik - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych) +--- Wątek: if + pętla while = kiepski wynik (/thread-if-petla-while-kiepski-wynik) Strony:
1
2
|
if + pętla while = kiepski wynik - harvester2001 - 29-08-2013 Witam Mam problem i nie wiem jak sobie z nim poradzić, dlatego proszę o pomoc. BAZA MySQL Kod: id day month year who $who = zalogowany user (np. roman) Robię kalendarz z wyjazdami. Jeśli w jednym dniu jest więcej niż jeden wyjazd to user może się zapisać tylko na jeden z nich. Wszystko mi się udało zrobić tylko stanąłem na ostatnim ifie. Kod wyświetla użytkowników zapisanych na wyjazd w tym samym dniu. Jeśli sprawdzi że user jest już zapisany na tej dacie to wyświetli komunikat "jesteś zapisany już na tym dniu" jeśli okaże się że user nie jest zapisany na wyjazd na tej konkretnej dacie to go zapisze. Kod PHP: $result = mysql_query("SELECT * FROM calendar WHERE event_d = $d AND event_m = $m AND event_y = $y") or die(); tyle że teraz wynik jest taki: Kod: , admin pomocy ![]() RE: if + pętla while = kiepski wynik - Engine - 29-08-2013 może coś tak: Kod: $user = $who.','; lub Kod: $user = $who; RE: if + pętla while = kiepski wynik - harvester2001 - 29-08-2013 Niestety nie zadziałało. Potrzebuje uzyskać taki wynik : Kod: , admin lub Kod: , admin RE: if + pętla while = kiepski wynik - msx83 - 29-08-2013 Hej, Jeżeli $who ma wartość "admin" to wszystko działa dobrze. W pierwszym wierszu bazy danych, masz ", admin" więc preg_match zwraca TRUE, więc otrzymujesz: Cytat:, adminNatomiast w drugim wierszu nie ma "admin" więc zwraca FALSE i dlatego wynik jest taki: Cytat:, zuza, romanSprawdź czy aby na pewno $who ma wartość roman? Kod PHP: print_r($who); RE: if + pętla while = kiepski wynik - Engine - 29-08-2013 jeśli: $who = np. roman to zmień na: explode(', ' $row['event_who']); RE: if + pętla while = kiepski wynik - harvester2001 - 29-08-2013 Panowie, sprawdzanie czy user jest w eventach działa. Sprawdzanie działa w pętli bo nie wiem jak inaczej wyświetlić i sprawdzić eventy o tych samych datach. Dzięki pętli rozsypuje mi się końcowe założenie. Kod PHP: while($row=mysql_fetch_assoc($result)){ Mianowicie : 1) $who jest niezapisany na tym dniu więc do zapisuję na wyjazd. 2) $who jest zapisany na tym dniu więc mu nie pozwolę jechać. I tyle dla mnie skutkiem ubocznym jest to że się pojawia to: Cytat:, zuza, roman RE: if + pętla while = kiepski wynik - msx83 - 29-08-2013 Jeżeli dobrze zrozumiałem, to problem tkwi w tym, że pobierasz dane z np. "day 29" i wszystko jest ok, ale dostajesz też dane z "day 30", co daje ten efekt uboczny, tak? RE: if + pętla while = kiepski wynik - harvester2001 - 29-08-2013 (29-08-2013, 18:45)msx83 napisał(a): Jeżeli dobrze zrozumiałem, to problem tkwi w tym, że pobierasz dane z np. "day 29" i wszystko jest ok, ale dostajesz też dane z "day 30", co daje ten efekt uboczny, tak? Tak bo jeśli w day 29 jest $who to mi go nie zapisze, ale dochodzą dane z 30 i tam nie ma $who i wtedy go zapisuje. RE: if + pętla while = kiepski wynik - msx83 - 29-08-2013 (29-08-2013, 18:49)harvester2001 napisał(a):(29-08-2013, 18:45)msx83 napisał(a): Jeżeli dobrze zrozumiałem, to problem tkwi w tym, że pobierasz dane z np. "day 29" i wszystko jest ok, ale dostajesz też dane z "day 30", co daje ten efekt uboczny, tak? Tak więc problem leży chyba w zapytaniu SQL. Sprawdź przed pętla za pomocą prin_r() co zwraca Ci zapytanie, bo teoretycznie powinno zwrócić tylko jeden wiersz, chyba że, masz dwa wyjazdy jednego dnia. Ewentualnie zastosuj na końcu zapytania Kod PHP: LIMIT 0 , 1 RE: if + pętla while = kiepski wynik - harvester2001 - 29-08-2013 W tym sęk że w tym przypadku mam dwa wyjazdy tego samego dnia i musi sprawdzić userów z dwóch wyjazdów zanim dopisze usera $who lub mu zabroni. |