php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.01.2012, 16:56  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

@meikel: Das Problem liegt im Verständnis, ich hatte vorhin PN-Kontakt mit ihm. Das Verständnis von Arrays allgemein macht ihm Probleme, aber er arbeitet es an Tutorials jetzt auf...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.01.2012, 16:57  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard

ja ist wahrscheinlich so das ich die tipps nicht verstehe und dazu fehlerhaft umsetzte. was ist denn diese scriptbörse ?
__________________
Wenn ich bei der Arbeit mit Computern eins gelernt habe, dann das ich einem Computer nur soweit traue, wie ich ihn werfen kann.
johalus ist offline   Mit Zitat antworten
Alt 25.01.2012, 16:59  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

In der Scriptbörse kannst Du posten, was Du brauchst und findest mit Glück evtl. jemanden, der Dir das für lau oder schmales Geld macht...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 25.01.2012, 20:27  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard

die letzte nachricht für heute! und zwar wenn ich das formular aufrufe dann kommt die nachricht "vielen dank... vielen dank für ihre nachricht"


warum erscheint das jetzt? hab ich was übersehen?

PHP-Code:

<?php
include_once('functionen.php');

        
$email $_POST['mail'];







if  (isset  ( 
$_POST['gesendet']) == "ja" )



    
$isValid true;

    if(!isset(
$_POST['anrede']) || $_POST['anrede'] == "")
        
$isValid false;
    if(!isset(
$_POST['nachname']) || $_POST['nachname'] == "")
        
$isValid false;
    if(!isset(
$_POST['vorname']) || $_POST['vorname'] == "")
        
$isValid false;
    if(!isset(
$_POST['str']) || $_POST['str'] == "")
        
$isValid false;
    if(!isset(
$_POST['plz']) || $_POST['plz'] == "")
        
$isValid false;
    if(!isset(
$_POST['plz02']) || $_POST['plz02'] == "")
        
$isValid false;
    if(!isset(
$_POST['nachricht']) || $_POST['nachricht'] == "")
        
$isValid false;

    if(!isset(
$_POST['mail']) || $_POST['mail'] == "" || !is_mail($_POST['mail']))
        
$isValid false;


    if(
$isValid)

            {
                echo       
'<p><span>Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.</span></p>';
            }


if   ( 
$_POST['mail'] <> "")

        {
            if   (
is_mail ($email) == false)

            {
                die (
"<p><span>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</span></p>");
                
$_POST['mail'] = "";
            }
        }




                  {

                  }
            else
         {
                  echo  
'<h1>Vielen dank...</h1>';
                  echo  
'<p>Vielen Dank f&uuml;r Ihre Nachricht</p>';


         }




        echo            
'<br /><br /><br />';



                
//Formular Felder Beginn
                        // Formular Beginn

        
echo    '<form method="post" action="Beispiel-formular-fuers-original.php">';

        echo      
'<h1>Kontakt:</h1><br />';
        echo      
'Felder mit * m&uuml;ssen angegeben werden.<br />';

        echo       
'<br />';


        echo 
'<label>Anrede: *</label>';
        echo 
'<select name="anrede" id="anrede">
              <option value="Herr">Herr     </option>
              <option value="Frau">Frau     </option></select><br />'
;

        echo 
'<br />';

        echo 
'<label>Nachname: *</label>';
        echo 
'<input type="text" name="nachname" value="" /><br />';

        echo 
'<label>Vorname: *</label>';
        echo 
'<input type="text" name="vorname" value=""/><br />';

        echo 
'<label>Firma:</label>';
        echo 
'<input type="text" name="firma" value=""/><br />';

        echo 
'<label>Stra&szlig;e / Nr: *</label>';
        echo 
'<input type="text" name="str" value=""/><br />';

        echo 
'<label>PLZ / Ort: *</label>';
        echo 
'<input class="small" type="text" name="plz" value=""/>
              <input  class="medium"type="text" name="plz02" value=""/><br />'
;

        echo 
'<label>Telefon:</label>';
        echo 
'<input class="small" type="text" name="tel" value="+41"/>
              <input  class="medium"type="text" name="tel02" value=""/><br />'
;

        echo 
'<label>E-Mail: *</label>';
        echo 
'<input type="text" name="mail" value=""/><br />';

        echo 
'<label>Nachricht: *</label>';
        echo 
'<textarea name="nachricht" id="nachricht" rows="20" cols="42"></textarea>';

        echo 
'<br />';
        echo 
'<br />';

        echo 
'<input type="hidden" name="gesendet" value="ja"/>';
        echo 
'<input class="submitbutton" type="submit" value="Absenden"/>';

echo 
'</form>';
    
//Formular Felder END

                // Formular END


                            
$emfaenger "yoas88@gmx.ch";
                            
$betreff "Kontaktierung von Website" ;
                            
$inhalvonmail "Anfrage von Website: " $_POST['nachricht'];
                            
$inhalvonmail .= "  |  Firma: " .$_POST['firma']. "  |  Anrede: " $_POST['anrede']. "  |  Nachname: " $_POST['nachname']. "  |  Vorname:"$_POST['vorname']."  |  PLZ: "$_POST['plz']."  |  PLZ: "$_POST['plz02']."  |  Strasse: ".$_POST['str']."  |  TEL: ".$_POST['tel']."  |  TEL: ".$_POST['tel02']."  |  E-Mail: " .$_POST['mail'];


                            
mail ($emfaenger$betreff$inhalvonmail,"from: email\r\n");





?>
__________________
Wenn ich bei der Arbeit mit Computern eins gelernt habe, dann das ich einem Computer nur soweit traue, wie ich ihn werfen kann.
johalus ist offline   Mit Zitat antworten
Alt 25.01.2012, 20:50  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ist ein wenig undurchsichtig die Codeformatierung, aber generell ist mir das auf die Schnelle aufgefallen:
Zitat:
PHP-Code:
if   ( $_POST['mail'] <> ""
Daraus mach man erstmal das
PHP-Code:
if   ( $_POST['mail'] != ""
Ach gottogott... Da fehlen ja auch irgendwie Klammer wenn ich mich nicht irre...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 26.01.2012, 10:55  
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 8
PHP-Kenntnisse:
Anfänger
funas befindet sich auf einem aufstrebenden Ast
Standard

So ich habe mir mal die Mühe gemacht, es verständlich und leicht zu ergänzen:

Zuerst solltest du den HTML Code von PHP trennen. Hier macht es keinen Sinn, das Formular mit PHP auszugeben.

PHP-Code:
<form method="post" action="">
    <
h1>Kontakt:</h1>
    <
p>
        
Felder mit m&uuml;ssen angegeben werden.
    </
p>
    <
p>
        <
label>Anrede: *</label>
        <
select name="anrede" id="anrede"
            <
option value="Herr">Herr</option
             <
option value="Frau">Frau</option>
        </
select>
    </
p>
    <
p>
        <
label>Nachname: *</label>
        <
input type="text" name="nachname" value="" /></p>
    <
p>
        <
label>Vorname: *</label>
        <
input type="text" name="vorname" value=""/></p>
    <
p>
        <
label>Firma:</label>
        <
input type="text" name="firma" value=""/></p>
    <
p>
        <
label>Stra&szlig;Nr: *</label>
        <
input type="text" name="str" value=""/></p>
    <
p>
        <
label>PLZ Ort: *</label>
        <
input class="small" type="text" name="ort" value=""/> 
         <
input  class="medium"type="text" name="plz" value=""/></p>
    <
p>
        <
label>Telefon:</label>
        <
input class="small" type="text" name="tel" value="+41"/> 
    </
p>
    <
p>
        <
label>E-Mail: *</label>
        <
input type="text" name="mail" value=""/>
    </
p>
    <
p>
        <
label>Nachricht: *</label>
        <
textarea name="nachricht" id="nachricht" rows="20" cols="42"></textarea
    </
p>
    
    <
p>
        <
input class="submitbutton" type="submit" value="Absenden"/>
    </
p>
</
form
Dann solltest du deine Aufgaben immer in Funktionen übergeben, damit wird der Code leichter zu lesen und Fehler können schneller erkannt werden.

Nach dem Abschicken wird folgender Code aufgerufen:
PHP-Code:
if( isset( $_POST['anrede'] ) ){
    
$ausgabe checkPost$_POST );
    if( empty( 
$ausgabe ) ){
        if( 
mail( ) ){
            
$re "Die Email wurde erfolgreich verschickt";
        }else{
            
$re "Es gab Probleme";
        }
    }else{
        foreach( 
$ausgabe AS $ar ){
            
$re .= "<p>".$ar."</p>";
        }
    }

Wenn also das Formular abgeschickt wurde, wird die Funktion checkPost aufgerufen , das POST array übergeben und das Ergebnis in $ausgabe gespeichert.

PHP-Code:
function checkPost$ar ){
    
    
$ausgabe = array();
    if( !
trim$ar['nachname'] ) ){
        
$ausgabe[] = "Nachname fehlt";
    }
    if( !
trim$ar['vorname'] ) ){
        
$ausgabe[] = "Vorname fehlt";
    }
    if( !
trim$ar['str'] ) ){
        
$ausgabe[] = "Straße fehlt";
    }
    if( !
trim$ar['ort'] ) ){
        
$ausgabe[] = "Ort fehlt";
    }
    if( !
trim$ar['plz'] ) ){
        
$ausgabe[] = "PLZ fehlt";
    }
    if( !
trim$ar['mail'] ) ){
        
$ausgabe[] = "Email fehlt";
    }elseif( !
isMail$ar['mail'] ) ){
        
$ausgabe[] = "Email ist falsch";
    }
    if( !
trim$ar['nachricht'] ) ){
        
$ausgabe[] = "Nachricht fehlt";
    }
    return 
$ausgabe;

Zurück kommt ein Array, das alle möglichen Fehlermeldungen beinhaltet.
Sollte dieses Array jetzt leer sein ( emtpy ( $ausgabe ) ), dann führt er die Funktion aus, die die Mail verschickt und speichert eine Erfolgsmeldung in $re . Andernfalls, konnte die Mail nicht verschickt werden und in die Variable $re wird eine Fehlermeldung gespeichert.

Sollte das Array einen Eintrag erhalten, durchläuft er die Schleife und speichert rede im Array befindliche Fehlermeldung in $re.
Grund ist, dass du so alle Meldungen in einer Variablen hast, die du jetzt irgendwo im Template ausgeben kannst.

Die Funktion isMail() überprüft einfach die Email:
PHP-Code:
function isMail$mail ){
    
$ex '/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[a-zA-Z]{2,4}$/';
    if( 
preg_match$ex$mail ) ) {
        return 
true;
    }else{
        return 
false;
    }


Geändert von funas (26.01.2012 um 11:27 Uhr).
funas ist offline   Mit Zitat antworten
Alt 26.01.2012, 11:18  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Wenn Du Dich auf die Rückgabe der Mail-Funktion verlässt, kannst das auch gleich ungeprüft versenden!

Warum übergibst Du Deiner Funktion das POST-Array, wenn Du es darin nicht verwendest?

Verbesserungsvorschlag generell:
PHP-Code:
function checkPost$arr ){
    
$arr array_map'trim'$arr );
    
$error = array();

    
$expected = array( 'nachname''vorname''str''ort''plz''mail''nachricht' );

    foreach( 
$expected as $index ) {
        if( empty(
$arr[$index]) ) $error[$index] = 'fehlt!';
    }

    if( 
false === array_key_exists('mail'$errors) ) {
        if( 
false === filter_var($arr['mail'], FILTER_VALIDATE_EMAIL) ) $errors['mail'] = ' fehlerhaft';
    }

    return empty( 
$errors )? null$errors;

Dann bspw. so fortfahren:
PHP-Code:
$errorFields checkPost$_POST );

if( 
is_null($errorFields) ) {
    
// Hier Mail versenden
    // am besten mit Mailerklassen (PHPmailer, Swift, etc.)
} else {
    
// Fehler
    
foreach( $errorFields as $key=>$value ) echo $key $value;

__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein

Geändert von Arne Drews (26.01.2012 um 11:24 Uhr). Grund: Code beispielhaft etwas angepasst
Arne Drews ist offline   Mit Zitat antworten
Alt 26.01.2012, 11:30  
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 8
PHP-Kenntnisse:
Anfänger
funas befindet sich auf einem aufstrebenden Ast
Standard

Habe übersehen, dass ich die nicht durch $ar ersetzt habe. ( editiert )

Ich wollte es so einfach wie möglich halten....
funas ist offline   Mit Zitat antworten
Alt 26.01.2012, 11:43  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Ich wollte es so einfach wie möglich halten....
Da spricht nichts gegen, war auch nur als Verbesserungsvorschlag gedacht.

Wenn der Umgang mit Arrays vertraut ist und man weiß, was foreach macht, ist die Variante von mir nicht schwieriger zu verstehen als Deine.
Dafür aber leichter modifizierbar, falls sich an den Formularfeldern etwas ändert.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Formular liest daten aus leitet aber nicht auf nächste Seite gini0_8 PHP Einsteiger 22 21.01.2012 00:20
[Erledigt] &quot;Form action&quot; soll zweites Formular abschicken Farlif PHP Tipps 2010 7 19.08.2010 11:27
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Formular im Formular mistermint JavaScript, Ajax und mehr 11 21.06.2010 22:29
Formular 1 wurde verändert, Formular 2 Submit muss dies erkennen smilla JavaScript, Ajax und mehr 2 28.03.2010 21:26
Mehrseitiges verzweigtes Formular RobbyNaish PHP Tipps 2009 1 19.12.2009 01:51
[Erledigt] Aus Formular verschiedene andere Formulare aufrufen melz PHP Tipps 2009 11 11.09.2009 12:27
PDF Formular ausfüllen mit PHP Formular oomworld PHP Tipps 2009 1 26.03.2009 19:09
Problem mit Formular, Daten an datenbank senden Aurec PHP Tipps 2008 11 20.11.2008 18:17
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
[Erledigt] PHP Formular ~~wichtig~~ PHP Tipps 2005 27 29.05.2005 19:38
Im Formular user abfragen? Datenbanken 3 06.01.2005 10:51
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum