PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : email daten übergeben



SUNZ
09.03.2010, 08:55
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)

<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>

</span>mail.php (hier wird die email los gesendet)


<?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>';

}




?></span> </span>

VeN0m
09.03.2010, 10:30
Mh... Ich versuche mal Deinen Code nachzuvollziehen...
Allerdings sehe ich Dein Problem nicht so ganz...
Wenn Du schon diese schöne Variable $counter hast, kannst Du doch einfach alle anderen dazugehörigen Werte per <input type="hidden" value="..." name="..."> übergeben.

Deine Idee mit dem Platzhaltern ist zwar ganz gut, aber dafür nimmt man, sofern man mehrere Dinge ersetzen möchte, eher preg_replace.
Du fügst also in Deinen obrigen Code ein Feld für den Vornamen hinzu (als Beispiel):


<input type="hidden" value="Max" name="Vorname[0]">
(musst Du natürlich an Deinen Code anpassen und die 0 mit $counter ersetzen ;)).

Dann ersetzt Du den Text z.B. mit


$nachricht = 'Hallo %vorname%! Bitte komm um %zeit% Uhr vorbei.';

und holst Dir


$vorname = $_POST['Vorname'][$akt];

Nun ersetzt Du die Platzhalter mit den Werten...



$platzhalter = array("/\%zeit\%/","/\%vorname\%/");
$replaces = array($zeit,$vorname);
$tmpnachricht = preg_replace($platzhalter,$replaces,$nachricht);


Aber ehrlich gesagt hätte ich da ein Wenig zu bemängeln:
- Ich sehe keine Konvertierungsfunktion für die Zeit. Nutze lieber Unix-Zeitstempel, die Du per time() abfragen kannst und speichere diese in der Datenbank.
Das spart Platz und Du kannst sie Dir in ein beliebiges Format umwandeln.
- Daten, die aus einer Datenbank kommen, per Formular an ein Mailscript zu übergeben ist nur dann sinnvoll, wenn nur Du selbst Zugriff auf das Script hast.
Ansonsten bitte nur die ID übergeben und dann die Daten über das Mailscript aus der Datenbank holen.

Ich hoffe mal, ich habe Dein Problem erkannt und einigermaßen gelöst.
Du musst das ganze natürlich noch erweitern.