mail() schickt an jeden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mail() schickt an jeden

    Hallo Leute,

    bin in PHP ziehmlich eingerostet, da ich erst wieder seit langem (ca. 2 Jahre) was mit PHP mache.
    Ich Schreib derzeit ein kleines Freundschaftstest Script. Die Registrierung und das Verschicken funktioniert soweit, das Problem jedoch
    ist das die Ergebnisse des Tests an jede Email in der Datenbank verschickt.

    Folgendermaßen sieht bei mir die Abfrage aus:

    Quellcode

    1. $result = mysql_query ("SELECT * FROM ft");
    2. $num = mysql_num_rows($result);
    3. if (mysql_num_rows($result))
    4. {
    5. while($row = mysql_fetch_array($result))
    6. {
    7. $id=$row['id'];
    8. $name=$row['name'];
    9. $email=$row['email'];
    10. $ip = $_SERVER['REMOTE_ADDR'];
    11. mail($email, $betreff, $ausgabe, $extra, "FROM: Freunde-Test.xe.cx - Team");
    12. }
    13. }
    Alles anzeigen


    Der Code funktioniert zwar, jedoch habe ich das Problem das mail() die Email an jeden schickt, die in der Datenbank Registriert ist.

    Ich habe auch schon Probiert

    Quellcode

    1. $result = mysql_query ("SELECT * FROM ft WHERE id ='".$_GET['id']."'");


    zu machen, leider erfolgslos, er Schickt ab da dann keine Email mehr.

    Kann mir da jemand Helfen?

    Mit freundlichen Grüßen
  • Wie funktioniert denn die Auswahl?

    Ist da ein Menü wo du den Benutzer auswählst? Ansonsten hast du ja gar kein $_GET Wert!

    Und somit kommt er gar nicht erst in die if-Anweisung da er keinen Benutzer mit einer leeren ID gefunden hat.

    Lieber die ID im Post-Formular als hidden input dazuweisen und beim abfragen in einer Variable oder Array speichern und dann

    Quellcode

    1. $result = mysql_query ("SELECT * FROM ft WHERE id ='".mysql_real_escape_string($ID)."'");
  • Hi,

    wenn du eh nur einen Datensatz erwartest, kanns du die Schleife weglassen und mail() steht bei dir ja auch noch in der while Schleife. Wenn du keinen Massenversandt planst, so etwas nie machen, das kann "böse" enden ;)


    Quellcode

    1. $result = mysql_query ("SELECT * FROM ft WHERE id ='".mysql_real_escape_string($ID)."'");
    2. $num = mysql_num_rows($result);
    3. if ($num)
    4. {
    5. $row = mysql_fetch_array($result);
    6. $id=$row['id'];
    7. $name=$row['name'];
    8. $email=$row['email'];
    9. $ip = $_SERVER['REMOTE_ADDR'];
    10. mail($email, $betreff, $ausgabe, $extra, "FROM: Freunde-Test.xe.cx - Team");
    11. }
    Alles anzeigen
  • Quellcode

    1. $result = mysql_query ("SELECT * FROM ft");
    2. $num = mysql_num_rows($result);
    3. if (mysql_num_rows($result))
    4. {
    5. while($row = mysql_fetch_array($result))
    6. {
    7. $id=$row['id'];
    8. $name=$row['name'];
    9. $email=$row['email'];
    10. $ip = $_SERVER['REMOTE_ADDR'];
    11. mail($email, $betreff, $ausgabe, $extra, "FROM: Freunde-Test.xe.cx - Team");
    12. }
    13. }
    Alles anzeigen

    Quellcode

    1. $result = mysql_query ("SELECT * FROM ft WHERE id ='".$_GET['id']."'");


    Wenn du mit "SELECT * FROM ft" alles von ft holst, dann wird mit dem auch in der Whileschleife gearbeitet. Du müsstest den aktuellen Freund auswählen. Ich kenne deine DB-Stuktur nicht, aber es müsste so ablaufen:
    SELECT * FROM ft WHERE freund_id = "ID_DES_FREUNDES_IN_DER_DB" //oder eine andere Fixe information - normalerweise wird ja mit Inkrementellen IDs gearbeitet um doppelte Einträge zu vermeiden...

    zu erwarten ist nur ein Datensatz. Das kann man mit mysql_fetch_assoc() schön Überprüfen...

    Quellcode

    1. $num = mysql_fetch_assoc($result); //Holt die Daten in einem verschachteltem Array (Zeile 1 => (...) Zeile 2 => (...)) - Zählt man den Hauptarray darf er [u]genau[/u] 1 haben (weil: ein Datensatz geholt wird)
    2. if(count($num) == 1))
    3. {
    4. echo $num[0]['spaltenname_aus_der_db'];
    5. }


    Ich hoffe ich konnte helfen...

    Gruß,
    Erasel
    My lovely mister singing club...