Seite 1 von 1

Email nach neuen Beitrag im Forum verschicken

Verfasst: 30.08.2005 14:20
von Condor
Hallo Jungs,

ich hab mal wieder ein kleines Problem und ich kann es nicht finden. Es geht darum, das bei einem neuen Beitrag im Forum, eine Email an alle User einer bestimmten DB geht. Die Email wird verschickt, aber der eingegebene Text im Forum taucht nicht in der Email auf. Wo hab ich den Fehler drin ? Ich sehe ihn leider nicht, deshalb wende ich mich mal wieder an euch und hoffe das ihr mir helfen könnt. Hier erstmal der Code:

Code: Alles auswählen

<?php if($access<2) { echo $noacc; } else { ?>
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<tr><td class="headb">Neues Thema</td></tr><tr><td class="leftc">
<?php $headline=$_POST["headline"];
$text=$_POST["text"];
$sticky=$_POST["sticky"];
$close=$_POST["close"];
$category=$_REQUEST['category']; 
if(empty($headline) AND empty($text)) { ?>
Bitte w&auml;hlen Sie einen zum Thema passenden Bereich aus.
<?php } else { $error=0;
if (empty($category)) { $error++; 
$msg="- Kein Bereich gew&auml;hlt<br />"; }
if (empty($headline)) { $error++; 
$msg="$msg - Kein Thema eingegeben<br />"; }
if (empty($text)) { $error++; 
$msg="$msg - Kein Text eingegeben<br />"; }
$sql6="SELECT * FROM category WHERE short='$category'";
$findax=mysql_query($sql6, $db);
while ($awc = mysql_fetch_object ($findax)) { 
if($awc->table=="topic") {
if($access<$awc->access) { $error++;
$msg="$msg - Sie haben keinen Zugriff auf den Bereich: $awc->name<br />"; } } }
$sql7="SELECT date FROM topic WHERE userid='$myid' ORDER BY date DESC LIMIT 1";
$findme=mysql_query($sql7, $db);
while ($oldadd = mysql_fetch_object ($findme)) { $olddate=$time - 120;
if($olddate<=$oldadd->date) { $error++;
$msg="$msg - Ihr letztes Thema wurde vor weniger als zwei Minuten eingetragen"; } }
if($error!=0) { print "Folgende Fehler sind aufgetreten:<br /><br /> $msg"; }
if ($error==0) {
print "Ihr Thema wurde erfolgreich im Forum eingetragen.";
$add="INSERT INTO topic(userid, category, date, lastpost, headline, text, sticky, close, ip) VALUES ('$myid', '$category', '$time', '$time', '$headline', '$text', '$sticky', '$close', '$ip')";
$sqlaction=mysql_query($add); ?>
</td></tr></table><br />
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<tr><td class="centerb">
<?php $sql1="SELECT id FROM topic WHERE category='$category' AND userid='$myid' ORDER BY DATE DESC LIMIT 1";
$data=mysql_query($sql1, $db);
while ($topic = mysql_fetch_object ($data)) { $tid=$topic->id;
print "<a href=\"index.php?show=topic&tid=$tid\">Weiter</a>"; } } } ?>
</td></tr></table><br />
<?php if(empty($headline) AND empty($text) OR $error!=0) { ?>
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<form method="post" action="index.php?show=topicadd">
<tr><td style="width:120px" class="leftc">Bereich</td><td class="leftb">
<select class="form" id="category" name="category">
<option value="">----</option>
<?php $sql="SELECT * FROM category WHERE `table`='topic' ORDER BY name";
$data=mysql_query($sql, $db);
while ($board = mysql_fetch_object ($data)) {
if($board->short!='news' OR $access>=3) {
if($board->access<=$access) {
if($board->short==$category) {
print "<option value=\"$board->short\" selected=\"selected\">$board->name</option>"; } else {
print "<option value=\"$board->short\">$board->name</option>"; } } } } ?>
</select>
</td></tr><tr><td class="leftc">Thema</td><td class="leftb">
<input type="text" name="headline" class="form" maxlength="200" size="50" value="<?php echo $headline; ?>" />
</td></tr><tr><td class="leftc">Text<br /><br />
<a href="#" onclick="window.open('system/features.php', 'Features','width=450,height=600,scrollbars=yes')">
Features</a>
</td><td class="leftb">
<textarea name="text" class="form" cols="50" rows="12"><?php echo $text; ?></textarea>
<?php if($access>=3) { ?>
</td></tr><tr><td class="leftc">Erweitert</td><td class="leftb">
<input type="checkbox" class="form" name="sticky" value="1" /> 
Sticky = Thema oben halten<br />
<input type="checkbox" class="form" name="close" value="1" /> 
Close = Neue Beitr&auml;ge verbieten
<?php } ?>
<?php
////////////////////
$sql99="SELECT * FROM users WHERE id = '2'";
$result99=mysql_query($sql99, $db);
while ($row = mysql_fetch_array($result99)) {

$sender = "ORGA";
$sendermail = "a@b.de";
$empfaenger = "$row[email]";
$betreff = "Neues Thema im Forum";
$text = "$_POST[text]";
mail($empfaenger, $betreff, $text,"From: $sender <$sendermail>");
}
////////////////////
?>
</td></tr><tr><td class="leftc">Optionen</td><td class="leftb">
<input type="submit" class="form" name="submit" value="Absenden" />
<input type="reset" class="form" name="reset" value="Nochmal" />
</td></tr></form></table>
<?php } } ?>

Verfasst: 30.08.2005 14:52
von fanrpg
Ich seh durch den Quellcode gar nicht durch :o

Kannst du den mal strukturieren?

Verfasst: 30.08.2005 14:58
von asomy
sind die anführungszeichen alle richtig?

Verfasst: 30.08.2005 15:30
von Condor
Das ist es ja. Ich sehe den Fehler da auch nicht weil es so komisch geschrieben ist. Der komplette Code ist nicht von mir, nur ein paar Zeilen. Ich hab gehofft das ihr da was seht. Was ich jetzt zum schluss eingefügt habe war:

Code: Alles auswählen

//////////////////// 
$sql99="SELECT * FROM users WHERE id = '2'"; 
$result99=mysql_query($sql99, $db); 
while ($row = mysql_fetch_array($result99)) { 

$sender = "ORGA"; 
$sendermail = "a@b.de"; 
$empfaenger = "$row[email]"; 
$betreff = "Neues Thema im Forum"; 
$text = "$_POST[text]"; 
mail($empfaenger, $betreff, $text,"From: $sender <$sendermail>"); 
} 
////////////////////
Und hier ist die Textarea von der ich den Text mitnehmen möchte:

Code: Alles auswählen

<textarea name="text" class="form" cols="50" rows="12"><?php echo $text; ?></textarea>

Code: Alles auswählen

<?php
if($access<2) { echo $noacc; } else { ?>

<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<tr><td class="headb">Neues Thema</td></tr><tr><td class="leftc">

<?php

$headline=$_POST["headline"];
$text=$_POST["text"];
$sticky=$_POST["sticky"];
$close=$_POST["close"];
$category=$_REQUEST['category'];

if(empty($headline) AND empty($text)) { ?>
Bitte w&auml;hlen Sie einen zum Thema passenden Bereich aus.
<?php } else { $error=0;


if (empty($category)) { $error++;
$msg="- Kein Bereich gew&auml;hlt<br />"; }
if (empty($headline)) { $error++;
$msg="$msg - Kein Thema eingegeben<br />"; }
if (empty($text)) { $error++;
$msg="$msg - Kein Text eingegeben<br />"; }


$sql6="SELECT * FROM category WHERE short='$category'";
$findax=mysql_query($sql6, $db);
while ($awc = mysql_fetch_object ($findax)) {

if($awc->table=="topic") {
if($access<$awc->access) { $error++;
$msg="$msg - Sie haben keinen Zugriff auf den Bereich: $awc->name<br />"; } } }


$sql7="SELECT date FROM topic WHERE userid='$myid' ORDER BY date DESC LIMIT 1";
$findme=mysql_query($sql7, $db);
while ($oldadd = mysql_fetch_object ($findme)) { $olddate=$time - 120;

if($olddate<=$oldadd->date) { $error++;
$msg="$msg - Ihr letztes Thema wurde vor weniger als zwei Minuten eingetragen"; } }

if($error!=0) { print "Folgende Fehler sind aufgetreten:<br /><br /> $msg"; }
if ($error==0) {
print "Ihr Thema wurde erfolgreich im Forum eingetragen.";

$add="INSERT INTO topic(userid, category, date, lastpost, headline, text, sticky, close, ip) VALUES ('$myid', '$category', '$time', '$time', '$headline', '$text', '$sticky', '$close', '$ip')";
$sqlaction=mysql_query($add); ?>


</td></tr></table><br />
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<tr><td class="centerb">


<?php

$sql1="SELECT id FROM topic WHERE category='$category' AND userid='$myid' ORDER BY DATE DESC LIMIT 1";
$data=mysql_query($sql1, $db);
while ($topic = mysql_fetch_object ($data)) { $tid=$topic->id;

print "<a href=\"index.php?show=topic&tid=$tid\">Weiter</a>"; } } } ?>

</td></tr></table><br />

<?php

if(empty($headline) AND empty($text) OR $error!=0) { ?>


<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<form method="post" action="index.php?show=topicadd">
<tr><td style="width:120px" class="leftc">Bereich</td><td class="leftb">
<select class="form" id="category" name="category">
<option value="">----</option>


<?php

$sql="SELECT * FROM category WHERE `table`='topic' ORDER BY name";
$data=mysql_query($sql, $db);
while ($board = mysql_fetch_object ($data)) {

if($board->short!='news' OR $access>=3) {
if($board->access<=$access) {
if($board->short==$category) {

print "<option value=\"$board->short\" selected=\"selected\">$board->name</option>"; } else {
print "<option value=\"$board->short\">$board->name</option>"; } } } } ?>

</select>
</td></tr><tr><td class="leftc">Thema</td><td class="leftb">
<input type="text" name="headline" class="form" maxlength="200" size="50" value="<?php echo $headline; ?>" />
</td></tr><tr><td class="leftc">Text<br /><br />
<a href="#" onclick="window.open('system/features.php', 'Features','width=450,height=600,scrollbars=yes')">
Features</a>
</td><td class="leftb">
<textarea name="text" class="form" cols="50" rows="12"><?php echo $text; ?></textarea>
<?php if($access>=3) { ?>
</td></tr><tr><td class="leftc">Erweitert</td><td class="leftb">
<input type="checkbox" class="form" name="sticky" value="1" />
Sticky = Thema oben halten<br />
<input type="checkbox" class="form" name="close" value="1" />
Close = Neue Beitr&auml;ge verbieten
<?php } ?>

<?php
////////////////////
$sql99="SELECT * FROM users WHERE id = '2'";
$result99=mysql_query($sql99, $db);
while ($row = mysql_fetch_array($result99)) {

$sender = "ORGA";
$sendermail = "a@b.de";
$empfaenger = "$row[email]";
$betreff = "Neues Thema im Forum";
$text = "$_POST[text]";
mail($empfaenger, $betreff, $text,"From: $sender <$sendermail>");
}
////////////////////
?>

</td></tr><tr><td class="leftc">Optionen</td><td class="leftb">
<input type="submit" class="form" name="submit" value="Absenden" />
<input type="reset" class="form" name="reset" value="Nochmal" />
</td></tr></form></table>
<?php } } ?>

Verfasst: 30.08.2005 16:21
von asomy
nochmal die frage:

Code: Alles auswählen

$text = "$_POST[text]"; 
oder evtl

Code: Alles auswählen

$text = $_POST["text"]; 
?

Verfasst: 30.08.2005 16:28
von Blutgerinsel
letzteres....

PHP jagt Strings die in " " eingebettet sind durch den Parser wegen

Code: Alles auswählen

$name="Meister Eder";
echo "Es war einmal ein PHP Developer der hies $name";
Variablenzuweisungen bitte stets ohne " " und bei aso Arrays mit " " oder ' ' auszeichnen um die Applikation gegenüber späteren PHP Kontstanten Änderungen etc. zu wappnen....

Code: Alles auswählen

//Mögl. 1: 
$text = $_POST["text"];
//Mögl. 2: 
$text = $_POST['text'];

Verfasst: 30.08.2005 16:29
von Samogas
mal ne frage neben bei:
warum steht da überall <?php und <?
kannste das nicht ganz einfach zusammen schmeißen
oder ist da html zwischen? oder sind das mehrere
dateien?

Verfasst: 30.08.2005 16:44
von Condor
Also ich habs jetzt so stehen:

Code: Alles auswählen

<?php
////////////////////
$sql99="SELECT * FROM users WHERE id = '2'";
$result99=mysql_query($sql99, $db);
while ($row = mysql_fetch_array($result99)) {

$sender = "Orga";
$sendermail = "q@b.de";
$empfaenger = "$row[email]";
$betreff = "Neues Thema im Forum";
$textt = $_POST["text"];
mail($empfaenger, $betreff, $textt,"From: $sender <$sendermail>");
}
////////////////////
?>
Es wird der Text aber trotzdem nicht in der Email angezeigt. Steht denn die Mail-Funktion auch an richtiger stelle ? Und muss es $_POST $_REQUEST oder was anderes vll. heissen, ich sehe leider da nichts. Und danke für eure vorherigen Antworten.