Autor Zpráva
Iron
Profil *
Dobrý večer, prichádzam za vami s dotazom, ktorý sa možno javí ako jalový a začiatočnícky, no ocením každú radu. Mám takýto skript:
      $sql_spoj= mysql_query("SELECT 'Nick','Nadpis','Prispevok','D',COUNT(*) as Pocet FROM hesla,prispevky  WHERE hesla.ID = prispevky.ID ORDER BY D DESC LIMIT 0,4");           
      while ($sql_vypis= mysql_fetch_array($sql_spoj)) {
            echo $sql_vypis['Pocet'];
           settype($sql_vypis['D'],'integer');
            $date= Date("d.m.Y",$sql_vypis['D']);
             echo "<h2 class='h2vypis'> $sql_vypis[Nadpis] </h2>";
             echo "<small class='smallvypis'> <b> $sql_vypis[Nick] </b> $date </small>";

tento skript by mi mal cyklom vypísať dáta z databázy, no ajkeď je tam 6 záznamov, vypíše to iba jeden. Ak odstránim COUNT, ide to ako má. Doposiaľ som nepoužíval COUNT ale mysql_num_rows() a tak sa v tom nevyznám, je tu niekto kto mi poradí? Ďakujem ;)
panther
Profil
Iron:
takto to nefunguje - buď si můžeš z DB vrátit samostatně (bez dalších sloupců) počet všech řádků, nebo počítat záznamy, které jsou nějak zgroupované.

Možná ti pomůže manuál, jsou tam i příklady.
Iron
Profil *
Ďakujem ;)


Mám ešte otázku je niečo takéto vhodné riešenie? Nehnevajte sa, ale ja tomu manuálu fakt nerozumiem...
$sql= mysql_query("SELECT COUNT(*) as Pocet FROM hesla,prispevky  WHERE hesla.ID = prispevky.ID "); // NEMAM ZIADNE CLANKY      
      $beh= mysql_fetch_array($sql);
      if ($beh['Pocet']== 0) {
          echo "<h4> Tak nič no. </h4>";    }
Tori
Profil
Iron:
A co vlastně chcete zjistit? Celkový počet příspěvků, nebo informace o jednotlivých uživatelích (včetně počtu příspěvků, které napsali), ...?
Iron
Profil *
Som lama ;) Potrebujem vypísať cyklom príspevky z DB tabuľky prispevky + pod nadpis priradiť meno človeka čo ho pridal z tabuľky hesla. Pri pridaní príspevku sa mu dá ID práve prihláseného užívateľa, čo je primárny kľúč v tabuľke hesla. A to s COUNT mi ide o to, aby keď nenájde žiadne výsledky, napísalo "<h4> Tak nič no. </h4>" nič viac. Ďakujem.
Ugo
Profil
v tomto případě y ti možná spíš pomohlo mysql_num_rows() na zjištění a nebo úplně vynechat count a nechat to na iterétoru fetch_array() - teda jestli po ránu alespoň náznakem chápu ;)
Crusher
Profil
Iron:
Presne jak popsal Ugo.
Osobne pouzivam spolu s podminkou takto:
// oprava SQL      $sql_spoj= mysql_query("SELECT 'Nick','Nadpis','Prispevok','D',COUNT(*) as Pocet FROM hesla,prispevky  WHERE hesla.ID = prispevky.ID ORDER BY D DESC LIMIT 0,4");
      $sql_spoj= mysql_query("SELECT 'Nick','Nadpis','Prispevok','D' FROM hesla,prispevky  WHERE hesla.ID = prispevky.ID ORDER BY D DESC LIMIT 0,4");            
      if (!mysql_num_rows($sql_spoj)){
             echo "<p class='p-info'>Diskuze neobsahuje žádné příspěvky. </p>"; 
      } else {
             echo "<p class='p-info'>Počet vypsaných příspěvků v diskuzi: ".mysql_num_rows($sql_spoj)." </p>"; 
         while ($sql_vypis= mysql_fetch_array($sql_spoj)) { 
           settype($sql_vypis['D'],'integer'); 
            $date= Date("d.m.Y",$sql_vypis['D']); 
             echo "<h2 class='h2vypis'> $sql_vypis[Nadpis] </h2>"; 
             echo "<small class='smallvypis'> <b> $sql_vypis[Nick] </b> $date </small>";
pcmanik
Profil
Crusher:
To co je za logiku si od databazy pytat count a nasledne robit znovu to iste v php?
Iron
Profil *
No veď ja som to robil s mysql_num_rows(), ale dočítal som sa že je to rýchlejšie s COUNT a teraz neviem ako to použiť..
Tori
Profil
Iron:
ja som to robil s mysql_num_rows(), ale dočítal som sa že je to rýchlejšie s COUNT
Je to rychlejší, ale každé se hodí pro jinou situaci: Když chcete jen ověřit, že zadané podmínce odpovídá alespoň jeden řádek dat (např. jestli existuje uživatel s tímto loginem a heslem), použijte SELECT COUNT(*). Když potřebujete načíst data z DB a také zjistit, kolik jich vlastně je, použijte SELECT [názvy sloupců] + mysql_num_rows. V téhle konkrétní situaci to bude ten druhý případ.
Iron
Profil *
Ďakujem za vysvetlenie. Takže som si to zbytočne komplikoval, hm.. Dovidenia ;)
Crusher
Profil
pcmanik, Iron:
Jak je popsano Tori. Ja zapomel smazat ty vyskyty "count(*)" v sql a v kodu. Omlouvam se. Kod jsem ve svem predchozim prispevku opravil.

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