Autor Zpráva
panmagor
Profil *
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
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
$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 *
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 *
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
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 *
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 *
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
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
nebo takhle :-) :
$pocet=mysql_num_rows(mysql_query("SELECT * FROM forum")); echo $pocet;
nightfish
Profil
king26
nebo takhle :-) :
tohle je z uvedených řešení to zdaleka nejblbější
king26
Profil
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0