Ankündigung

Einklappen
Keine Ankündigung bisher.

Name aus Datenbank lesen und in E-Mail einfügen

Einklappen

Neue Werbung 2019

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

  • Name aus Datenbank lesen und in E-Mail einfügen

    Hallo,
    ich möchte eine E-Mail per php(smtp) versenden.
    Es soll zum Beispiel folgender Text da stehen:

    Sehr geehrter Herr Musterman,

    bla bla bla

    Mit freundlichen Grüßen

    Den Namen möchte ich nun aus einer MySQL Datenbank herausholen und dort in der E-Mail einfügen.
    Wie kriege ich das hin? Ich habe es schon ganz normal mit einer MySQL Abfrage versucht, das war aber erfolglos oder ich habe was falsch gemacht.

    Die Abfrage sieht ungefähr so aus:

    PHP-Code:
    $abfrage "SELECT name FROM tabelle";
    $ergebnis mysql_query($abfrage);
    while(
    $row mysql_fetch_object($ergebnis)) 
    In der E-Mail habe ich folgende Codes versucht um den Namen dann einzubinden:

    Code:
    $Name
    $row->nachname
    Beides erfolgslos.

  • #2
    Ok, wo fangen wir an...

    Also
    Die Abfrage sieht ungefähr so aus
    ...zeig uns die Abfrage wie sie exakt aussieht und was Du als Ergebnis zurückbekommst (bspw. print_r bzw. var_dump).

    mysql_* bitte nicht mehr verwenden, dafür gibt es jetzt mysqli_* bzw. PDO(!).
    Dies mit PreparedStatements verwenden!

    Spaltennamen in Abfragen immer in Backticks verpacken!

    Aufgrund welcher Sternenkonstellation nimmst Du an, daß $Name oder $row->nachname existiert?!

    Und am wichtigsten: Weißt Du, was Du tust?
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Habs schon gefunden, danke.

      PHP-Code:
      $sql "SELECT 
                              Name 
                          FROM 
                             Tabelle
                          WHERE 
                              Name 
      Was ist mysqli_ ? Hab ich noch nichts von gehört

      Warum sollte ich nicht wissen was ich da tue?

      Kommentar


      • #4
        Weil mir schleierhaft ist, wie man bei so einer Abfrage:
        Code:
        SELECT name FROM tabelle
        derer Ergebnis man so abfragt:
        PHP-Code:
        while ( $row mysql_fetch_object($ergebnis) ) {
            
        //

        auf die glorreiche Idee kommt, es gäbe bspw. einen Index nachname in $row?!


        Zu den anderen Punkten:
        mysqli
        PDO (<- meine Empfehlung!)

        Und Du verwendest immer noch keine Backticks!
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          ne das $row habe ich rausgenommen, da hattest du schon recht. Ich habe einfach nur den Code eingefügt und dann ging es.

          Ich versuch es mir anzugewöhnen mit den Back Sticks...

          Kommentar


          • #6
            ne das $row habe ich rausgenommen
            ...jetzt bin ich verwirrt! Das war so ziemlich das einzige, was in Deinem Eingangspost korrekt war!
            Warum ist das raus und warum funktioniert das nun?!
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Mal als kleines triviales Beispiel unter Verwendung von PDO:
              PHP-Code:
              $sQuerySql "SELECT `name` FROM `tabelle`";

              $stmnt $oPDO->prepare$sQuerySql );
              $stmnt->execute();

              while( 
              $oDataSet $stmnt->fetch(PDO::FETCH_OBJ) ) {

                  echo 
              $oDataSet->name;


              ...davon ausgegangen, daß Du den Datenbank-Connect über PDO in der Variablen $oPDO vorhältst.
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Ich erklär dir alles ganz genau morgen, habe mich vielleicht zu undetulich ausgedrückt.

                Was mich nicht interessiert: Warum kein mysql mehr? Veraltet?

                Kommentar


                • #9
                  Was mich nicht interessiert: Warum kein mysql mehr? Veraltet?
                  Also entweder bist Du verwirrt oder Du willst mich verwirren?!

                  Ja, es ist veraltet!
                  Steht doch auch in dem Manual, was beweist, daß Du dort nicht nachgesehen hast!
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    damit das mal klar ist : es geht nicht um die Datenbank an und für sich ... da ist MySQL so aktuell wie eh und je ...
                    Es geht um die Datenbank-Schnittstelle im PHP ...

                    mysql_ ist uralt , inzwischen als "deprecated" gekennzeichnet (das ist vergleichbar dem Todesurteil, es wartet nur noch in seiner Zelle auf die Giftspritze) vermutlich mit der nächsten Version von php wird mysql_ nicht mehr an Board sein.

                    deswegen RECHTZEITIG auf eine der beiden moderneren Erweiterungen setzen
                    mysqli hätte den Vorteil, dass - wenn man es funktional verwendet - es fast so ähnlich ist, viele Funktionen heißen bis auf den mysqli-Teil gleich (mysqli_real_escape_string und co)
                    Aus Gründen, dass man leichter die Datenbank wechseln kann, raten wir dir aber gleich dazu, PDO einzusetzen. Es ist eindeutig die jüngste der Datenbank-Schnittstellen, aber nicht so überladen wie adodb

                    sowohl mysqli als auch pdo bieten den Vorteil, dass prepared Statements verwendet werden können, die wiederum befreien dich von der Last des händischen Escapens

                    du solltest es dir im PHP-Manual wenigstens anschauen, damit du für den Tag X vorbereitet bist, an dem ein mysql_connect nur noch lapidar "undefined function" liefert
                    [Quote=nikosch]
                    So glatt kann doch wirklich keiner sein.[/quote] :roll:

                    Kommentar


                    • #11
                      Zitat von Arne Drews Beitrag anzeigen
                      Also entweder bist Du verwirrt oder Du willst mich verwirren?!

                      Ja, es ist veraltet!
                      Steht doch auch in dem Manual, was beweist, daß Du dort nicht nachgesehen hast!
                      Tut mir Leid, ich war gestern Abend nicht ganz bei der Sache. Das "nicht" gehört da natürlich nicht hin.
                      Ich habe jetzt alles schon auf MySQL programmiert. Soll ich das nun umändern oder kann ich das behalten.
                      Wenn ich das so lasse, was können für Fehler auftreten?

                      Zum eigentlichen Thema. Also, es ging um eine Abfrage mit MySQL für die Funktion "Passwort vergessen" in einem Login Bereich.
                      Hier einmal der ganze Code:

                      PHP-Code:
                      <?php 
                      $verbindung 
                      mysql_connect ("localhost",
                      "XXX""XXX")
                      or die (
                      "keine Verbindung möglich.
                       Benutzername oder Passwort sind falsch"
                      );

                      mysql_select_db("XXX")
                      or die (
                      "Die Datenbank existiert nicht.");


                          if(isset(
                      $_POST['submit']) AND $_POST['submit']=='Passwort anfordern'){
                              
                      // Daten prüfen 
                              
                      $errors = array(); 
                              if(!isset(
                      $_POST['username'])) 
                                  
                      $errors[] = ""
                              else{ 
                                  if(
                      trim($_POST['username']) == ""
                                      
                      $errors[] = "Geben Sie Ihren Username an."
                                  
                      // Nickname suchen 
                                  
                      $sql "SELECT 
                                              email 
                                          FROM 
                                              XXX 
                                          WHERE 
                                              username = '"
                      .mysql_real_escape_string(trim($_POST['username']))."'
                                              "

                                  
                      $result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
                                  
                      $row mysql_fetch_assoc($result); 
                                  if(!
                      $row
                                      
                      $errors[] = "Ihr Nickname konnte nicht gefunden werden.\n"
                              } 
                              if(
                      count($errors)){ 
                                  echo 
                      "\n"
                                       
                      "\n"
                                  foreach(
                      $errors as $error
                                      echo 
                      $error."<br>\n"
                                  echo 
                      "<br>\n"
                                  echo 
                      "<a href=\"".$_SERVER['PHP_SELF']."\">Zurück</a>\n";
                              } 
                              else { 
                                  
                      // Neues Passwort erstellen 
                                  
                      $passwort substr(md5(microtime()),0,8); 
                                  
                      $sql "UPDATE 
                                              XXX 
                                          SET 
                                              passwort = '"
                      .md5(trim($passwort))."' 
                                          WHERE 
                                              username = '"
                      .mysql_real_escape_string(trim($_POST['username']))."'
                                         "

                                  
                      mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
                      ?>             
                      <?php  
                      ERROR_REPORTING
                      (E_ALL);
                      ini_set('display_errors''1');


                                         
                      require(
                      "phpmailer/class.phpmailer.php");

                      $mail = new phpmailer();

                      $mail->IsSMTP();                                   
                      $mail->Host     "XXXXXX"
                      $mail->SMTPAuth true;     
                      $mail->Username "XXXX_X-XXXX"
                      $mail->Password "XXXXX"

                      $mail->From     "XXXXXX";
                      $mail->FromName "XXXXX";
                      $mail->AddAddress ($row['email']);

                      $mail->WordWrap 50;                              
                      $mail->IsHTML(true);                               

                      $mail->Subject  =  "Neues Passwort";
                      $mail->Body     =  "<h3>Ihr Passwort wurde erfolgreich geändert.</h3> <br /><br />
                                         Ihr neues Passwort lautet:<br /><br /> 
                                         <b>
                      $passwort</b><br /><br /> 
                                         Ihr altes Passwort wurde gelöscht.<br />
                                         Bitte ändern Sie das Passwort nach dem ersten Einloggen wieder.<br /><br />
                                         Mit freundlichen Grüßen<br />
                                         ... Team"
                      ;





                      if(!
                      $mail->Send())
                      {
                          echo 
                      "Die Nachricht konnte nicht versandt werden <p>";
                          echo 
                      "Mailer Error: " $mail->ErrorInfo;
                          exit;
                      }

                      echo 
                      "Wir haben das Passwort an ihre E-Mail Adresse gesendet.<br /><a href='http://www.server-bodyspray.eu'>Zurück zur Startseite</a>";
                      ?>
                      <?php 
                                  

                              } 
                         
                          else{ 
                                  echo 
                      "<form "
                                       
                      " name=\"passwort\" "
                                       
                      " action=\"".$_SERVER['PHP_SELF']."\" "
                                       
                      " method=\"post\" "
                                       
                      " accept-charset=\"ISO-8859-1\">\n"
                                  echo 
                      "username :\n"
                                  echo 
                      "<input type=\"text\" name=\"username\" maxlength=\"32\">\n"
                                  echo 
                      "<br>\n"
                                  echo 
                      "<input type=\"submit\" name=\"submit\" value=\"Passwort anfordern\">\n"
                                  echo 
                      "</form>\n"
                          } 
                      ?>
                      Und da sollte halt am Schluss eine E-Mail an den Benutzer, der das Passwort vergessen hat, gesendet werden. Damit es Persönlicher wird, wollte ich gerne "Sehr geehrte/r Herr/Frau sowieso" schreiben. Deswegen die Abfrage aus der MySQL Bank wegen dem Namen(ich meine hier nicht den usernamen).

                      Ich hoffe ich konnte die Verwirrung wieder entwirren.
                      Sorry nochmal dafür und danke das du dir trotzdem noch die Zeit genommen hast.

                      lg

                      Kommentar


                      • #12
                        Zitat von beliar284 Beitrag anzeigen
                        damit das mal klar ist : es geht nicht um die Datenbank an und für sich ... da ist MySQL so aktuell wie eh und je ...
                        Es geht um die Datenbank-Schnittstelle im PHP ...

                        mysql_ ist uralt , inzwischen als "deprecated" gekennzeichnet (das ist vergleichbar dem Todesurteil, es wartet nur noch in seiner Zelle auf die Giftspritze) vermutlich mit der nächsten Version von php wird mysql_ nicht mehr an Board sein.

                        deswegen RECHTZEITIG auf eine der beiden moderneren Erweiterungen setzen
                        mysqli hätte den Vorteil, dass - wenn man es funktional verwendet - es fast so ähnlich ist, viele Funktionen heißen bis auf den mysqli-Teil gleich (mysqli_real_escape_string und co)
                        Aus Gründen, dass man leichter die Datenbank wechseln kann, raten wir dir aber gleich dazu, PDO einzusetzen. Es ist eindeutig die jüngste der Datenbank-Schnittstellen, aber nicht so überladen wie adodb

                        sowohl mysqli als auch pdo bieten den Vorteil, dass prepared Statements verwendet werden können, die wiederum befreien dich von der Last des händischen Escapens

                        du solltest es dir im PHP-Manual wenigstens anschauen, damit du für den Tag X vorbereitet bist, an dem ein mysql_connect nur noch lapidar "undefined function" liefert
                        Alles klar. Wenn ich jetzt auf mysqli_ "update" muss ich dann immer nur in "i" dahinter schreiben? Und das alle Funktionen dann so bleiben?
                        Eine neue Datenbank muss ich dann aber nicht einrichten?!

                        Kommentar


                        • #13
                          Nein, eine neue Datenbank benötigst Du nicht. Ein schlichtes zufügen von i ist aber sicher auch nicht komplett ausreichend.

                          Du solltest die Vorteile nutzen, die mysqli und PDO haben.
                          Ich empfehle Dir immer noch PDO zu verwenden.
                          Wenn Du eh umstellst ist es ja gleich, was Du Dir aneignest.
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar


                          • #14
                            Das stimmt. Ist halt nur ärgerlich, da ich jetzt schon über die hälfte Programmiert habe und naja... Selbst Schuld halt zu wenig Informiert.

                            Kommentar


                            • #15
                              So ich hab das mal in PDO umgeändert. Ist das so richtig?

                              PHP-Code:
                              <?php
                              $dbconfig
                              ['host'] = 'localhost';
                              $dbconfig['user'] = 'xxx';
                              $dbconfig['base'] = 'xxx';
                              $dbconfig['pass'] = 'xxxx';
                              $dbconfig['char'] = 'utf8';

                              try {
                                  
                              $pdo = new PDO('mysql:host='.$dbconfig['host'].';dbname='.$dbconfig['base'].';charset='.$dbconfig['char'].';'$dbconfig['user'], $dbconfig['pass']);
                              }
                              catch(
                              PDOException $e) {
                                  exit(
                              'Unable to connect Database.');
                              }


                              $stmt $pdo->query('SELECT xxxxx FROM xxxx');
                              while(
                              $row $stmt->fetch()) {
                                  
                                 echo 
                              '<table border="1">';
                                 echo 
                              '<tr width="2300px" height="19px">';
                                 echo 
                              '<th width="100px">xxx</th>';
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              "<th>x</th>";
                                 echo 
                              '</tr>';
                                 
                                  
                                  
                                  echo 
                              "<tr>";
                                  
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br />';
                                  echo 
                              '<td width="100px"><center>'$row['x'].'</center></td><br /><br />';
                                  echo 
                              "</tr>";
                                  echo 
                              '</table>';
                              }

                              ?>
                              Noch eine Frage: Jetzt habe ich da irgendwie 2 Tabellen, mit jeweils 1 Überschrift.
                              http://www7.pic-upload.de/10.10.13/k1fp7i1wm8sl.png
                              Wie kriege ich das weg?

                              Kommentar

                              Lädt...
                              X