Webstatt.org - Community seit 2006 - 2012 (2024?)

Zeilen zählen mit bestimmer Variable in bestimmter Spalte

user-137
12.06.2006 12:51

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

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


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

Avatar user-255
12.06.2006 12:57

Original von user-137
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..?

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-137
12.06.2006 14: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:

Avatar user-255
12.06.2006 14: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 :-\

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-137
12.06.2006 14:32

Beweis!

EDIT:// sry, dreimal die id 10!

Avatar user-182
12.06.2006 14:34

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

Seid ihr auch schon wix'r? xD
user-137
12.06.2006 14:40

Original von user-182
dann für deine auery doch einfach mal direkt in phpMa aus zwinkern


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'"zwinkern)


Gibt er 1 aus!

Avatar user-168
12.06.2006 14:49

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

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-137
12.06.2006 14: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!

Avatar user-255
12.06.2006 14:59

Ich weiß es! Ich weiß es! Fettes Grinsen
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.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-168
12.06.2006 15: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.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-343
12.06.2006 15:56

Original von user-255 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*

Avatar user-255
12.06.2006 17:17

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-137
12.06.2006 17:46

Also wenn ich das nun richtig verstehe so:

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


Aber dan wird 1 weiterhin angezeigt!

Avatar user-255
12.06.2006 17:54

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-137
12.06.2006 17:56

Bei:
<? $res = mysql_query('SELECT COUNT(*) FROM news_comments'zwinkern 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'zwinkern or die(mysql_error());
$num = mysql_fetch_row($res);
$num = $num[0]; echo $res; ?>


Ausgabe "Resource id #12"

Avatar user-255
12.06.2006 18:01

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-137
12.06.2006 18:03

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

user-343
12.06.2006 18: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));

user-137
12.06.2006 18:59

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


Dan kommen wieder diese Unverständliche zeilen:

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

Avatar user-162
12.06.2006 19:02

Original von user-137
array(1) { [0]=> string(1) "7" } Resource id #10


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??

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-137
12.06.2006 19:05

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

Avatar user-162
12.06.2006 19:06

hat doch user-255 schon geschriben???

<?php
$res = mysql_query('SELECT COUNT(*) FROM news_comments'zwinkern 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?Fettes Grinsen??

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

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-343
12.06.2006 19:09

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


*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:

Avatar user-255
12.06.2006 19:09

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-137
13.06.2006 11:47

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

Avatar user-168
13.06.2006 12:11

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

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

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-137
13.06.2006 12:20

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


row->id == 10

Dan kommt aber der fehler:

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

Avatar user-168
13.06.2006 12:21

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

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-255
13.06.2006 12: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());

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-168
13.06.2006 12:25

Unfair, du warst schneller, als ich mit dem Editieren. Fettes Grinsen

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.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-137
13.06.2006 12:33

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

Aber trotzdem thx..

user-220
14.06.2006 10: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";
}
?>

user-265
17.09.2006 13: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?

user-343
17.09.2006 13: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'];
}