include / formmailer Problem

versuch13

Erfahrenes Mitglied
Hi,

sorry für den nicht so aussagekräftigen Betreff. Also, ich versuche mich zur Zeit an meiner ersten PHP Seite.
Der Aufbau per include ist mir gelungen. Ich habe also eine Navigation, auf deren Betätigung verschiedene Inhalte in einen div included werden. Unter anderem eben ein Formmailer, der dann also so eingebunden wird = index.php?section=contact.
Das Formular wird dann über die sendform.php, also <form action="sendform.php" ...>
versendet. Hier das Problem, wenn das Formular an sendform.php übergeben wird, wird die mail verschickt, und ein Text ausgegeben, Mail wurde erfolgreich gesendet. Das Problem ist, dafür wird nun das ganze Browser Fenster genutzt, und die eigentliche Seite ist weg.
Ich möchte aber, das der Text, Mail wurde gesendet, in dem Bereich erscheint, wo vorher das Formular war (also in dem div in den ich die Inhalte include).

Hoffe mein Problem wurde verständlich und mir kann jemand helfen, weil ich komm allein absolut nicht weiter.

Vielen Dank im vorraus.


gruß
 
Du könntest das ja so machen...du machst <form action="index.php?section=contact&send=1" (..)>
Dann überprüfst du auf deiner Contact-Seite ob $_GET['send'] == 1 und je nach dem schickst du die mail oder zeigst das Formular an!

greetz
daddz
 
he, danke für die schnelle Antwort. So in der Art habe ich das versucht. Aber das sieht schon besser aus. Wofür steht jetzt das index.php?section=contact&send=1.

Verstehe ich das jetzt richtig. Dazu muss ich die mail Funktion in die contact.php mit reinmachen, also nicht getrennt?
Probier es jetzt einfach mal aus. Wäre dir aber sehr dankbar wenn du es nochmal etwas genauer beschreiben könntest.

Danke. Gruß
 
Ja also des send=1 ist dafür da, das dein Script weiß, dass das Formular ausgefüllt wurde und es die Mail verschicken soll.
versuch13 hat gesagt.:
Verstehe ich das jetzt richtig. Dazu muss ich die mail Funktion in die contact.php mit reinmachen, also nicht getrennt?
ganz genau!

greetz
daddz
 
Ja, haut irgendwie leider nicht so hin. Hier einfach mal der Code:

PHP:
  <div id="main">
  
  		<form action="index.php?section=contact&send=1" method="GET">
  		  
  		  <table align="left" border="0" cellpadding="0" cellspacing="0">
  			<tr>
  			  <td valign="top">
  				
 	 		<table border="0" align="left" cellpadding="0" cellspacing="0">
  				  <tr>
 					 <td valign="top">
  Name:<br> <input type="text" name="name"><br>
  Email:<br> <input type="text" name="email"><br>
 					 </td>
 					 <tr>
 		 		 <td valign="top">Message:<br>
  <textarea name="message"></textarea><br>
  <input type="submit" name="send" value="Senden">
  </td>
 					 </tr>
  				</table>
  			
  	
  			  </td>
  			</tr>
  		  </table>
  		  
  		</form>
  <?php
  
  if(isset($_GET["send"])) {
  $betreff="Contact";
  $empf="email@gmx.de";
  $inhalt = "Name: $name\n Message: $message";
  mail($empf,$betreff,$inhalt,"From: <$email>");
  echo "Mail wurde gesendet";
  }
  ?>
  
  </div>


Also, das ist die contact.php die in die index.php included ist.. wie man am Formmailer sieht, bin ich nicht gerade der PHP Pro. Daher wäre ich echt dankbar wenn du oder sonst wer mal drüber schaut. Danke.

Edit: Ach ja, also, so wie das jetzt ist, wird die news.php welche als default angegeben ist included..

Gruß
 
Zuletzt bearbeitet:
PHP:
<div id="main">
	<?php
  		if(isset($_GET["send"]) && $_GET['send'] == 1) {
			// hier vielleicht noch eine überprüfung ob überhaupt was ins formular geschrieben wurde!?
  			$betreff="Contact";
  			$empf="email@gmx.de";
  			$inhalt = "Name: ".$_POST['name']."\n Message: ".$_POST['message']."";
  			mail($empf,$betreff,$inhalt,"From: <".$_POST['email'].">");
  			echo "Mail wurde gesendet";
  		}
		else {
  	?>
	<form action="index.php?section=contact&send=1" method="POST">
	    <table align="left" border="0" cellpadding="0" cellspacing="0">
    	    <tr>
        	    <td valign="top">
            	    <table border="0" align="left" cellpadding="0" cellspacing="0">
                		<tr>
                    		<td valign="top">
  								Name:<br> <input type="text" name="name"><br>
  								Email:<br> <input type="text" name="email"><br>
                     		</td>
						 </tr>
                    	 <tr>
                  			<td valign="top">Message:<br>
  								<textarea name="message"></textarea><br>
  								<input type="submit" name="send" value="Senden">
  							</td>
                    	</tr>
                	</table>
            	</td>
        	</tr>
        </table>
    </form>
  <?php
  	}
  ?>
  
  </div>
Probiers mal damit!

versuch13 hat gesagt.:
Edit: Ach ja, also, so wie das jetzt ist, wird die news.php welche als default angegeben ist included..
Hmm...dann müsstest du in deiner Config-Datei oder so ändern!

greetz
daddz
 
Vielen vielen Dank Daddz! Es funktioniert. Ich verstehe den Code zwar nicht so ganz, aber es läuft, echt tausend dank!
Ja, also in der config müsste auch alles gestimmt haben, soweit ich das beurteilen kann.
Das mit der Abfrage ob das Formular ausgefüllt wurde verstehe ich leider auch noch nicht so ganz, habe es nicht hinbekommen, ist aber auch erstmal nicht so wichtig..

Vielleicht kannst du mir den Code nochmal ein wenig kommentieren, damit ich auch weiß was da so passiert und es beim nächsten mal selbst machen kann, wäre nett.

Also, danke nochmal.


gruß
 
Nochmal durchkommentiert: ;-]
PHP:
<div id="main">
    <?php
          if(isset($_GET["send"]) && $_GET['send'] == 1) { // hier wird geprüft ob $_GET['send'] gesetzt ist und den Wert 1 hat
              $betreff="Contact";
              $empf="email@gmx.de";
              $inhalt = "Name: ".$_POST['name']."\n Message: ".$_POST['message']."";
              mail($empf,$betreff,$inhalt,"From: <".$_POST['email'].">"); // senden der Mail
              echo "Mail wurde gesendet";
          }
        else { // wenn $_GET['send'] nicht gesetzt oder nicht 1 ist wird das Formular ausgegeben
      ?>
    <form action="index.php?section=contact&send=1" method="POST">
        <table align="left" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td valign="top">
                    <table border="0" align="left" cellpadding="0" cellspacing="0">
                        <tr>
                            <td valign="top">
                                  Name:<br> <input type="text" name="name"><br>
                                  Email:<br> <input type="text" name="email"><br>
                             </td>
                         </tr>
                         <tr>
                              <td valign="top">Message:<br>
                                  <textarea name="message"></textarea><br>
                                  <input type="submit" name="send" value="Senden">
                              </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </form>
  <?php
      } // noch die Klammer, die das else schließt
  ?>
  
  </div>
Falls noch Fragen sind einfach fragen! ;-]
Am besten du baust noch eine Überprüfung ein, bei der gecheckt wird ob der Benutzer überhaupt was eingegeben hat!

greetz
daddz
 
Zurück