[ Príspevkov: 11 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0

Nie je jednoduchšie použiť COUNT?


Offline

Užívateľ
Užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

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. :)


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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!
Offline

Užívateľ
Užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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

Užívateľ
Užívateľ
Obrázok užívateľa

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


Offline

Čestný člen
Čestný člen
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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);


Offline

Užívateľ
Užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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;

:D


_________________
"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ď
Offline

Užívateľ
Užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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 :hilarity: :applaud: 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.
Offline

Skúsený užívateľ
Skúsený užívateľ
Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje

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!
 [ Príspevkov: 11 ] 


Ako zistiť počet záznamov a či sa vôbec záznam vyskytuje



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

assembler, uz len zistit pocet medzier

v Assembler, C, C++, Pascal, Java

5

1073

06.05.2010 7:27

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

vymazanie zaznamov starsich ako 30 dni

v Databázy

10

658

15.01.2015 11:02

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

PHP&MySQL - Ako na najrychlejsi sposob zobrazenia zaznamov ?

v PHP, ASP

3

472

20.04.2012 19:28

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

ako spolahlivo vybrat z databazy nahodny zaznam..?

v Databázy

8

1761

11.01.2007 21:30

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

Ako sa zachová DB ak prekročím limit záznamov v tabuľke

v Databázy

6

499

09.02.2013 18:03

weroro

V tomto fóre nie sú ďalšie neprečítané témy.

ako prerobiť velký počet obrázkov

v Grafické programy

6

976

24.07.2009 16:38

jozef.rusnak

V tomto fóre nie sú ďalšie neprečítané témy.

ako zistit subdomeny

v Domény

5

1259

03.03.2008 12:06

mage

V tomto fóre nie sú ďalšie neprečítané témy.

ako zistit suciastku

v Elektronika

3

721

08.08.2012 19:47

vesimir

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zistit webhosting

v Webhosting a servery

6

3193

18.05.2008 16:41

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spojiť vačší počet DIV-ou

v HTML, XHTML, XML, CSS

4

605

09.07.2011 11:57

devil669

V tomto fóre nie sú ďalšie neprečítané témy.

Ako limitovať počet zázanamov v tabuľke

v Databázy

1

1772

06.02.2019 21:04

BX

V tomto fóre nie sú ďalšie neprečítané témy.

ako zistit typ dosky

v Intel čipové sady

2

5066

02.12.2007 12:05

fuco

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zistiť výšku prvku

v JavaScript, VBScript, Ajax

2

530

02.08.2011 7:15

camo

V tomto fóre nie sú ďalšie neprečítané témy.

ako zistit ID stranky

v Ostatné

2

2941

15.12.2006 14:18

majso

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zistit pravost nahravky?

v Audio programy

5

1186

14.06.2010 19:57

br4n0

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zistit integrovanu zvukovku?

v Ovládače

9

1149

04.05.2010 0:12

prandof



© 2005 - 2024 PCforum, edited by JanoF