Haes: Anzahl von Datensätzen ausgeben

Hallo,

ich habe folgende mysql-Abfrage:

select spalte1,COUNT(*) from tabellenname GROUP BY spalte1;

die Ausgabe ist eine Tabelle mit der Anzahl der Datensätze aufgeschlüsselt nach spalte1, also:

-------------------
wert1  |     4    |
wert2  |     7    |
wert3  |     2    |
-------------------

Wie kann ich diese Tabelle mit php ausgeben?

Mein Ansatz:

<?php

$sql="select spalte1,COUNT(*) from tabellenname GROUP BY spalte1";
$result= mysql_query($sql,$connection) or die(mysql_error());

?>

Wie mach ich jetzt weiter?

  1. Habs selber hinbekommen und zwar über ein array:

    while($line = mysql_fetch_array($result)) {

    $spalte1  =  $line['spalte1'];
    $anzahl   =  $line['COUNT(*)'];

    echo "<tr><td>$spalte1</td><td>$anzahl</td></tr>";
    }

    1. n'abend,

      while($line = mysql_fetch_array($result)) {
      $spalte1  =  $line['spalte1'];
      $anzahl   =  $line['COUNT(*)'];
      echo "<tr><td>$spalte1</td><td>$anzahl</td></tr>";
      }

      ich persönlich finde diese Herangehensweise nicht sonderlich toll.

      (a) du kannst in SQl Spalten "umbenennen", ihnen also einen Alias verpassen:

      SELECT spalte1, COUNT(*) as anzahl  
      FROM tabellenname  
      GROUP BY spalte1
      

      (b) mysql_fetch_array() kann dir je nach Einstellung deine Daten doppelt zurückgeben; einmal mit alphanumerischem key und einmal mit numerischem key.
      wenn du alphanumerische keys beutzen willst, nimm mysql_fetch_assoc()
      wenn du numerische key benutzen willst, nimm mysql_fetch_row()
      Es ist immer besser zu wissen was man genau an Daten bekommt (bzw. deren Format zu kennen), als sich auf irgendwelche "möglichen Einstellungen" zu verlassen.

      Der aus (a) und (b) gefolgerte Code würde dann wie folgt aussehen:

      <?php  
        
      // die connection braucht nur angegeben werden, wenn du mit mehreren db-verbindungen gleichzeitig arbeitest.  
      $res = mysql_query('SELECT spalte1, COUNT(*) as anzahl FROM tabellenname GROUP BY spalte1') or die(mysql_error());  
      while( $row = mysql_fetch_assoc($res) )  
      {  
        /*  
         * die Werte aus $row brauchst du nicht in eigene Variablen zu kopieren.  
         * Du kannst sie per $row['name'] direkt aufrufen und sparst dir so  
         * unnötig lange Scripts und unnötige Speicheranweisungen.  
         */  
        echo '<tr><td>'. $row['spalte1'] .'</td><td>'. $row['anzahl'] .'</td></tr>';  
      }  
      ?>
      

      (c) vergiss nicht deine Werte zu Prüfen, bevor du sie in deine SQL Abfrage einfügst. mysql_real_escape_string() ist hier dein Freund.

      (d) um zu testen ob deine Scripts laufen ist ein or die(mysql_error()); sicherlich eine Möglichkeit. Scripts die im aktiven Dienst sind, wollen aber Grundsätzlich keine internen Fehlermeldungen ausgeben (da es den Besucher nichts angeht und er i.d.R. sowieso nichts damit anfangen kann), sondern diese in ein Fehlerprotokoll schreiben.

      weiterhin schönen abend...

      --
      Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
      sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
      1. Danke für die Hilfe! Werde mein Script nochmal ein wenig anpassen.