Willkommen in der Webstatt Zum Webstatt Blog und Stories
BNightSpeeder am 12.06.06 14:51

Hallo,
wieder nen Problem mit ne MySQL Query!
Hier mal der Code:

mysql_query("SELECT COUNT(*) FROM news_comments WHERE id2='".$row->id."'")

Also es soll gezählt werden wie viele Zeilen die Variable "$row->id" in der Spalte "id2" haben.
Aber mit dem Code oben, wird immer nur 1 angezeigt, ich kenne mich da nicht so aus, und habe leider keine passende Dokumentation gefunden!

Mfg. BNS

netcup.de Warum gibt es hier Werbung?
milahu milahu am 12.06.06 14:57

Quote
Original von BNightSpeeder
Also es soll gezählt werden wie viele Zeilen die Variable "$row->id" in der Spalte "id2" haben.

Du willst also die Zeilen einer Zahl mit einer MySQL Anfrage bestimmen..?

BNightSpeeder am 12.06.06 16:05

Also ich habe in der Spalte "id2" in mehreren Zeilen mehrmal die selbe Zahl z.b. die Zahl "1" dreimal!
Nun soll gezählt werden in wie vielen Zeilen id2 die zahl "1" hatt!

Am besten kann ich es so ausdrücken:

milahu milahu am 12.06.06 16:25

In dem Fall sollte deine o.g. Anfrage aber funktionieren.
Bist du sicher, dass das Ergebnis fehlerhaft ist?
Bisher war MySQL nämlich für mich immer unfehl(er)bar :-\

BNightSpeeder am 12.06.06 16:32

Beweis!

EDIT:// sry, dreimal die id 10!

Franky Franky am 12.06.06 16:34

dann für deine auery doch einfach mal direkt in phpMa aus ;)

BNightSpeeder am 12.06.06 16:40

Quote
Original von Franky
dann für deine auery doch einfach mal direkt in phpMa aus ;)


Gut, dan kommt dan auch "3" raus!

Aber egal welche ich in der PHP Datei angebe, selbst wenn die ID nicht exestiert, gibt er immer 1 aus, z.b. hier:

mysql_query("SELECT COUNT(*) FROM news_comments WHERE id2='10'"))

Gibt er 1 aus!

Dustwolf Dustwolf am 12.06.06 16:49

Machmal COUNT(*) AS Wert und greif dann auf das Arrayfeld Wert zu. Eventuell hast du da ne Kontrollvariable oder so mit im Array.

BNightSpeeder am 12.06.06 16:51

So?

SELECT COUNT(*) AS id2='10' FROM news_comments

Dan kommt leider nen fehler, von wegen synax mysql usw..


EDIT:

Selbst bei:

SELECT COUNT(*) FROM news_comments

Wird nur 1 angezeigt!

milahu milahu am 12.06.06 16:59

Ich weiß es! Ich weiß es! :D
Du musst das Ergebnis natürlich noch mit mysql_fetch_* auswerten -- Der Rückgabewert
von mysql_query ist ein boolescher und deshalb bei einer erfolgreichen Anfrage wahr bzw. 1.

Dustwolf Dustwolf am 12.06.06 17:00

AS Wert gibt auch an, dass der gezählte Wert im Arrayfeld $array[0]['Wert'],oder ähnlich, steht.
Wobei du mit (*) einfach alle Einträge zu zählen angibst.

Wasili am 12.06.06 17:56

Quote
Original von milahu Der Rückgabewert
von mysql_query ist ein boolescher und deshalb bei einer erfolgreichen Anfrage wahr bzw. 1.


Ist es nicht so dass bei einer erfolgreichen Anfrage eher eine Ressource ID zurück geliefert wird?
Und nur bei Fehlerhafter Anfrage unwahr?
D.h. solange mysql_query ein SELECT, EXPLAIN, SHOW oder DESCRIBE ausführt. Ansonsten stimmt es, dass mysql_query true gibt. *g*

milahu milahu am 12.06.06 19:17

Vertan, sprach der Hahn und stieg von der Ente.
Es wird natürlich die ResID zurückgegeben, in dem Fall 1 :-]

BNightSpeeder am 12.06.06 19:46

Also wenn ich das nun richtig verstehe so:

echo mysql_fetch_object(mysql_query("SELECT COUNT(*) FROM news_comments")) or die(mysql_error());

Aber dan wird 1 weiterhin angezeigt!

milahu milahu am 12.06.06 19:54

Nöö, nöö, nöö.
<?php
$res = mysql_query('SELECT COUNT(*) FROM news_comments') or die(mysql_error());
list($num) = mysql_fetch_row($res);
# oder noch ausführlicher:
$num = mysql_fetch_row($res);
$num = $num[0];
?>

BNightSpeeder am 12.06.06 19:56

Bei:
<? $res = mysql_query('SELECT COUNT(*) FROM news_comments') or die(mysql_error());
$num = mysql_fetch_row($res);
$num = $num[0]; echo $num[0]; ?>


Ausgabe "7"

Bei:
<? $res = mysql_query('SELECT COUNT(*) FROM news_comments') or die(mysql_error());
$num = mysql_fetch_row($res);
$num = $num[0]; echo $res; ?>


Ausgabe "Resource id #12"

milahu milahu am 12.06.06 20:01

Was willst du denn immer mit deiner Ressource ID..?

BNightSpeeder am 12.06.06 20:03

Nein, es geht darum das ich wie oben beschriebn ein Problem beim Ausgeben habe, oder es wird immer "7" angezeigt oder dieses "Resorce.."..

Wasili am 12.06.06 20:36

7 Weils sieben Zeilen hat?
Resource weils halt ne MySQL-Resource ID ist?

Setz mal das rein nach dem Query und schau dir das Ergebnis an:
var_dump(mysql_fetch_row($res));

BNightSpeeder am 12.06.06 20:59

$res = mysql_query('SELECT COUNT(*) FROM news_comments') or die(mysql_error());
var_dump(mysql_fetch_row($res)); echo $res;


Dan kommen wieder diese Unverständliche zeilen:

Quote
array(1) { [0]=> string(1) "7" } Resource id #10

der_nic der_nic am 12.06.06 21:02

Quote
Original von BNightSpeeder
[QUOTE]array(1) { [0]=> string(1) "7" } Resource id #10
[/quote]

was ist da unverständlich....? die gesamte Anzahl der news_comments ist bei deinem Query 7...?

was ist eigendlich dein Problem bzw was genau willst du das es am Ende da steht??

BNightSpeeder am 12.06.06 21:05

Ich will nur die Zahl stehen haben die raus kommt, schau ein paar beiträge nach oben!

der_nic der_nic am 12.06.06 21:06

hat doch milahu schon geschriben???
<?php
$res = mysql_query('SELECT COUNT(*) FROM news_comments') or die(mysql_error());
list($num) = mysql_fetch_row($res);
# oder noch ausführlicher:
$num = mysql_fetch_row($res);
$num = $num[0];
?>

$num ist dann am Schluss die Zahl die du haben willst oder nicht?:D??

//edit:
bzw wenn du noch ein WHERE anfügst 'SELECT COUNT(*) FROM news_comments WHERE `xxx` = yyy'

Wasili am 12.06.06 21:09

PS: Ohne Where-Bedinnung ist nach Screenie verständlich warum dass da ne 7 rauskommt. 7 Zeilen... :P


*Sieben mal flecht ich dein Haar, um den alten Apfelbaum* *g*
7 Zwerge?
7 ist die magische Zahl ^^

EDIT: ... Sorry für die Kranke Rechtschreibung. Ka was los ist S:

milahu milahu am 12.06.06 21:09

BNS, ich glaub dir hat die heutige Hitze ganz schön zugesetzt -- Was zur Hölle willst du nun überhaupt?

BNightSpeeder am 13.06.06 13:47

Ah, also nochmal mit einem Bild, ich kriege es nicht hin!

Dustwolf Dustwolf am 13.06.06 14:11

"SELECT COUNT (*) AS Wert FROM tabelle WHERE id2='10'"

Einfach anpassen. Dann bekäme ich bei meinem DB-Objekt ne Variable $abfrage[0]['Wert'] mit dem Inhalt 3.

BNightSpeeder am 13.06.06 14:20

<? $res = mysql_query("SELECT COUNT (*) AS Wert FROM tabelle WHERE id2=' . $row->id. '") or die(mysql_error());
list($num) = mysql_fetch_row($res);
echo $num; ?>


row->id == 10

Dan kommt aber der fehler:

Quote
You have an error in your SQL syntax near '(*) AS Wert FROM tabelle WHERE id2=' . 10. '' at line 1

Dustwolf Dustwolf am 13.06.06 14:21

Versuch mal COUNT(*), also ohne Leerzeichen.
Und:
id2='" . $row->id. "'"

milahu milahu am 13.06.06 14:22

Tu uns allen einen Gefallen und lerne PHP, vor allem Strings in PHP :tired:
$res = mysql_query('SELECT COUNT (*) AS Wert FROM tabelle WHERE id2=' . $row->id) or die(mysql_error());

Dustwolf Dustwolf am 13.06.06 14:25

Unfair, du warst schneller, als ich mit dem Editieren. :D

Aber stimmt: Speeder, lies dir mal bitte ein paar Tutorials durch und lass so lange die Finger von solchen Scripts. Ich will mich ja nicht als PHP-Experten bezeichnen, aber du machst wirklich ne Menge unnötiger Fehler.
Ist nicht böse gemeint, aber es ist halt so.

BNightSpeeder am 13.06.06 14:33

Also das mit den Strings habe ich gemerkt nach meinem Beitrag, aber hatte vergessen es zu bearbeiten...

Aber trotzdem thx..

Kevz am 14.06.06 12:33

BNS,
meinst du es evtl. so? So sollte ich denke ich mal gemeint sein, hoffe ich*lach*
<?PHP
$sql = "SELECT `id2` FROM `tabelle`";
$result = mysql_query($sql) or die (mysql_error($sql));

$ids = array();
while ($row = mysql_fetch_assoc($result)) {
$ids[$row['id2']]++;
}

foreach ($ids as $key => $val) {
echo "Die ID {$key} ist {$val}x vorhanden.\n";
}
?>

Neals am 17.09.06 15:17

Ok, da es hier ja nicht zu ner Lösung gekommen ist, ich sie aber benötige:

// Anzahl der Texte in einer Kategorie bestimmen
function count_it ($Tabelle, $Spalte, $Kriterium) {
$Anzahl = 0;
$sql = "SELECT COUNT(*) as Anzahl FROM ".$Tabelle." WHERE ".$Spalte." = '".$Kriterium."'";
$qry = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($qry)) {
$Anzahl++;
}
return $Anzahl;
}


herraus kommt immer

Array
(
[0] => 1
)


Ich kriege einfach nicht die Anzahl der Zeilen raus...

Wenn ich dann z.B. ne Spalte habe namens Datum und es 3 mal das Datum welches gesucht wird gibt, soll er auch 3 ausgeben. Er gibt aber trotzdem nur 1 aus. Warum? Kann mir wer helfen?

Wasili am 17.09.06 15:47

Logisch. Der Query liefert genau eine Zeile - Da du ja die Funktion Count aufrufst und nicht die Felder selbst (oder so).

function count_it ($Tabelle, $Spalte, $Kriterium) {
$Anzahl = 0;
$sql = "SELECT COUNT(*) as Anzahl FROM ".$Tabelle." WHERE ".$Spalte." = '".$Kriterium."'";
$qry = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($qry));
return $row['Anzahl'];
}

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt