Die If Anweisung ? ? ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Die If Anweisung ? ? ?

    Hi,

    hab da ein kleines Problemchen:
    aus einer Datenbank wird geprüft obs Personen gibt die heute Geburtstag haben, wenn ja dann soll eine benachrichtigungs Mail an alle Mitarbeiter abgeschickt werden, wenn ich es ohne die While Schleife in der If - Anweisung und nur mit dem text "es geht" teste dann funktioniert es : wenns keine Leute gibt dann wird "es gibt keine Personen die heute Geburtstag haben!" ausgegeben und wenn doch dann wird "es geht" ausgegeben, wenn ich aber die while - schleife einsetze dann verschickt er immer ne e-Mail, egal obs Leute gibt die heute Geburtstag haben oder nicht. Wo ist da der Fehler.

    Ich hoffe ich habe mich verständlich ausgedrückt.

    Gruß

    Almir

    ---------------------------------------------
    <?php
    $heute = getdate();
    $monat = $heute['mday'];
    $tag = $heute['mon'];
    $nachricht = "test";
    $betreff = "betreff test";
    $verbindung = mysql_connect("localhost", "root", "");
    $db = mysql_select_db("birthday");
    $sql_heute=("SELECT * FROM mitarbeiter WHERE gebmonat=".$monat." AND gebtag=".$tag."") ;
    $sql = ("SELECT email FROM mitarbeiter");
    $res=mysql_query($sql,$verbindung);
    if (mysql_affected_rows($verbindung)>0)
    {
    //echo "es geht";
    $mailliste=mysql_query($sql, $verbindung);
    while(list($email)=mysql_fetch_row($mailliste))
    {
    $empfaenger = "$email" ;
    mail($empfaenger, $betreff, $nachricht);
    }
    }
    else
    {
    echo "es gibt keine Personen die heute Geburtstag haben !";
    }
    ?>

  • #2
    hi,

    könnte es sein, dass sich in deinem code (einige) fehler
    eingeschlichen haben?


    <?php
    $heute = getdate();
    $monat = $heute['mday'];
    $tag = $heute['mon'];
    laut dem php-handbuch auf dieser seite gibt "mday" den
    tag des monats und "mon" den monat als zahl zurück.


    $sql_heute=("SELECT * FROM mitarbeiter WHERE
    gebmonat=".$monat." AND gebtag=".$tag."") ;
    ähm... die klammern, sowie das letzte " sind überflüssig.


    $res=mysql_query($sql,$verbindung);
    hier hast du mysql_query() den falschen parameter
    mitgegeben.. du möchtest doch an dieser stelle diejenigen
    mitarbeiter, welche geburtstag haben und nicht die email-
    adressen aller mitarbeiter, oder?


    if (mysql_affected_rows($verbindung)>0)
    mysql_affected_rows() liefert die anzahl betroffener datensätze
    durch die letzte INSERT, UPDATE oder DELETE anfrage.

    hier solltest du mysql_num_rows() verwenden.


    $mailliste=mysql_query($sql, $verbindung);
    while(list($email)=mysql_fetch_row($mailliste))
    {
    $empfaenger = "$email" ;
    mail($empfaenger, $betreff, $nachricht);
    }
    solltest du vielleicht so machen:

    Code:
    [B]
    $mailliste=mysql_query($sql, $verbindung);
    while($inhalt = mysql_fetch_object($mailliste)) 
    {
            $empfaenger = $inhalt->email;
    	mail($empfaenger, $betreff, $nachricht);
    }		
    [/B]
    ich hoffe dir weitergeholfen zu haben...


    mfg
    el pollo diablo

    [Editiert von El_Pollo_Diablo am 21-08-2001 um 14:20]

    Kommentar


    • #3
      ..

      Das Script und die ganzen Parameter übergaben funktionieren, und das Script tut auch dies was es eigentlich tun sollte, das Einzige ist die If Anweisung die nicht funktioniert.

      Kommentar


      • #4
        naja, sicher funzt das script, syntaktisch ist nix falsch , aber El_Pollo hat schon recht mit seinen aussagen, naja aber die if anweissung stimmt halt absolut nicht , das muss heisen =>
        if (mysql_affected_rows($res)>0)


        nicht if (mysql_affected_rows($verbindung)>0)

        !!
        Naja aber trotzdem wirst du niemanden finden, siehe dazu El_Pollo

        Kommentar

        Lädt...
        X