• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL Num Rows

Witschi262

Blogger
Hi,
wie man wohl merkt bin ich grade was am machen :D

Gerade sitze ich an sog. Achievments. Ein Besucher XY schreibt also 10 Beiträge und erhält ein Achievment.
Das Problem ist jetzt, wie ich ermittle wann die 10 Beiträge geschrieben worden sind. Mit MySQL Num rows, habe ich mal rumprobiert, klappt allerdings nur, wenn der Besucher exakt 10 Beiträge hat.
Mit < und > kriege ich nur Errors. Unexpected '<' ...

PHP:
einlesen = mysql_query("SELECT * FROM comments WHERE autor = '$name'")or die(mysql_error());  if(mysql_num_rows($einlesen)=<10)    {     mysql_query("INSERT INTO achievment (id, name, aname) VALUES (NULL, '".mysql_real_escape_string($name)."', '".mysql_real_escape_string($acten)."')")or die(mysql_error());     echo "Achievment reached.";

Wie kriege ich es bloß hin?
 
Werbung:
PHP:
SELECT ID, COUNT(*) AS anzahl FROM comments GROUP BY ID HAVING anzahl >= 10; //alle user mit mehr oder gleich 10 Beiträgen

SELECT COUNT(*) AS anzahl FROM comments WHERE autor = '$name'; // anzahl eines Nutzers auslesen
 
Ich verstehe jetzt nicht, was ich mit dem Quey anfangen soll. Ich poste hier mal den ganzen code:

PHP:
$einlesen = mysql_query("SELECT * FROM achievment WHERE name = '$name' and aname = '$acten'")or die(mysql_error());if(mysql_num_rows($einlesen)==1){}  else  {  $einlesen = mysql_query("SELECT * FROM comments WHERE autor = '$name'")or die(mysql_error());  if(mysql_num_rows($einlesen)=<10)    {     mysql_query("INSERT INTO achievment (id, name, aname) VALUES (NULL, '".mysql_real_escape_string($name)."', '".mysql_real_escape_string($acten)."')")or die(mysql_error());     echo "Achievment reached.";    }  }
 
Werbung:
Du könntest die Querys mal mit Beispieldaten füllen und in deinem phpmyadmin austesten, dann würdest du die Resultate sehen.
Die zweite Query gibt dir die Anzahl Beiträge eines bestimmten Benutzers aus, diese kannst du zB per mysql_fetch_object() auslesen und dann mit deinem Wunschwert vergleichen:

PHP:
$sql = "SELECT COUNT(*) AS anzahl FROM comments WHERE autor = '$name'";
$result = mysql_query($sql);
$row = mysql_fetch_object($result);
if($row->anzahl > 9){
  //avard eintragen
}

Das Eintragen von Avards würde ich übrigens eher mit Triggern lösen, nicht im PHP Script.

Andres Beispiel, alle Nutzer ausgeben mit mehr 10 Beiträgen

PHP:
$sql = "SELECT ID, COUNT(*) AS anzahl FROM comments GROUP BY ID HAVING anzahl >= 10";
$result = mysql_query($sql);
while ($row = mysql_fetch_object($result)) {
    echo "User ".$row->ID." hat ".$row->anzahl." Kommentare.<br />\n";
}

Nichts davon getestet.
 
Zuletzt bearbeitet:
Zurück
Oben