| | |
| Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Autor | Správa |
---|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 11.12.2007 18:50 | |
|
cafte, ako sa da urobit nahodny vyber z db mam tabulku napr:
ID | iny_stlpec
a chcel by som vyberat z db nahodne podľa toho id myslel som ze by som urobil ze by som si zistil najprv kolko je id(ake je najvacsie) a potom by som dal napr ze rand(1,$max_id) alebo tak nejako a myslim ze sa to da aj nejako lahsie.
a inak pri tom id mi to uklada tak, ze ked vymazem napr. stvrty zaznam tak mi neprida id 4 k novemu zaznamu ale id 5 thx
a tiez by som chcel vediet ze ako sa vybera timestamp z db, ako sa pouziva...
cize moje otazky:
1; ako urobit nahodny vyber z db
2; ak urobit aby mi to stale ukladalo podla posledneho id
3; ako pouzivat timestamp
thx vsetkym
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
samozrejme, najprv si naštuduj relačné databázy a čo je primárny kľúč a pochopíš prečo je tomu tak.. nemôže dať id aké už bolo pridelené. A preto nie je ani dobré sa pozerať na maximálne id, pretože ak nájde najväčšie id rovné 500 a funkcia rand mi vygeneruje teda číslo z intervalu <1,500> tak mi môže vrátiť id ktoré neexistuje (napríklad tvoju štvorku). Preto si pozri počet riadkov, a z toho generuj náhodné číslo. Potom vyberieš ten riadok pomocou Limit
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 11.12.2007 19:05 | |
|
no ved a ten pocet riadkov v tomto pripade bude 500 cize tam moze vybrat aj tu styrku cize co mam spravit aby mi to priradovalo tak ze ked nieco vymazem tak mi to da rovnake id ako malo to predtym?
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
vybere 4 ale nebude to brať ako id=4 ale ako riadok číslo 4 a to je rozdiel.
Kód: $vysledok=mysql_query( "Select * from tabulka limit rand(1,$max_id),1" );
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 11.12.2007 19:11 | |
|
aha to ma nenapadlo ale takto som to myslel aj na zaciatku, no ked neni iny sposob tak neva a inac keby som chcel nahodne vyberat podla toho tak by bol trochu iny script ale ok , a ten TIMESTAMP?
//Edit:
ale ved keby som mal napr tych 500id a z toho 100by bolo vymazane ze napr mal by som 100-150 a potom 250-500 tak by bolo riadkov 400 a mohlo by vybrat aj 200 a take id nieje cize by nic nevybralo
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
pre timestamp si musíš zvoliť ako sa má výstup naformátovať, napríklad:
Kód: select date_format(now(),'%d-%m-%Y');
edit// k tvojmu editu: ešte raz si prečítaj čo som písal. Nevybere id rovné 100 ale riadok číslo 100 na ktorom môže byť id hocijaké. Mňa pri náhodnom výbere id vôbec netrápi, trápi má koľko mám riadkov, a jeden z nich si vezmem nech už má id aké chce
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 11.12.2007 19:32 | |
|
ale z toho kodu neviem nijak raz vyjst, pls napis mi viac ako to mam pouzit kde to mam dat a tak, thx
a k tomu nahodnemu: no ved ale ked mi to vebere zo 400 riadkov riadok 200 tak tam nebude taky riadok, cize nic nezobrazi...dam ze select ... where id=radn(1,$max_id) a ked ten $max_id bude tych 200 a id 200 tam nebude tak mi nic nevyberie
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
Drako píše: :( ale z toho kodu neviem nijak raz vyjst, pls napis mi viac ako to mam pouzit kde to mam dat a tak, thx a k tomu nahodnemu: no ved ale ked mi to vebere zo 400 riadkov riadok 200 tak tam nebude taky riadok, cize nic nezobrazi...dam ze select ... where id=radn(1,$max_id) a ked ten $max_id bude tych 200 a id 200 tam nebude tak mi nic nevyberie
ja som napísal toto: Kód: $vysledok=mysql_query( "Select * from tabulka limit rand(1,$max_id),1" ); vidíš mi tam niekde id=dačo? nie, prečo? lebo to tam nemá byť. Tak si už nechaj poradiť keď očividne do toho vidím viac ako ty, tým ťa nechcem urážať ale keď ti to sem už 3.krát musím písať tak už vážne pochybujem o tvojich shopnostiach. Ja nevyberam podľa id, ja vyberám náhodný riadok. Ešte raz polopatisticky:
Select * from tabulka = vyber celý riadok z tabuľky
limit rand(1,$max_id),1 = začni náhodným riadkom a zober jeden riadok
žiadna podmienka, žiadne id, nič.. omg
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 11.12.2007 19:38 | |
|
daj select nieco from tabulka order by rand() limit 1;
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 11.12.2007 19:58 | |
|
ok thx audotrack tu jednotku na konci som si nevsimol mas u mna a suchy ako to bude fungovat??
|
|
| Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|