Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenausgabe funktioniert nicht (Formular)

Einklappen

Neue Werbung 2019

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

  • altram
    hat ein Thema erstellt Datenausgabe funktioniert nicht (Formular).

    Datenausgabe funktioniert nicht (Formular)

    Moinsen,

    ich hab da n kleines Prob.

    Ich habe ein Formular, welches mir per php den Inhalt zukommen lässt (und es gleichzeitig in eine DB schreibt).

    Läuft auch alles.

    Bei Falscheingaben meckert er auch korrekt rum (falsche Email Adresse, ungültige Nummer etc.)

    Nur wenn alles richtig ist und die Nachricht gesendet wurde, sagt er eben nicht –Vielen Dank für ihre Nachricht-…

    Das macht er nur, wenn ich meine –ich schreibs mal in die DB- Datei weglasse.

    Ich seh glaub ich vor lauter Bäumen den Wald nich mehr.

    Habt ihr ne Idee ?

    Hier mal die „in die DB schreib“ Datei

    PHP-Code:

    <!--Verbindung zur DB aufnehmen-->

      <?php
      mysql_connect
    (localhostxxxxxxxxxxxxxxxxx) or die
        (
    "Keine Verbindung moeglich");
      
    mysql_select_db(xxxxxxxxxxx) or die
        (
    "Die Datenbank existiert nicht.");
      
    ?>
      
    <!--Variablen in Kurznamen umwandeln-->

      <?php
      $name 
    $_POST["name"];
      
    $email $_POST["email"];
      
    $telefon $_POST["telefon"];
      
    $fax $_POST["fax"];
      
    $nachricht $_POST["nachricht"];
      
    ?>

    <!--Variablen in die DB schreiben-->
     
      <?php
      
    require_once('mailer.php');
      
      if (
    $error == AND $write_db == 1)
          {
          
    $eintrag "INSERT INTO kontakt_db (name, email, telefon, fax, nachricht)
          VALUES ('
    $name','$email', '$telefon', '$fax', '$nachricht')";
          }
        
    ?>

      <?php

        $eintragen 
    mysql_query($eintrag);

      
    ?>
    Und hier die Mail Datei:

    PHP-Code:

    <?php

    $email                 
    "xxxxxxx"
    $betreff_der_nachrichten     "xxxxxxxxxxxxx";
    require_once(
    'mailer_function.php');

    $meldungen "";

    array_escape_and_strip(&$_POST);
    array_unescape(&$_POST);

    if(isset(
    $_POST['action'])){
        switch(
    $_POST['action']){
            case 
    'submit':    
                if(!
    check_email($_POST['email'])){
                    
    $meldungen .= "Bitte geben Sie eine gültige E-Mail Adresse ein.<br>";
                    
    $error 1;
                }
            
                if(!
    check_telefon($_POST['telefon'])){
                    
    $meldungen .= "Bitte geben Sie eine gültige Nummer ein.<br>";
                    
    $error 1;
                }
                
                if(empty(
    $_POST['nachricht'])){
                    
    $meldungen .= "Bitte geben Sie eine Nachricht ein.<br>";
                    
    $error 1;
                }
                
                if(
    $error) { break; }
                
                
    $message =  "Es wurde eine Nachricht fuer Sie hinterlassen:\n\n".
                            
    "Kontaktdaten:\n".
                            
    "Name: $_POST[name]\n".
                            
    "E-Mail: $_POST[email]\n".
                            
    "Telefon: $_POST[telefon]\n".
                            
    "Fax: $_POST[fax]\n".
                            
    "Uhrzeit: ".date('d.m.Y - H:i:s').
                            
    "\n\n".
                            
    "------------------------- Nachricht -------------------------\n\n".
                            
    "$_POST[nachricht]\n\n".
                            
    "--------------------------- Ende ----------------------------\n\n";            
                
    $x = @mail($ihre_email,addslashes($betreff_der_nachrichten),$message,"from: $ihre_email");        
                if(
    $x)
                {
                    
    $meldungen .= "Vielen Dank für Ihre Nachricht!";
                    
    $_POST = array();
                    
    $write_db 1;
                    break;
                }    
                
    $meldungen .= "Aufgrund eines technischen Fehlers konnten wir Ihre Nachricht nicht empfangen.<br>".
                              
    "Bitte setzen Sie sich anderweitig mit uns in Verbindung.<br>Vielen Dank für Ihr Verständnis!";
                break;    
        }
    }
    ?>
    Hab ich was vergessen ? Wenn ja, bitte kurz Bescheid geben.

    Danke und Gruß

    Alex

  • lstegelitz
    antwortet
    PHP: Strings - Manual

    Einen Kommentar schreiben:


  • altram
    antwortet
    Hi,

    danke Dir.

    Also so läuft es:

    PHP-Code:
    echo "<script language=\"javascript\">alert('";
    echo 
    $send;
    echo 
    "');</script>"
    ist ja auch nix anderes als das was Du eben in eine Zeile geschrieben hast...

    Sag mal, gibts irgendwo eine Anleitung, wo auch ich verstehe, wie ich die ganzen ' und " zu setzen habe ? Das ist mir irgendwie noch nicht ganz klar.

    Ich probier das mal aus.

    EDIT: Ach ja, wie würdest Du das denn dann machen ?

    Einen Kommentar schreiben:


  • dille001
    antwortet
    Ich würde das JS zwar nicht empfehlen aber Dein Script kann nicht funcktionieren.
    Probiers mal so:
    PHP-Code:
    echo "<script language=\"javascript\">alert('".$send."');";
    echo 
    "window.location=\"seite.htm\";";
    echo 
    "</script>"

    Einen Kommentar schreiben:


  • altram
    antwortet
    Hi,

    sodenn, klappt beinahe alles. Habe mich entschieden, das "Vielen Dank für Ihre Nachricht" per Message Box (JS) auszugeben. Funzt auch alles toll.. Nun soll aber bei klick auf OK eine andere Seite geladen werden. Allerdings krieg ich das nicht hin. Auch Google wußte keine Rat.

    Ich bitte um nen Tipp...

    PHP-Code:
    echo "<script language=\"javascript\">alert('";
    echo 
    $send;
    echo 
    window.location="seite.htm";
    echo 
    "');</script>"
    Geht das überhaupt ? Wenn ja fehlen doch garantiert noch irgendwelche " oder so.

    Das hab ich nämlich noch nicht so wirklich drauf..

    Danke Euch,

    Gruß Alex

    Einen Kommentar schreiben:


  • altram
    antwortet
    Hey,

    danke Dir für diese kurze und tolle Erklärung ! SUPER...

    Wo ist hier bitte der Danke Button ??

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Zitat von altram Beitrag anzeigen
    DAS ist die Info, die mir fehlte..

    DANKE !!!

    Das heißt, ich muss INNERHALB der Funktion die VAriable defnieren ?

    Was heißt denn globaler Scops ?
    Vereinfacht ausgedrückt:
    Eine Funktion kennt nur das, was man ihr als Parameter übergibt und das, was in der Funktion definiert wird. Mit Hilfe des Schlüsselwortes "global" kann man sich Variablen aus dem globalen Scope holen, allerdings ist das kein schöner Stil.

    "Globaler Scope" ist im Grunde alles, was zwischen <?php und ?> steht, und nicht Teil einer Funktion oder Klasse ist.

    PHP-Code:
    <?php
    $var_global_scope 
    'ich bin global';

    function 
    foo($param) {
      echo 
    $var_global_scope// Fehler

      
    $var_function_scope 'ich bin nur in der Funktion bekannt';
      echo 
    $var_function_scope// Ok

      
    global $var_global_scope;
      echo 
    $var_global_scope// Ok, da die Variable per "global" in der Funktion bekannt gemacht wurde
    }

    echo 
    $var_function_scope// Fehler
    ?>

    Einen Kommentar schreiben:


  • altram
    antwortet
    DAS ist die Info, die mir fehlte..

    DANKE !!!

    Das heißt, ich muss INNERHALB der Funktion die VAriable defnieren ?

    Was heißt denn globaler Scops ?

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Ups.. für $error ist das korrekt, aber $array_return wird im globalen Scops definiert, jedoch in Funktionen verwendet - Funktionen bilden einen eigenen Scope, alle darin verwendeten Variablen gelten NUR für die Funktion und die Funktion kennt KEINE Variablen, die ausserhalb angelegt wurden..

    Einen Kommentar schreiben:


  • altram
    antwortet
    OK verstanden.

    Aber ich definiere beispielsweise $error doch vorher (=0) und andere auch:

    $meldungen = "";
    $error = 0;
    $write_db = 0;
    $eintrag = 0;
    $array_return = 0;
    $array = 0;

    Oder bin ich da aufm Holzweg und so ? Oder ist initialisieren was anderes ?

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Funktion array_escape_and_strip($array) verwendet $array_return immer noch ohne vorherige Initialisierung. array_unescape() genauso.
    $error ist nur dann definiert, wenn $_POST['action'] == 'submit' UND einer der Codes hinter den check_* Funktionen durchlaufen wird (oder $_POST['nachricht'] leer ist)...ansonsten ebenfalls undefiniert.

    Einen Kommentar schreiben:


  • altram
    antwortet
    Naja, sobald ich Deine Lösung einsetze meckert er wieder mit :

    Undefined variable: array_return in xxxxxxxxxx

    Da gibts nämlich 2 Funktionen, die das beinhalten.

    Setze ich Deinen Code auch dort ein mosert er wieder rum, diesmal aber mit Fehlern, die ich bereits vorher schon behoben hatte (auch Undefined variable: Fehler)

    Ich habe gerade bemerkt, sobald ich array_return = 0 setze, funktionieren meine Hinweistexte nicht mehr (also "bitte geben Sie eine Nachricht ein" etc...)

    Hmm, mir fehlt da echt grad die Erleuchtung. Ich weiß auch, das ich wohl Fragen stelle, wo ein Profi sagt, Alter, gehts ? Naja.

    Ich stelle hier nun einmla den gesamten Code rein, vielleicht habt ihr ja n Tipp. Ich suche dann auch gerne sleber, brauche nur eben die Richtung..

    Ich habe den Code jetzt mal etwas zusammengefasst.

    So,

    der Mailer:

    PHP-Code:
    <?php

    $ihre_email                 
    "xxxxxx"
    $betreff_der_nachrichten     "xxxxxx";
    ?>

    <!--Mailer-Funktionen-->

    <?php
    #################################
    function check_email($email){
        return 
    eregi("^[_a-z0-9-]([-_.]?[a-z0-9])*@[a-z0-9]([-_.]?[a-z0-9])+[.][a-z0-9]+$",$email);
    }

    function 
    check_telefon($telefon){
        return 
    eregi("^[0-9]*$",$telefon);
    }
    #################################
     
    function array_escape_and_strip($array){


        if(!
    is_array($array))
        {
            return;
        }    
        foreach(
    $array AS $key => $inhalt)
        {
            if(
    is_array($inhalt))
            {
                
    $array_return[$key] = array_escape_and_strip($inhalt);
            } else 
            {
                if(
    get_magic_quotes_gpc())
                {
                    
    $array_return[$key] = trim(strip_tags($inhalt));
                    continue;
                } 
                
    $array_return[$key] = trim(strip_tags(addslashes($inhalt)));
            }
        }
        
    $array $array_return;
        return 
    $array;
    }
    ##################################
    function array_unescape($array){

        if(!
    is_array($array)){
            return;
        }
        foreach(
    $array AS $key => $inhalt){
            if(
    is_array($inhalt)){
                
    $array_return[$key] = array_escape_and_strip($inhalt);
            } else {
                
    $array_return[$key] = trim(stripslashes($inhalt));
            }
        }
        
    $array $array_return;
        return 
    $array;
    }
    ################################################################################################################################
    ?>

    <!--Mailer-->

    <?php
    $meldungen 
    "";
    $error 0;
    $write_db 0;
    $eintrag 0;
    $array_return 0;
    $array 0;

    array_escape_and_strip(&$_POST);
    array_unescape(&$_POST);

    if(isset(
    $_POST['action'])){
        switch(
    $_POST['action']){
            case 
    'submit':    
                if(!
    check_email($_POST['email'])){
                    
    $meldungen .= "Bitte geben Sie eine gültige E-Mail Adresse ein.<br>";
                    
    $error 1;
                }
            
                if(!
    check_telefon($_POST['telefon'])){
                    
    $meldungen .= "Bitte geben Sie eine gültige Nummer ein.<br>";
                    
    $error 1;
                }
                
                if(empty(
    $_POST['nachricht'])){
                    
    $meldungen .= "Bitte geben Sie eine Nachricht ein.<br>";
                    
    $error 1;
                }
                
                if(
    $error) { break; }
                
                
    $message =  "Es wurde eine Nachricht fuer Sie hinterlassen:\n\n".
                            
    "Kontaktdaten:\n".
                            
    "Name: $_POST[name]\n".
                            
    "E-Mail: $_POST[email]\n".
                            
    "Telefon: $_POST[telefon]\n".
                            
    "Fax: $_POST[fax]\n".
                            
    "Uhrzeit: ".date('d.m.Y - H:i:s').
                            
    "\n\n".
                            
    "------------------------- Nachricht -------------------------\n\n".
                            
    "$_POST[nachricht]\n\n".
                            
    "--------------------------- Ende ----------------------------\n\n";            
                
    $x = @mail($ihre_email,addslashes($betreff_der_nachrichten),$message,"from: $ihre_email");        
                if(
    $x)
                {
                    
    $meldungen .= "Vielen Dank für Ihre Nachricht!";
                    
    $_POST = array();
                    
    $write_db 1;
                    break;
                }    
                
    $meldungen .= "Aufgrund eines technischen Fehlers konnten wir Ihre Nachricht nicht empfangen.<br>".
                              
    "Bitte setzen Sie sich anderweitig mit uns in Verbindung.<br>Vielen Dank für Ihr Verständnis!";
                break;    
        }
    }
    ?>
    und hier die Datei, die -anscheinend- den Fehler verursacht/beinhaltet:

    PHP-Code:
    <?php
    error_reporting
    (-1);
    ini_set('display_errors'1); 
    require_once(
    'mailer.php');   
    ?>
      
      <?php
      
    //Verbindung zur DB aufnehmen
      
    mysql_connect('localhost''xxx''xxx') or die
        (
    "Keine Verbindung moeglich");
      
    mysql_select_db('xxx') or die
        (
    "Die Datenbank existiert nicht.");
      
    ?>
      
      <?php
      
    //Variablen in Kurznamen umwandeln
      
    $name $_POST["name"];
      
    $email $_POST["email"];
      
    $telefon $_POST["telefon"];
      
    $fax $_POST["fax"];
      
    $nachricht $_POST["nachricht"];
      
    ?>

      <?php
      
    //Variablen in die DB schreiben
      
      
    if ($error == AND $write_db == 1)
          {
          
    $eintrag "INSERT INTO kontakt_db (name, email, telefon, fax, nachricht)
          VALUES ('
    $name','$email', '$telefon', '$fax', '$nachricht')";
          }
        
    ?>

      <?php

        $eintragen 
    mysql_query($eintrag);

      
    ?>

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Welche Fehlermeldungen?

    Einen Kommentar schreiben:


  • altram
    antwortet
    HI,

    hmm, das hab ich mir schon gedacht. Witzigerweise bekomme ich, wenn ich Deine Lösung einsetze wieder Fehlermeldungen, die vorher nicht da waren. Setze ich aber folgendes:

    PHP-Code:
    $array_return 0
    und zwar in die funktion hinein, gibts keine Fehlermeldungen mehr. Aber warum gabs denn Fehlermeldungen obwohl ich die VAriable bereits schon mehrfach vorher (an anderen Stellen) definiert habe ?

    Entschuldige meine Fragen, aber ich lerne gerade...

    Gruß Alex

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Du verwendest $array_return ohne vorherige Initialisierung.

    VOR der ersten Benutzung (vor der foreach Schleife):
    PHP-Code:
    $array_return = array(); 

    Einen Kommentar schreiben:

Lädt...
X