Nicht mehr als zwei Beiträge Pro Woche

Sind überhaupt Daten vorhanden.
Denn diese Meldung kommt normalerweise dann wenn du einen Wert aus einer Abfrage ausgeben willst und die Abfrage nichts zurückgeliefert hat.
 
zwei Klassen sind aufjedenfall eingetragen aber ich möchte ja nicht das eine Fehlermeldung kommt wenn nichts eingetragen ist sie soll nur kommen wenn über drei arbeiten in einer klasse in einer Woche geplant sind
 
Wie siehts hiermit aus ?

$sql2 = mysql_query('SELECT Count(*) AS anz_termine FROM termine WHERE yearweek(datum) = yearweek(CURDATE()) GROUP BY Klasse');
$result = mysql_num_rows($sql2);
if($result >=2)
{
echo 'ACHTUNG ! In dieser Woche werden schon 2 Arbeiten geschrieben ';
}
echo "<br /><br />";

da gibt er mir kein fehler aus aber ich habe schon 4 Arbeiten eingetragen und es kommt kein fehler :/
 
mysql_num_rows gibt dir an ob bzw. wieviele Datensätze zurückgeliefert werden.

Wenn du jetzt für eine Klasse 4 Arbeiten eingetragen hast, dann liefert diese Abfrage 1 Datensatz zurück. Diesem Datensatz hat dann aber das Feld anz_termine den Wert 4.

Code:
Klasse | Datum
123    | 29.11.10
123    | 30.11.10
123    | 01.12.10
456    | 29.11.10
456    | 01.12.10
789    | 29.11.10

- mysql_num_rows liefert hier den Wert 3 weil es für 3 Klassen Einträge gibt
- anz_termine für die Klasse "123" hat den Wert 3
- anz_termine für die Klasse "456" hat den Wert 4
- anz_termine für die Klasse "789" hat den Wert 1
 
bekomm die Abfrage nicht gebacken :/ bei mir kommen nur Fehler oder überhaupt keine Ausgabe

Warning: mysql_result() expects parameter 1 to be resource, integer given in Y:\**on line 182

Line 182: if(mysql_result($result, 0, 'anz_termine') >=2)
 
Die zwei Zeilen passen nicht zusammen. $result bekommt einen numerischen Wert zugewiesen und dann nimmst du ihn als "Datenobjekt"

PHP:
// Beitrag 25
$result = mysql_num_rows($sql2);

// Beitrag 27
if(mysql_result($result, 0, 'anz_termine') >=2)

// muss wo so aussehen
if (mysql_result($sql2, 0, 'anz_termine') >=2)

Zeig mal ein bisschen mehr von dem was du jetzt hast.
 
KLappt leider immer noch nicht :/

aktueller Code

PHP:
 $res = mysql_db_query("*",
     "select * from ** ORDER BY klasse");

   $num = mysql_num_rows($res);

    $sql2 = mysql_query('SELECT Count(*) AS anz_termine FROM ** WHERE yearweek(datum) = yearweek(CURDATE()) GROUP BY Klasse');
    $result = mysql_num_rows($sql2);
    echo $num;
    if(mysql_result($num, 0, 'anz_termine') >=2)
    {
    echo 'ACHTUNG ! In dieser Woche werden schon 2 Arbeiten geschrieben ';
    }
    echo "<br /><br />";
 
Also irgendwie hab ich den Eindruck das du hier so ziemlich alles durcheinander würfelst.

PHP:
//was soll diese Abfrage bzw. der Wert $num bringen?
$res = mysql_db_query("*", "select * from ** ORDER BY klasse"); 
$num = mysql_num_rows($res); 

$sql2 = mysql_query('SELECT Count(*) AS anz_termine FROM ** WHERE yearweek(datum) = yearweek(CURDATE()) GROUP BY klasse');
// $result bekommt einen numerischen Wert sofern überhaupt Daten vorhanden sind
$result = mysql_num_rows($sql2); 
echo $num;
// die nächste Anweisung kann nicht gehen $num ist eine Zahl!
if(mysql_result($num, 0, 'anz_termine') >=2) {
    echo 'ACHTUNG ! In dieser Woche werden schon 2 Arbeiten geschrieben ';
}

Ich verstehe das so das ein Lehrer für eine bestimmte Klasse Arbeitstermine in eine Tabelle einträgt.

Nehmen wir mal an die Klasse hat die Bezeichnung "123". Dann muss die Abfrage so aussehen:

PHP:
$klasse = "123";
$sql = "SELECT COUNT(*) AS anz_termine FROM tabellenname WHERE yearweek(datum) = yearweek(CURDATE()) AND klasse = '" .$klasse ."'";
$result = mysql_query($sql);
$anzahl = mysql_result($result, 0, "anz_termine");
if ($anzahl >= 2) {
    echo "ACHTUNG ! In dieser Woche werden schon 2 Arbeiten geschrieben."
}

Wenn es gilt mehrere Klasse gleichzeitig zu prüfen, dann gruppierst du mit GROUP BY

PHP:
$sql = "SELECT COUNT(*) AS anz_termine, klasse FROM tabellenname WHERE yearweek(datum) = yearweek(CURDATE()) GROUP BY klasse";
$result = mysql_query($sql);
for ($a = 0; $a < mysql_num_rows($result); $a++) {
  echo "Für Klasse " .mysql_result($result, $a, "klasse") ." sind im Moment " .mysql_result($result, $a, "anz_termine") ." eingetragen<br>";
}

Ist jetzt nicht getestet, hoffe deshalb das es trotzdem stimmt.
 
Zurück