Autor | Zpráva | ||
---|---|---|---|
panmagor Profil * |
#1 · Zasláno: 26. 6. 2008, 11:43:04
Snažím se dostat z DB počet příspěvků v tabulce. Mám sloupec "ID" kde je poslední číslo 234. Takže to bych nějak potřeboval scriptem dopočítat :-)
$result = count($data['idforum']); echo "$result"; Ale vrátí 1- Což je logické, protože mám jenom jeden sloupec "idforum" :-) Jakou jinou funkcí vypsat celkový počet "idforum" |
||
nightfish Profil |
#2 · Zasláno: 26. 6. 2008, 11:47:35
Mám sloupec "ID" kde je poslední číslo 234. Takže to bych nějak potřeboval scriptem dopočítat
SELECT MAX(ID) FROM tabulka -- vraci nejvyssi ID nebo SELECT COUNT(*) FROM tabulka -- vraci pocet radku tabulky $result = mysql_query($query); if ($result && mysql_num_rows($result)) $pocet = mysql_result($result, 0, 0); |
||
TSD Profil |
#3 · Zasláno: 26. 6. 2008, 11:51:23 · Upravil/a: TSD
$pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM tabulka"), 0); Rada: nikdy nezkoušej použít ID jiným způsobem než jako identifikátor. Vyhneš se problémům. |
||
panmagor Profil * |
#4 · Zasláno: 26. 6. 2008, 11:53:18
No já mezi tím zkoušel a vyzkoušel jsem toto:
$pocet = mysql_query("SELECT COUNT(idforum) AS pocet FROM forum"); $pocet2 = mysql_fetch_assoc($pocet); echo $pocet2['pocet']; |
||
panmagor Profil * |
#5 · Zasláno: 26. 6. 2008, 11:54:23
nikdy nezkoušej použít ID jiným způsobem než jako identifikátor. Vyhneš se problémům.
Mohu znát důvod? |
||
TSD Profil |
#6 · Zasláno: 26. 6. 2008, 12:14:48 · Upravil/a: TSD
panmagor
Mohu znát důvod? Pokud tabulku tvořil někdo, kdo pochopil nejzákladnější teorii, tak ID je přiřazováno automaticky a jediné, na co se můžeš spolehnout, je, že ID každé položky je vyšší, než ID položek, které byly přidány dříve. EDIT: .. a samozřejmě každé ID je unikátní Konkrétně, když jsem četl tvůj příspěvek, tak to zavání tím, že chceš počet příspěvků zjišťovat z hodnoty ID. Když ale pár starších položek smažeš, tak se nedopočítáš. A odpověď "nesmažu" je opravdu špatně. |
||
panmagor Profil * |
#7 · Zasláno: 26. 6. 2008, 12:17:22
Ahá!!! Ano to máte naprostou pravdu... neuvědomil jsem si, že když smažu z celkového počtu příspvěků například první, že mi stále bude hlásit 15, i když tam bude už 14...
|
||
panmagor Profil * |
#8 · Zasláno: 26. 6. 2008, 12:19:21
Takže upraveno na (v tabulce je sloupec jmeno, ktery je povinny):
$pocet = mysql_query("SELECT COUNT(jmeno) AS pocet FROM forum"); $pocet2 = mysql_fetch_assoc($pocet); echo $pocet2['pocet']; P |
||
nightfish Profil |
#9 · Zasláno: 26. 6. 2008, 13:08:49
panmagor
Takže upraveno na (v tabulce je sloupec jmeno, ktery je povinny): TSD tím myslel, že nemáš používat SELECT MAX(ID) (častou chybou v tomto dotazu je jeho použití k získání posledního vloženého ID - například po registraci nového uživatele do databáze, kdy ve skutečnosti nechci zjistit nejvyšší ID, ale poslední mnou přidělené ID [problém může nastat v případě, kdy se bude chtít zároveň registrovat více uživatelů - obtížně "laditelná" chyba] - řešením je v tomto případě použití mysql_insert_id()) samozřejmě použití SELECT Count(ID) ... nebo SELECT Count(*) ... je pro zjištění počtu řádků správné |
||
king26 Profil |
#10 · Zasláno: 26. 6. 2008, 17:18:10 · Upravil/a: king26
nebo takhle :-) :
$pocet=mysql_num_rows(mysql_query("SELECT * FROM forum")); echo $pocet; |
||
nightfish Profil |
#11 · Zasláno: 26. 6. 2008, 17:23:33
king26
nebo takhle :-) : tohle je z uvedených řešení to zdaleka nejblbější |
||
king26 Profil |
#12 · Zasláno: 26. 6. 2008, 18:38:38
tohle je z uvedených řešení to zdaleka nejblbější
procpak? on chtel zjistit pocet radku v tabulce, tak proc nepouzit tohle? |
||
TSD Profil |
#13 · Zasláno: 26. 6. 2008, 22:43:26
king26
Vysvětlím ti, jak to nightfish myslel. To co ty doporučuješ, znamená: "vytáhni z tabulky všechny položky všech řádků a pak spočítej, kolik těch řádků je". SELECT COUNT znamená "dej mi jedno číslo - počet všech řádků" připomnělo mi to toto téma: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=73 163 Přečti si to až do konce. Tam je celkem výstižný závěr, který zřejmě potvrdí každý, kdo je v obraze. |
||
ninja Profil |
#14 · Zasláno: 26. 6. 2008, 23:20:57
king26:
procpak? on chtel zjistit pocet radku v tabulce, tak proc nepouzit tohle? Protoze to zcela zbytecne zatezuje databazi. Pokud to nechapes, nastuduj si zaklady SQL. |
||
Časová prodleva: 17 let
|
0