| Autor | Správa |
Flety
 Užívateľ
 Založený: 26.11.2006 Príspevky: 4109 Bydlisko: HE(Humenne) - KE Vek: 18
 | Zaslal: Ut 11.12.07 19: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  |
_________________ Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5K CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 5-5-5-12 GPU: Saphire ATi Radeon HD5850 Toxic HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: Fortron Epsilon 700W LCD: LG L226W 1680x1050 2ms | |
       |
 |
audiotrack
 Zablokovaný užívateľ
 Založený: 18.11.2006 Príspevky: 680
 | Zaslal: Ut 11.12.07 19:57 |   |
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 |
| |
  |
 |
Flety
 Užívateľ
 Založený: 26.11.2006 Príspevky: 4109 Bydlisko: HE(Humenne) - KE Vek: 18
 | Zaslal: Ut 11.12.07 20: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? |
_________________ Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5K CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 5-5-5-12 GPU: Saphire ATi Radeon HD5850 Toxic HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: Fortron Epsilon 700W LCD: LG L226W 1680x1050 2ms | |
       |
 |
audiotrack
 Zablokovaný užívateľ
 Založený: 18.11.2006 Príspevky: 680
 | Zaslal: Ut 11.12.07 20:08 |   |
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" ); |
|
| |
  |
 |
Flety
 Užívateľ
 Založený: 26.11.2006 Príspevky: 4109 Bydlisko: HE(Humenne) - KE Vek: 18
 | Zaslal: Ut 11.12.07 20: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 |
_________________ Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5K CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 5-5-5-12 GPU: Saphire ATi Radeon HD5850 Toxic HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: Fortron Epsilon 700W LCD: LG L226W 1680x1050 2ms | |
       |
 |
audiotrack
 Zablokovaný užívateľ
 Založený: 18.11.2006 Príspevky: 680
 | Zaslal: Ut 11.12.07 20:21 |   |
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 |
| |
  |
 |
Flety
 Užívateľ
 Založený: 26.11.2006 Príspevky: 4109 Bydlisko: HE(Humenne) - KE Vek: 18
 | Zaslal: Ut 11.12.07 20: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 |
_________________ Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5K CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 5-5-5-12 GPU: Saphire ATi Radeon HD5850 Toxic HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: Fortron Epsilon 700W LCD: LG L226W 1680x1050 2ms | |
       |
 |
audiotrack
 Zablokovaný užívateľ
 Založený: 18.11.2006 Príspevky: 680
 | Zaslal: Ut 11.12.07 20:37 |   |
| Drako napísal: | 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  |
| |
  |
 |
suchy
 Čestný člen
 Založený: 17.10.2006 Príspevky: 1770
 | Zaslal: Ut 11.12.07 20: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. | |
     |
 |
Flety
 Užívateľ
 Založený: 26.11.2006 Príspevky: 4109 Bydlisko: HE(Humenne) - KE Vek: 18
 | Zaslal: Ut 11.12.07 20:58 |   |
ok thx audotrack tu jednotku na konci som si nevsimol mas u mna a suchy ako to bude fungovat??  |
_________________ Desktop: CASE: Cooler Master Centurion 532 MB: ASUS P5K CPU: Intel Core 2 Quad Q6600@2,4GHz FSB 1066MHz RAM: A-Data Vitesta 2×2GB 800MHz Cl 5-5-5-12 GPU: Saphire ATi Radeon HD5850 Toxic HDD: Seagate Barracuda 500GB 7200rpm ODD1: LG DVD+/-RW + LS(PATA) ODD2:LG DVD+/-RW(SATA) PSU: Fortron Epsilon 700W LCD: LG L226W 1680x1050 2ms | |
       |
 |
|