Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
PHP

Pętla az do spełnienia warunkujak to zrobic?

php

  • Zamknięty Temat jest zamknięty
30 odpowiedzi w tym temacie

#1 Scripting

    Pomocny

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 29.02.2012 17:41

Mam taki kod:

<table cellspacing="0" width="100%" class="mon">
 <tr><td width="30%">Numer: </td>
  <td>
<?
$db_host = 'localhost'; //adres bazy danych
$db_user = 'root'; // użytkownik bazy danych
$db_password = 'xxx'; // hasło użytkownika bazy danych
$db_name = 'counter'; // nazwa bazy danych
mysql_connect($db_host, $db_user, $db_password);
@mysql_select_db($db_name);
$nr = rand(1, 9);
$sprawdz = mysql_query('SELECT * FROM tablica WHERE id = "'.$nr.'" ORDER BY id DESC');
if(mysql_num_rows($sprawdz) == 0)    {
}
else
{
print "<font color='black'><b>Numer $nr jest juz w bazie danych!</b></font>";
exit;
}
print '' . $nr . ' <input type="hidden" name="nr" value="' . $nr . '">' . "\n";
?>

Tworze pewien skrypt i potrzebuje losowania numeru, dziala bez zarzutu i gdy nr wylosowany znajduje sie w bazie danych pisze "Numer x jest juz w bazie danych", ale chce zrobic, zeby zamiast tego napisu, losowalo dalej, az do skutku wylosowania numeru ktorego niema w bazie danych :P jak to zrobic? Tzn wiem ze petle trzeba dodac, ale niewiem jak, probowalem 1h i mi nie wychodzilo, zrobi mi ktos to? ;/
  • +
  • -
  • 0

#2 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 29.02.2012 19:10

Z całym szacunkiem dla Ciebie, ale czy aby na pewno dobrze się czujesz? Co będzie jak w bazie znajdzie się 1mln warunków? Dobijesz bazę samymi zapytaniami o pusty identyfikator.

Lepiej napisz co chcesz dokładnie osiągnąć.
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#3 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 29.02.2012 19:46

@up ma rację, ale tak na upartego można użyć pętli while.
w pętli losować ciągle nową liczbę, i sprawdzać czy istnieje rekord w bazie.
No a wynik sprawdzenia bazy przechowywać w zmiennej.
  • +
  • -
  • 0
Zapraszam na http://zapalka.net.pl

#4 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 01.03.2012 08:39

No nie wiem, dzięki za podpowiedzi, mozliwe ze macie racje. Chce zrobic losowanie numerku od 1 do 9 w tabelce Nr :D Jezeli numerek istnieje to losuje az wylosuje taki, ktorego niema w bazie. Niemam innego pomyslu na zrobienie, niz ta petla, ktora bedzie losowac az spelni warunek, ale licze na wasze podpowiedzi
  • +
  • -
  • 0

#5 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 01.03.2012 13:05

A może zrobisz funkcję, w której to zrobisz w warunku i po prostu jeżeli istnieje rekord to wywołasz tą funkcję w samej sobie ?
  • +
  • -
  • 0

#6 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 01.03.2012 15:28

Niestety nie znam sie na tym, tak bardzo :P No chodzi mi o:

Gdy wchodzimy na strone jest tabelka, a w niej jest losowany numer, jezeli numer juz istnieje chce zeby wylosowalo szybko kolejny, bez potrzeby odswiezania strony.
  • +
  • -
  • 0

#7 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 01.03.2012 15:41

wywołasz tą funkcję w samej sobie


ehh rekurencja jest jeszcze gorszym pomyslem od iteracji xD szczególnie ze mogłby sobie zepsuc skrypt nie wiedząc czemu
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#8 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 01.03.2012 16:06

chodzi o to zeby losowalo taki numerek, ktorego niema w bazie danych ;) To co proponujecie?

Użytkownik Scripting edytował ten post 01.03.2012 16:06

  • +
  • -
  • 0

#9 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 01.03.2012 17:26

Pobrać wszystkie numery do tablicy i względem tej tablicy losować - nadal rozwiązanie bez sensu, bo co będzie przy tablicy z 1mln elementów? Choć to lepsze wyjście niż dobicie mySQL.
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#10 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 01.03.2012 17:45

Hmm, no nie mam pojecia :P No ale macie racje, ale chyba innego sposobu niema ;/ chyba, zeby losowalo kolejny numer z bazy danych ;)
$sprawdz = mysql_query('SELECT * FROM tablica WHERE id = "'.$nr.'" ORDER BY id DESC');


sprawdzalo jaki jest ostatni numer w bazie danych w "tablica" i przy polu id wyskakiwal by kolejny numer poprostu ;d

Użytkownik Scripting edytował ten post 01.03.2012 17:47

  • +
  • -
  • 0

#11 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 02.03.2012 16:51

to co pomozecie mi z tym?
bo to bedzie losowalo tak:
$nr = rand(111111, 999999);

na razie malo rekordow jest w bazie, wiec rzadko bedzie sie zdarzac ze jest wylosowany wlasnie chyba ;P

Użytkownik Scripting edytował ten post 02.03.2012 16:51

  • +
  • -
  • 0

#12 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 02.03.2012 17:06

Tak się zastanawiam po co jest Ci potrzebne to losowanie? Do czego wykorzystujesz kolumnę "id"?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#13 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 02.03.2012 17:15

Pobrać wszystkie numery do tablicy i względem tej tablicy losować - nadal rozwiązanie bez sensu, bo co będzie przy tablicy z 1mln elementów? Choć to lepsze wyjście niż dobicie mySQL.


a najlepszym wyjsciem będzie
do{
1 - losowanie
2 - sprawdzenie czy wylosowany numer jest w tablicy tymczasowej z wylosowanymi numerkami
2.1 jesli tak to continue
2.2 jesli nie to dodanie go na koncu tablicy
}while(warunkiem zatrzymania pętli musi byc sprawdzenie czy ilosc elementów tablicy tymczasowej jest = ilosci liczb ktore chcielismy wylosowac -1);

w php'ie masz o tyle dobrze ze nie musisz definiowac rozmiaru tablicy na wejsciu potem mozesz oczywiscie sprawdzic czy identyfikatory z tablicy tymczasowej są w bazie czyli wykonanie jednego zapytania no i jesli któregoś nie ma to dolosować zamiast niego inny na zasadzie
random(0,x-1) or  random (x+1,max)
i potem wybrać któryś z recordów
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#14 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 02.03.2012 18:51

hehe przedstawiles to w sposob zrozumialy tylko dla osob ktore naprawdę sie na tym znaja, a ja licze na jakies rozwiazanie "gotowca" od was. Nie myslcie ze czekam na gotowe i nic nie robie, proboje, czytam ale nie wychodzi mi w zaden sposob.

@Po co mi to? No to juz pozostanie tajemnica, robie pewien projekt ;) do ktorego potrzebuje losowania identyfikatora ;)
sebul (02.03.2012 19:56):
Skoro robisz pewien projekt i to taka tajemnica, że nie możesz nawet napisać do czego potrzebne jest te losowanie, to chyba powinieneś potrafić sam je napisać ^^

  • +
  • -
  • 0

#15 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 02.03.2012 19:13

@Po co mi to? No to juz pozostanie tajemnica, robie pewien projekt ;) do ktorego potrzebuje losowania identyfikatora ;)

Sory, że tak pytam, ale nie rozumiem po co jest potrzebne Ci te losowanie. Masz kolumnę "id", z założenia ona jest niepowtarzalna i ciągle rośnie razem z wpisaniem nowego rekordu do tabeli, więc może jednak napisz, co chcesz konkretnie osiągnąć tym losowaniem, bo skoro ma wylosować numer id, którego nie ma w bazie, to chyba jednak lepiej jest brać po prostu kolejny numer po ostatnim rekordzie.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#16 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 02.03.2012 19:21

dalbym ci gotowy kod no ale pozwól ze

to juz pozostanie tajemnica


@Sebul a sprawdzales co sie dzieje jak masz 10 recordów o id 1-10 i usuniesz nr 5 ??
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#17 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 02.03.2012 19:42

@Sebul a sprawdzales co sie dzieje jak masz 10 recordów o id 1-10 i usuniesz nr 5 ??

Tak wiem, zostanie luka, ale jaki jest sens ją zapełniać? Gdyby autor napisał do czego mu potrzebne jest takie losowanie, to by wszystko wyjaśniło.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#18 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 02.03.2012 19:46

Niestety sposob pobierania kolejnego id odpada poprostu :P Numery musza byc "niepowtarzalne" - losowane ;d
  • +
  • -
  • 0

#19 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 03.03.2012 00:15

skoro nie umiesz zrealizować mojego algorytmu to nie bedziesz potrafil zrobic nic wiecej więc lepiej napisz ocb bo wątpie zebys sam to skonczyl
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#20 Scripting

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:67
  • Lokalizacja:Warszawa
Offline

Napisano 03.03.2012 06:30

biega o to ze potrzebuje tylko tego :P wszystko mam zrobione tylko te losowanie zostalo :)
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: php

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych