Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] rand z mysql maly problemik
gitara
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


  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?
Go to the top of the page
+Quote Post
jareeny
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 23
Dołączył: 2.10.2007
Skąd: Słupsk

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


Napisz po ludzku bo chyba nikt Cie nie zrozumiał...


--------------------
banan wszyscy.
Go to the top of the page
+Quote Post
gitara
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


Ale co tu do tlumaczenia
jesli losowy rand znajduje sie w tabeli to ma zrobic return
Go to the top of the page
+Quote Post
MateuszS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


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.


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
Kszyhuu
post
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 32
Dołączył: 24.08.2009

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


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





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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ą.


--------------------
Go to the top of the page
+Quote Post
gitara
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


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





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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?


--------------------
Go to the top of the page
+Quote Post
gitara
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


Jeśli bym umiał to bym nie prosił o pomoc.
Go to the top of the page
+Quote Post
wookieb
post
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post
gitara
post
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


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.
Go to the top of the page
+Quote Post
thek
post
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
gitara
post
Post #13





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




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;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gitara
post
Post #15





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.03.2010

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


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>";
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




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;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mortus
post
Post #17





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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>";
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:29