Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] rand z mysql maly problemik
Forum PHP.pl > Forum > Przedszkole
gitara
  1. $zmienna = rand(200,500);
  2. $zapyt = "SELECT `ile` FROM `bed` WHERE `ile`='$zmienna'";
  3. $zapy = mysql_query($zapyt);
  4. $wynik = mysql_fetch_row($zapy);

pytanie jest takie:
Jesli $zmienna bedzie w tabeli `bed` to chcę aby rand wykonal sie ponownie, jesli znow bedzie w tabeli to znow ma wykonac bo nie moze sie powtorzyc liczba, pytanie jakto zrobic?
jareeny
Napisz po ludzku bo chyba nikt Cie nie zrozumiał...
gitara
Ale co tu do tlumaczenia
jesli losowy rand znajduje sie w tabeli to ma zrobic return
MateuszS
Cytat
jesli znow bedzie w tabeli to znow ma wykonac


a teraz

Cytat
jesli losowy rand znajduje sie w tabeli to ma zrobic return


Więc jest tu dużo do tłumaczenia.
Kszyhuu
Cytat(gitara @ 23.03.2010, 21:29:28 ) *
pytanie jest takie:
Jesli $zmienna bedzie w tabeli `bed` to chcę aby rand wykonal sie ponownie, jesli znow bedzie w tabeli to znow ma wykonac bo nie moze sie powtorzyc liczba, pytanie jakto zrobic?

Nie wiem, czy dobrze to rozumiem, bo dość dziwnie jest to napisane, ale jeżeli tak, to będziesz potrzebował pętli.
wookieb
prosta podpowiedz...
  1. do
  2. {
  3.  
  4. $rand = rand(50,200);
  5.  
  6. }
  7. while(funkcja_sprawdzajaca($rand));


A teraz napisz sprytna funkcje sprawdzającą.
gitara
Cytat(wookieb @ 23.03.2010, 22:03:04 ) *
prosta podpowiedz...
  1. do
  2. {
  3.  
  4. $rand = rand(50,200);
  5.  
  6. }
  7. while(funkcja_sprawdzajaca($rand));


A teraz napisz sprytna funkcje sprawdzającą.

z petla nie ma problemu, ze stala jest problem bo nie mam o nich pojecia
wookieb
Jaką stałą? Wystarczy napisać prostą funkcję. Jak nie kumasz jak to zrobić to co ty chcesz robić? Kopać rowy wokoło programistów? Napisałeś kod swojej w funkcji w pierwszym kodzie. Trudno to przepisać i dodać warunek?
gitara
Jeśli bym umiał to bym nie prosił o pomoc.
wookieb
No to nie um i nie próbuj a na pewno wiele się nauczysz. Masz kod, masz problem z jego rozumieniem to MANUAL. Nie kumasz, nie wiesz jak korzystać z manuala to do kopania rowów! Masz wszystko co potrzeba ale za bardzo śmierdzisz leniem i próbą żałosnego cwaniactwa, żeby cokolwiek więcej zrobić.

P.s. W obi jest promocja na łopaty, zaopatrz się szybko bo kolega z tematu obok wykupi wszystkie.
gitara
Cytat(wookieb @ 23.03.2010, 23:19:55 ) *
No to nie um i nie próbuj a na pewno wiele się nauczysz. Masz kod, masz problem z jego rozumieniem to MANUAL. Nie kumasz, nie wiesz jak korzystać z manuala to do kopania rowów! Masz wszystko co potrzeba ale za bardzo śmierdzisz leniem i próbą żałosnego cwaniactwa, żeby cokolwiek więcej zrobić.

P.s. W obi jest promocja na łopaty, zaopatrz się szybko bo kolega z tematu obok wykupi wszystkie.

Przestan pajacowac idioto i nie rob z siebie boga, nie chcesz pomoc to nie zagladaj do tego tematu. Nie jestem programista tylko czlowiekiem ktory lubi sobie poszperac i czasem cos uzytecznego zrobic.

Jesli ktos ma cos madrego do napisania to prosze a Ciebie blokuje.
thek
To zablokuj od razu połowę forum. Masz odpowiedzi, które wystarczy jedynie połączyć w całość. Jeśli takie zadanie Cię przerasta to programowanie czegokolwiek naprawdę nie jest dla Ciebie. Liczysz na gotowca? Możesz się nigdy nie doczekać. Wykaż się własną inicjatywą, bez czekania na łaskawców winksmiley.jpg
gitara
Ta funkcja poprostu mi nie daje takiego efektu jaki powinien być, znalazlem temat rownolegly http://forum.php.pl/index.php?showtopic=14...mp;#entry726986
ale nie czaje, widać ktoś chciał zrobić juz cos takiego jak Ja.
nospor
Cytat
Przestan pajacowac idioto
Idiotą to mozna tutaj nazwac kogos innego jakby się uprzec, ale napewno nie wookieba.Ale my się nie upieramy i idiotą póki co nikogo nazywać nie będziemy. Tak wiec jak ciebie nikt nie wyzywa to i ty nie wyzywaj.

no to po malutku:
napisz funkcję, która sprawdzi czy podana liczba znajduje sie w tableli:
  1. function isInTable($liczba){
  2. //a tu lecisz do tabeli, patrzysz czy jest . jak jest zwracasz true, jak nie ma zwracasz false
  3. }

a teraz w petli losujesz do czasu, az nie bedzie w tabeli:
  1. $zmienna = rand(200,500);
  2. while (isInTable($zmienna)){
  3. $zmienna = rand(200,500);
  4. }
  5. echo 'tej nie ma:'.$zmienna;
gitara
Dzięki za pomoc, co do wookie to nie tylko tutaj sie wymadrza bo w wiekszosci tematow.
Jeśli ktoś potrzebuje poniżej gotowy kod:
  1. function isInTable($liczba){
  2. $zapyt6 = "SELECT `cyfra` FROM `tabela` WHERE `cyfra`='$liczba'";
  3. $zapy6 = mysql_query($zapyt6);
  4. $wynik6 = mysql_fetch_row($zapy6);
  5. if($wynik6[0] == $liczba) return true;
  6. elseif($wynik6[0] != $liczba) return false;
  7. }
  8. $zmienna = rand(5,10);
  9. echo "wylosowana: $zmienna<br><br>";
  10. while (isInTable($zmienna)){
  11. $zmienna = rand(5,10);
  12. }
  13. echo "tej nie ma:$zmienna<br><br>";
nospor
Cytat
to nie tylko tutaj sie wymadrza
Co nie zmienia faktu ze nadal nie robi to z niego idioty.

  1. if($wynik6[0] == $liczba) return true;
  2. elseif($wynik6[0] != $liczba) return false;

skoro cos nie jest $liczba znaczy ze nie jest:
  1.  
  2. if($wynik6[0] == $liczba) return true;
  3. else return false;

lub jeszcze krócej
  1. return $wynik6[0] == $liczba;
mortus
Twoje rozwiązanie niestety nie jest zbyt dobre. Dlaczego? Bo jeśli argumentem funkcji isInTable będzie liczba, której w tabeli bazy danych nie ma, to mysql_query zwróci Ci false, a w wierszach 4, 5 i 6 będą błędy lub ostrzeżenia. Poza tym dopóki nie wylosujesz liczby, której w tabeli nie ma, dopóty wykonujesz niepotrzebnie co najmniej pięć instrukcji (w tym wysyłasz zapytanie do bazy danych), a to na pewno optymalne nie jest. Chyba lepiej to zrobić inaczej
  1. $zapytanie = "SELECT `cyfra` FROM `tabela`";
  2. $wyniki = mysql_query($zapytanie);
  3. if(mysql_num_rows($wyniki) > 0) {
  4. while($wiersz = mysql_fetch_array($wyniki)) {
  5. $tablica[] = $wiersz['cyfra'];
  6. }
  7. }
  8. do {
  9. $zmienna = rand(5,10);
  10. echo "Wylosowana zmienna: $zmienna<br><br>";
  11. } while(in_array($zmienna, $tablica));
  12. echo "Tej nie ma: $zmienna<br><br>";
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.