Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Proste zapytanie z przypisaniem wyników
Forum PHP.pl > Forum > Przedszkole
pararam
Witam, mam od paru minut problem z dość prostym skryptem, w którym użytkownik może nabyć maksymalnie trzy numerowane kolejno losy i w każdej chwili może zobaczyć jakie numery mają jego szanse na myljon. I tak:

  1. <?php
  2. global $userrow, $numqueries;            //pobranie zapytania z tabeli użytkownika
  3. $ilelosow = $userrow["lottery"];                  // pod userrow[lottery] jest liczba kupionych przez użytkownika losów
  4. $lotteryquery = doquery("SELECT * FROM {{table}}", "lottery");         // zapytanie do tabeli zawierającej kolumny ID i OWNER, odpowiednio numer losu i ID jego właściciela
  5. $lotteryrow = mysql_fetch_array($lotteryquery);
  6. $los1=0; $los2=0; $los3=0;           // wyzerowanie wartości losów
  7. while ($lotteryrow = mysql_fetch_array($lotteryquery)) {        // wejście w pętlę
  8. if ( $lotteryrow["owner"] == $userrow["id"] ) {            // jeśli użytkownik jest właścicielem losu...
  9.        if ($los1 == 0) {$los1 = $lotteryrow["id"];}            // i los1 jest zerem to przypisz numer losu do los1
  10.        elseif ($los2 == 0) {$los2 = $lotteryrow["id"];}       // a jeśli los2 jest zerem to przypisz do los2
  11.        elseif ($los3 == 0) {$los3 = $lotteryrow["id"];}       // i analogicznie los3
  12.    }
  13. }             // wyjście z pętli
  14. ?>



Jako sprawdzajkę używam $los1 - $los2 - $los3 i dla użytkownika, który kupił pierwsze dwa losy (ID 1 i 2) otrzymuję 2 - 0 - 0, po kupnie trzeciego losu (o ID 3) skrypt zwraca 2 - 3 - 0, czyli jakimś cudem >pomija< pierwszy rekord. Byłbym wdzięczny za pomoc, mi już się pomysły skończyły...
bigZbig
usuń wiersz 6 czyli
Kod
$lotteryrow = mysql_fetch_array($lotteryquery);
pararam
Działa, wielkie dzięki... Nie wiem nawet dlaczego, identyczny skrypt z inną tabelą działał w ten sposób a ten nie chciał... Byłbym wdzięczny za ewentualne wyjaśnienie na przyszłość
melkorm
Cytat
Byłbym wdzięczny za ewentualne wyjaśnienie na przyszłość


hmm dziwne że działał z inną tabelą - lub miałeś więcej wierszy i nie zauważałeś błędu ponieważ ten kod który kolega wyżej poradził wyciąć powodował to iż pierwszy wiersz z wyniku "uciekał" tzn.: przypisując go do zmiennej "$lotteryrow" mysql_fetch_array przeskoczyl wskaźnikiem na 2 wiersz i gdy skrypt dochodzi do pętli 1 wiersz znajdujący się w $lotteryrow nadpisujesz już drugim wierszem na który obecnie wskazuje mysql_fetch_array smile.gif

Nie jest to jakieś fachowe wytłumaczenie ale chyba zrozumiałem - mam nadzieje smile.gif
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.