PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anzahl der Einträge aus DB erfahren


Franky76
04.03.2005, 18:20:49
Hallo,

Ich hab folgendes Problem. Ich will in einer Tabelle zählen wieviele Einträge bereits in einer bestimmten Zeile stehen. Die Zeile ist gekennzeichnet durch eine ID.

Meine Vorgehensweise:
$result = mysql_query ("select * from $tabelle where id='$id'");

$anzahl = mysql_num_fields($result);
echo "Anzahl Daten in Tabelle: ".$anzahl." <br>";

Der Befehl zählt nun aber leider auch diejenigen Felder (Zellen) mit, in denen noch kein Eintrag steht, bzw in denen der Eintrag 0 (null) steht. Ich brauche aber die Anzahl der Zellen in denen irgendwann schon einmal Werte eingetragen wurden (also in denen nicht "gar nichts" oder 0 (Null) steht.

Muss ich dazu vielleicht die Attribute der Spalten in der MySQL Datenbank ändern ?

Im Moment sind die Spalten in denen die Werte eingetragen werden folgendermaßen definiert: Typ (varchar11); kollation (latin1general_ci) Null (nein) Standard (0).

Doch auch wenn als Standard in den Zellen, wo noch kein Wert ist, keine 0 (Null) eingetragen wird - also wenn in dem Feld unter phpMyAdmin dann gar nichts zu sehen ist (es also leer ist) wird es mitgezählt.

Wie kann ich das denn nur lösen ?

Ich denke man muss den Befehl in etwa folgendermaßen erweitern...

$result = mysql_query ("SELECT * from $tabelle WHERE id='$id'AND XXX !==0");

Dabei müsste man dann für XXX sowas einfügen wie "Inhalt der Zeile". Dann müsste die Abfrage mit mysql_num_fields doch nur noch die Anzahl der Zellen ausgeben, in denen eben NICHT Null steht, sondern ein Wert ?

Nur was muss ich dann für das XXX einsetzten ? Ich kann nirgends eine Erklärung dafür finden und bin langsam am verweifeln. Habe das Problem schon gestern in ein anderes Forum gepostet, aber da kann oder will man mit nicht helfen.

Vielen Dank vorab für jede Hilfe.
Frank

|Coding
04.03.2005, 19:54:32
hallo und herzlich willkommen im forum!

dein problem lässt sich nicht mir myslq_num_rows lösen, das was du machen möchtest musst du selbst filtern.

schau dir hierzu mal mysql_fetch_row() an. über gib das query ergebnis dieser funktion und prüfe dann ob die werte der tabellenzelle leer/null/0 sind, wenn nicht, +1 zu deinem counter (den musst du natürlich mit einbauen)

ein codebeispiel:

<?php
//... db connect
$sql = "select *
from
$tabelle
where
id='$id'
";

$res = mysql($sql);

$counter = 0; // dein counter

$fetched = mysql_fetch_row($res);

foreach($fetched as $cell){
if($cell != 0 || !empty($cell){
$counter++;
}
}

echo 'Zeile ' . $fetch['id'] . ' hat ' . $counter . 'Einträge.';
?>

Franky76
04.03.2005, 21:01:29
Vielen lieben Dank für die Hilfe!!

Darauf wäre ich so nicht gekommen. Ich versuche nachher einmal das umzusetzen und hoffe das ich es es schaffe...

Frank

|Coding
04.03.2005, 21:07:48
wenn nicht, dann weist du ja wo du hilfe kriegst :-)