Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Werte in Spalte zählen und anzeigen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Werte in Spalte zählen und anzeigen


 
digitalspecht
07-04-2010, 11:43 
 
Hallo,
ich möchte aus folgender Tabelle jeweils die Anzahl anzeigen lassen, wie oft ein thema genannt wurde. Gerne auch sortiert nach der Anzahl...

Die DB-Tabelle sieht so aus:
| id | thema | partei |
| 1 | thema1 | p1 |
| 2 | thema2 | p2 |
| 3 | thema3 | p3 |
| 4 | thema2 | p4 |
| 5 | thema4 | p5 |

Mein PHP-Script sieht so aus:

<?php
$sql="SELECT thema, count( * ) FROM daten GROUP BY thema LIMIT 0 , 30";

$ergebnis = mysql_query($sql);
while($row =mysql_fetch_assoc($ergebnis))
{
echo $row['thema'];
}
?>

In Phpmyadmin erhalte ich in der Abfrage:
|thema | count( * ) |
|thema1 | 2 |
|thema2 | 1 |
|thema3 | 1 |

Die Abfrage scheint danach schonmal zu stimmen.
In meinem Script ist die Ausgabe aber "ttt". Jetzt meine Frage: Wie bekomme ich da eine schöne Tabelle hin, wie sie in phpmyadmin zu sehen ist?

Danke für jede Hilfe.
Digitalspecht

 
AmicaNoctis
07-04-2010, 11:54 
 
Hallo,

nach deinem echo $row['thema']; kommt weder ein Zeilenumbruch, noch ein <br />, noch sowas wie echo "</td></tr><tr><td>"; Wenn du berücksichtigst, dass du auch den entsprechenden HTML-Code innerhalb der Schleife erzeugen musst, kannst du ganz leicht eine Tabelle draus machen.

Der Spaltenreferenz mit count solltest du noch ein Alias verpassen, damit du sie in $row besser ansprechen kannst.

Gruß,

Amica

 
digitalspecht
07-04-2010, 13:07 
 
Vielen Dank schonmal. Ich habe nun die Abfrage mit AS angepasst und das geht auch. Nur als ich dann noch versucht habe die Tabelle zu implementieren, wird nichts mehr angezeigt:
<?php
$sql="SELECT thema AS themen, count( * ) AS anzahl FROM daten GROUP BY thema LIMIT 0 , 30 ";

$ergebnis = mysql_query($sql);
while($row =mysql_fetch_assoc($ergebnis))
{
echo "<table>";
echo "<tr>";
cho "<td>Themen</td>";
echo "<td>"$row['themen']"</td>";
echo "</tr>";
echo "<tr>";
echo "<td >Anzahl </td>";
echo "<td >"$row['anzahl']"</td>";
echo "</tr>";
echo "</table>";
}
?>

Habe auch versucht mit einem . vor und nach der Variablen $row[wasauchimmer] zu arbeiten bzw. die Anführungszeichen wegzulassen... Geht irgendwie nicht. Auch ist das wohl bissel Ressourcenaufwändig, so wie ich es gemacht habe, oder?

 
AmicaNoctis
07-04-2010, 13:41 
 
Lies dir mal die Forenregeln durch, da steht, wie du dein Error-Reporting so einstellst, dass PHP dir alle Fehler anzeigt. Außerdem solltest du im Handbuch die Grundlagen (http://de3.php.net/manual/de/language.types.string.php) zur Zeichenkettenverknüpfung (http://de3.php.net/manual/de/language.operators.string.php) durcharbeiten.

Die table-Tags machen innerhalb der Schleife übrigens keinen Sinn. Du willst sicher eine Tabelle für alles und nur eine Tabellenzeile pro Datensatz. Also müssen <table> und </table> außerhalb der Schleife stehen.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:53 Uhr.