Eine andere Art Email-Form wie umsetzen?

  • Themenstarter Themenstarter billiboy
  • Beginndatum Beginndatum
B

billiboy

Hallo,

Ich habe eine Seite namens "eingang.php". Diese seite schaut in eine Datenbank und gibt die Werte die darin stehen in einer Tabelle wieder aus.
1 davon die da ausgegeben werden sind Email´s. Hinter dieser Email ist eine checkbox und ein Textfeld. Nun kann der User Email´s auswählen und in die Textbox eine Zeit hineinschreiben.

Bsp.: emailtest@gmx.de x 12:00
so müsstet ihr es euch Vorstellen.
Anschliesend kann er dan auf Senden klicken.

Ich glaube ihr könnt es Euch jetzt denken. Jede e-mail die ausgewählt wurde, soll ihre Zeit zugesendet bekommen in einer neuen Form wo der User evtl noch zusätzlich zu der Email schreiben könnte. Mein Problem ist nun wie ich es realisiere.

hier mein bisherigre Code

eingang.php
PHP:
<form id="frm" name="frm" method="post" action="mail.php">
  <div align="center">
    <table width="359" border="1">
      <tr>
        <td width="208" class="text_normal">E-Mail:</td>
        <td width="135" class="text_normal">Zeit:</td>
      </tr>
    </table>
    <table width="363" border="0">
      <!-verbindung zu tabelle und datenbank->
      <?PHP include ("../includes/_config.php");

		mysql_select_db("lol");
		$query = "SELECT * FROM eingabe ORDER BY tag";
		$result = mysql_query($query);




$alt=false;
while ($line = mysql_fetch_array($result)) { 
    $styleclass = ($alt = !$alt) ? 'text_eingang1' : 'text_eingang2';
	

	
?>
<tr>
        
          
        <td width="178" class="text_normal"><span class="<?php echo $styleclass; ?>"><?PHP echo $line[email];?></span></td>
        <td width="21"><span class="Stil3">
          <input name="cmail[]" type="checkbox" id="cmail[]" value="<?PHP echo $line[email];?>">
        </span></td>
        <td width="150"><input name="a_zeit" type="text" id="a_zeit" maxlength="5"></td>
      </tr>
      <?PHP

} 
mysql_free_result($result);

mysql_close();
?>
    </table>
  </div>
  <p align="center">
    <label>
    <input type="submit" name="button" id="button" value="Senden">
    </label>
  </p>
</form>

mail.php
PHP:
  <?PHP

echo "Sie haben folgende Angaben gemacht:<br></br></br>";

echo "Auswahl der E-Mail:              " .implode(' , ' , $_POST[cmail])."<br><br>";


?>
</p>
<p>&nbsp;</p>
<form name="form1" method="post" action="s_mail.php">
	<table height="277">
	  <tr><td class="text_normal">Empf&auml;nger:</td>
	  <td><textarea name="empfaenger" cols="50"><?php echo "".implode(' , ' , $_POST[cmail]).""; ?></textarea></td></td>
        <tr><td class="text_normal">Datum:</td>
      <td><input name="datum" type="text" value="01.01.2010"></td></tr>
		<tr><td class="text_normal">Zeit:</td>
	  <td><input name="zeit" type="text" value="<?PHP echo $_POST[a_zeit];?>"> </td></td></tr>
		<tr>
	  <td class="text_normal">Nachricht:</td>
	  <td><textarea name="nachricht" cols="50" rows="10">Mitteilung an Student,

Sie sind am.

-------------------------------------------------------------------------------------------------------

Diese E-Mail wurde Automatisch generiert. Bitte schreiben Sie keine E-Mail an diese Adresse. Sie kann nicht bearbeitet werden.</textarea></td></td></tr>
	</table>

</form>

Antwort aus Wer-Weiss-Was.de:


Du übergibst einfach alle zu kontaktierenden Adressen an eine Datei, in der per while-Schleife und mail() alle Adressen mit der zugehörigen Uhrzeit angeschrieben werden. Um alle Werte zuzuordnen, kannst du ja dynamisch alle Eingabefelder durchnumerieren, sodass du statt dem Namen cmail[] den Namen cmail_1 oder sowas erhälst. Das gleiche dann noch bei den Uhrzeit-Inputs (bspw. time_1) und dann das ganze dementsprechend abfragen.


Ich bin totaler Anfänger. Kann einer Helfen?

viele haben es falsch verstanden was ich will.

ich will das: die zeit die eingetragen wird, ist nicht die zeit wo es abgesendet werden soll. die zeit die ich reinschreibe soll in der mail stehen.
jede email soll ihre persöhnliche zeit zugesendet bekommen.

sorry wenn es unklar war.
 
ja in der email soll die zeit drinne stehen.
nein die zeit soll nicht abgespeichert werden.
ja die email soll sofort versendet werden. nicht irgendwann oder das was in der textbox zeit steht sondern sofort.

Bsp.
email Checkbox zeit
123@gmx.net X 12:00
145@gmx.net X 19:00

Die email sieht dan so aus:

Kommen Sie bitte um $_POST[zeit] Uhr.
_________________________________________________

Die checkbox ist ausschlag geben dafür das man weis das diese losgeschickt werden soll. wenn sie nicht ausgewählt ist bekommt die person keine mail. Die mail geht sofort los. In der email steht nur die zeit. mehr macht sie nicht.
 
bitte hilfe bei email form

Hallo,

Ich habe ein Problem.
Ich habe eine tabelle die aus einer datenbank per php daten ausliest und anzeigt. (das funktioniert hier brauche ich noch keine hilfe)
Die tabelle ist nach A.N.: (antrags nummer ist automatisch genserierte id nummer), ID (ist fest für user), Name, Nachname, Tag, Schicht, E-Mail, Telefon und Zeit untergliedert.(t auch)

Ich wollte das ich ne email aussuchen kann per checkbox und anschliesend eine zeit. Wenn ich auf senden klicke wird die info mit der Zeit an die email gesendet die ich per checkbox ausgewählt habe (t auch)

Mein problem:

In der email steht jetzt aber nicht der Name, Vorname, Tag und Schicht drinne die zu der email gehören. Was schlecht ist.
Kann mir bitte einer sagen wie ich es hinbekomme das auch das in der mail drinne steht?

hier der Code:

eingang.php (hier wird die auswahl in der tabelle getroffen wer eine email mit persöhnlicher zeit bekommt)

PHP:
<form id="frm" name="frm" method="post" action="mail.php">
  <div align="center">
    <table width="1087" border="1">
      <tr>
        <td width="34" class="text_normal">A.N.:</td>
        <td width="35" class="text_normal">ID:</td>
        <td width="73" class="text_normal">Name:</td>
        <td width="112" class="text_normal">Nachname:</td>
        <td width="117" class="text_normal">Tag:</td>
        <td width="130" class="text_normal">Schicht:</td>
        <td width="208" class="text_normal">E-Mail:</td>
        <td width="185" class="text_normal">Telefon:</td>
        <td width="135" class="text_normal">Zeit:</td>
      </tr>
    </table>
    <table width="1183" border="0">
      <!-verbindung zu tabelle und datenbank->
      <?PHP include ("../includes/_config.php");

		mysql_select_db("lol");
		$query = "SELECT * FROM eingabe ORDER BY tag, zeit";
		$result = mysql_query($query);




$alt=false;
while ($line = mysql_fetch_array($result)) { 
    $styleclass = ($alt = !$alt) ? 'text_eingang1' : 'text_eingang2';
	

	
?>
<tr>
        
          
        <td width="183" class="text_normal"><span class="<?php echo $styleclass; ?>">
        <div align="right"><?PHP echo $line[id_a];?> | </div></span></td>
            
       <td width="51" class="text_normal"><span class="<?php echo $styleclass; ?>"><?PHP echo $line[id];?></span></td>
        <td width="124" class="text_normal"><span class="<?php echo $styleclass; ?>"><?PHP echo $line[name];?></span></td>
        <td width="223" class="text_normal"><span class="<?php echo $styleclass; ?>"><?PHP echo $line[vorname];?></span></td>
        <td width="184" class="text_normal"><span class="<?php echo $styleclass; ?>"><?PHP echo $line[tag];?></span></td>
        
        <td width="335" class="text_normal"><span class="<?php echo $styleclass; ?>"><?PHP echo $line[zeit];?></span></td>
        
        <?php 
if (!isset($counter)) $counter=0;
else $counter++;
echo "<td width=\"200\" class=\"text_normal\"><span class=\"$styleclass\">$line[email]</span></td>
<td width=\"41\"><span class=\"Stil3\"><input name=\"cmail[$counter]\" type=\"checkbox\" id=\"cmail[]\" value=\"$line[email]\"></span></td>
<td width=\"198\" class=\"text_normal\"><span class=\"$styleclass\">$line[tel]</span></td>
<td width=\"21\"><span class=\"Stil3\"><input name=\"tel[$counter]\" type=\"checkbox\" id=\"tel[]\" value=\"$line[tel]\"></span></td>
<td width=\"150\"><input name=\"a_zeit[$counter]\" type=\"text\" id=\"a_zeit\" maxlength=\"5\"></td>";
?>
        <td width="53">&nbsp;</td>
      </tr>
      <?PHP

} 
mysql_free_result($result);

mysql_close();
?>
    </table>
  </div>
  <p align="center">
    <label>
    <input type="submit" name="button" id="button" value="Senden">
    </label>
  </p>
</form>


mail.php (hier wird die email los gesendet)
PHP:
<?php
if ($_POST[cmail])
{

$absender = "ADMIN <admin@127.0.0.1>";
$betreff   = 'Dein Termin.';
$nachricht = 'Bitte komm um %zeit% Uhr vorbei.';

$keys = array_keys($_POST['cmail']);
$key2 = array_keys($_POST['a_zeit']);
$header    = "From: $absender" . "\r\n" .
             "Reply-To: $absender" . "\r\n" .
             "X-Mailer: PHP/" . phpversion();
for($i=0;$i<count($_POST['cmail']);$i++)
	{
	$akt = $keys[$i];
	if ($akt != $key2[$i]) echo "Achtung!<br/>Die übergebenen Schlüssel sind nicht identisch. Ich sollte besser abbrechen...";
	else
		{
		$empfaenger = $_POST['cmail'][$akt];
		$zeit = $_POST['a_zeit'][$akt];
		$tmpnachricht = str_replace("%zeit%",$zeit,$nachricht);
		if ($zeit == "") echo ""; 
		elseif ($zeit == "-") echo ""; 
		elseif ( mail( $empfaenger, $betreff, $tmpnachricht, $header) ) echo '<center>Message: Versendet an  <big><u>'.$empfaenger.'</u></big>  war erfolgreich. <br/></a></center>';
		else echo "Nachricht an $empfaenger konnte nicht versendet werden.<br/>";
		}
	} 
	echo '<br><br><br><br><br><br><br><br><br><br><br><br><br><center>Fertig. Gehen Sie bitte wieder zurück <a href="eingang.php">Eingang</a>	   		</center>';
}

else 
	{ 

		echo '<br><br><br><br><br><br><br><br><br><br><br><br><br><center>Sie haben keine Auswahl getroffen. Gehen Sie bitte wieder zurück <a href="eingang.php">Eingang</a></center>';

	}
	
	


?>


Vielen Dank im vorraus.
 
In Deiner Form muss noch ein Hidden-Field mit 'ID' damit die ID an die mail.php übergeben wird.

In der mail.php liest du in der DB die Daten aus

PHP:
WHERE ID='$id'

und kannst so mit den Daten arbeiten.
 
Es tut mir leid ich bin ein totaler anfänger und weis nicht genau was du meinst.

ich denke du meinst das ich in mail.php eine datenbank verknüpfung erstelle und weiter?
 
also.

da ich mit deinem lösungs vorschlag nichts anfangen kann denke ich es wäre besser mit einer hidden checkbox zu machen die schon aktiviert ist. ich weis bloß nicht wie ich sie in die email rein bekomme
 
Moin ciao/billiboy,

solltest du bis zu deinem nächsten Posting deine SHIFT-Taste nicht finden, ist dieses Thema hier beendet.

Danke
 
Ja tut mir leid.


Also ich habe es so weit hinbekommen das der Name in die Ausgabe auf der Seite funktioniert. In der Mail kommt der Name aber nicht an.

php Code:
PHP:
<?php



if ($_POST[cmail])
{

$absender = "ADMIN <admin@127.0.0.1>";
$betreff   = 'Dein Termin.';
$nachricht = "Bitte komm um %zeit% Uhr vorbei ".$name."";

$keys = array_keys($_POST['cmail']);
$key2 = array_keys($_POST['a_zeit']);
$key3 = array_keys($_POST['cname']);


$header    = "From: $absender" . "\r\n" .
             "Reply-To: $absender" . "\r\n" .
             "X-Mailer: PHP/" . phpversion();
			 
for($i=0;$i<count($_POST['cmail']);$i++)
	{			 
	
	$akt  = $keys[$i];
	if ($akt != $key2[$i]) echo "Achtung!<br/>Die übergebenen Schlüssel sind nicht identisch. Ich sollte besser abbrechen...";
	else
		{
		$empfaenger = $_POST['cmail'][$akt];
		$zeit = $_POST['a_zeit'][$akt];
		$name = $_POST['cname'][$akt];
		
		$tmpnachricht = str_replace("%zeit%",$zeit,$nachricht);
		if ($zeit == "") echo ""; 
		elseif ($zeit == "-") echo ""; 
		elseif ( mail( $empfaenger, $betreff, $tmpnachricht, $header, $name) ) echo '<center>Message: Versendet an  <big><u>'.$empfaenger.'</u>
		'.$name.'</big>  war erfolgreich. <br/></a></center>';
		else echo "Nachricht an $empfaenger konnte nicht versendet werden.<br/>";
		}
	} 
	echo '<br><br><br><br><br><br><br><br><br><br><br><br><br><center>Fertig. Gehen Sie bitte wieder zurück <a href="eingang.php">Eingang</a>	   		</center>';
}

else 
	{ 

		echo '<br><br><br><br><br><br><br><br><br><br><br><br><br><center>Sie haben keine Auswahl getroffen. Gehen Sie bitte wieder zurück <a 			href="eingang.php">Eingang</a></center>';

	}
?>

Die Mail sieht dan so aus wenn der Name Ralf ist und die zeit 12:00 Uhr:

Bitte komm um 12:00 Uhr vorbei .$name.


Ich will das der Name drinne steht bei .$name. .

Wie mache ich das?
 
Zurück