Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 02.08.09 Prihlásený: 23.03.22 Príspevky: 305 Témy: 83 | 83 Bydlisko: Liptovský H... |
Ahojte. Nehľadám riešenie, chcem ho ponúknuť. Trápil som sa dlhšie s tým, ako zistiť, či sa v databáze vôbec vyskytuje záznam, ktorý vyžaduje príkaz SELECT. Napríkald ja som potreboval vypísať dáta z databázy (len určené), ak sa v databáze nachádzajú a ak nie, tak zobraziť políčko HTML formulára na vloženie záznamu. Existenciu vyžiadaného záznamu som skúšal zistiť viacerými trochu blbými spôsobmi a pred chvíľou som došiel na účinné a elegantné riešenie:
Najprv rozbalíme pole obsahujúce dáta:
Kód: $i = 0; while ($riadok = mysql_fetch_array($vysledky)) { extract($riadok); $i = $i + 1; }
Premenná $vysledky obsahuje príkaz mysql_query. V tomto prípade je dôležitý riadok Kód: $i = $i + 1;
Premenná zvyšuje svoju hodnotu po každom priechode cyklom, ak sa cysklus úspešne nevykonal, premenná $i ostáva s nulou. Na základe toho potom môžme pomocou vetvenia (podmienka if) určiť akciu ak sa záznam našiel ($i != 0 alebo $i > 0), alebo ak sa nenašiel ($i == 0 alebo i <= 0).
Celkom bonus je to, že hodnota premmen $i ešte určuje, koľko krát cyklus prebehol, to ynamená, koľko záznamov sa našlo v databáze, čo sa tiež dá využiť.
UPOZORNENIE: premenná $i musí byť deklarovaná a inicializovaná mimom cyklu.
_________________ Keď niekoho baví snowboard, povie sa, že je snowboardista. Keď niekoho bavia autá, povie sa mu, že je motorista. Keď niekoho baví tvorenie hudby, povie sa mu, že je hudobník. Keď niekoho baví programovanie a IT, povie sa mu, že je závislák. |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Nie je jednoduchšie použiť COUNT?
|
|
Registrovaný: 02.08.09 Prihlásený: 23.03.22 Príspevky: 305 Témy: 83 | 83 Bydlisko: Liptovský H... |
Možno, ale ja rád používam postupy, v ktorých presne vidím, čo robí čo. Rád si veci rozpitvem, dáva mi to pocit vyššej kontroly.
_________________ Keď niekoho baví snowboard, povie sa, že je snowboardista. Keď niekoho bavia autá, povie sa mu, že je motorista. Keď niekoho baví tvorenie hudby, povie sa mu, že je hudobník. Keď niekoho baví programovanie a IT, povie sa mu, že je závislák. |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Lenže načítať napr. 10000 riadkov z tabuľky, aby si zistil to, čo ti môže databáza povedať aj sama nemusí byť zrovna optimálne.
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | 96 |
programmer píše: Možno, ale ja rád používam postupy, v ktorých presne vidím, čo robí čo. Rád si veci rozpitvem, dáva mi to pocit vyššej kontroly.
Ak nevidíš na prvý pohľad, čo robí SELECT COUNT, tak elegantné riešenia len tak ľahko nevymyslíš.
Ak chceš používať postupy, v ktorých presne vidíš, čo robí čo, nauč sa OOP, najlepšie MVC. V začiatkoch som tiež takéto optimálne riešenia vymýšlal a teraz keď vidím svoj starý kód, smejem sa, niekedy až nadávam, že aký debil to písal a potom pozerám... ou, veď to som bol ja.
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 02.08.09 Prihlásený: 23.03.22 Príspevky: 305 Témy: 83 | 83 Bydlisko: Liptovský H... |
No dobre, to som sa zabil. Som si myslel, že som prišiel na niečo užitočné. Stáva sa. Tak ale keď chcem použiť COUNT(), tak to skúsim spôsobom, ako vždy, keď ťahám z databázy, napr:
Kód: $pocet = SELECT COUNT(nazov_stlpca) FROM nazov_tabulky WHERE podmienka_vyberu; Odošlem to Kód: $vysledok = mysql_query($pocet) or die(mysql_error()); Ale ako si mám nechať vypísať hodnotu premennej, v ktorej by bolo číslo s počtom nájdených záznamov? Som skúšal Kód: while ($riadok = mysql_fetch_array($vysledok)) { extract ($riadok); echo $neviem_aku_premennu_zadat; }
Ale problém som mal, že mi vyhodilo chybu o nedefinovanej premennej, keď som skúšal zobraziť počet nájdených riadkov. Som už z toho na prášky. Aj nejakými inými funkciami namiesto extract som skúšal dostať sa k svojmu číslu, ale nepodarilo sa mi to.
Skrátene, neviem, ským spôsobom sa mám dostať k vrátenej hodnote funkciou COUNT().
_________________ Keď niekoho baví snowboard, povie sa, že je snowboardista. Keď niekoho bavia autá, povie sa mu, že je motorista. Keď niekoho baví tvorenie hudby, povie sa mu, že je hudobník. Keď niekoho baví programovanie a IT, povie sa mu, že je závislák. |
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
$nazov_stlpca co je v count a do sql by som pridal LIMIT 1
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
To extract ti tam vobec netreba. Daj si print_r($riadok) a uvidis, kde to bude ulozene. Myslim, ze tento pocet by si mal najst aj bez mysql_fetch_array:
Kód: echo mysql_result($vysledok, 0, 0);
|
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 | 233 Bydlisko: Nové Zámky |
Mna prekvapilo hlavne toto:
Kód: $i = $i + 1;
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 02.08.09 Prihlásený: 23.03.22 Príspevky: 305 Témy: 83 | 83 Bydlisko: Liptovský H... |
Ďuri, výborne, funguje mi to Vďaka, pomohol si mi. Díky aj Vám ostatným.
To som dopadol, chcel som ponúknuť pomoc a nakoniec som ju sám najviac potreboval.
_________________ Keď niekoho baví snowboard, povie sa, že je snowboardista. Keď niekoho bavia autá, povie sa mu, že je motorista. Keď niekoho baví tvorenie hudby, povie sa mu, že je hudobník. Keď niekoho baví programovanie a IT, povie sa mu, že je závislák. |
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | 96 |
Ešte si pichnem Kód: ... or die(mysql_error()); toto nepoužívaj. Užívateľ nemá čo vidieť systémové chyby. Skús to inak. trigger_error() je fajn.
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 5 | 1073 | 06.05.2010 7:27 coldak | | v Databázy | 10 | 658 | 15.01.2015 11:02 JanoF | | v PHP, ASP | 3 | 472 | 20.04.2012 19:28 stenley | | v Databázy | 8 | 1761 | 11.01.2007 21:30 p360t | | v Databázy | 6 | 499 | 09.02.2013 18:03 weroro | | v Grafické programy | 6 | 976 | 24.07.2009 16:38 jozef.rusnak | | v Domény | 5 | 1259 | 03.03.2008 12:06 mage | | v Elektronika | 3 | 721 | 08.08.2012 19:47 vesimir | | v Webhosting a servery | 6 | 3193 | 18.05.2008 16:41 Blackshadow | | v HTML, XHTML, XML, CSS | 4 | 605 | 09.07.2011 11:57 devil669 | | v Databázy | 1 | 1772 | 06.02.2019 21:04 BX | | v Intel čipové sady | 2 | 5066 | 02.12.2007 12:05 fuco | | v JavaScript, VBScript, Ajax | 2 | 530 | 02.08.2011 7:15 camo | | v Ostatné | 2 | 2941 | 15.12.2006 14:18 majso | | v Audio programy | 5 | 1186 | 14.06.2010 19:57 br4n0 | | v Ovládače | 9 | 1149 | 04.05.2010 0:12 prandof |
|