Email nach neuen Beitrag im Forum verschicken

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Email nach neuen Beitrag im Forum verschicken

Beitrag 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 } } ?>
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Ich seh durch den Quellcode gar nicht durch :o

Kannst du den mal strukturieren?
Benutzeravatar
asomy
Mitglied
Beiträge: 89
Registriert: 10.08.2005 14:50

Beitrag von asomy »

sind die anführungszeichen alle richtig?
mfg asomy 8)
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag 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 } } ?>
Benutzeravatar
asomy
Mitglied
Beiträge: 89
Registriert: 10.08.2005 14:50

Beitrag von asomy »

nochmal die frage:

Code: Alles auswählen

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

Code: Alles auswählen

$text = $_POST["text"]; 
?
mfg asomy 8)
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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'];
Samogas
Mitglied
Beiträge: 33
Registriert: 30.08.2005 16:16
Wohnort: C:\Windoof\Microschrott\Windoof XD Progressional - the doesn't work station
Kontaktdaten:

Beitrag 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?
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“