Problem beim Commentsystem

Trash

Erfahrenes Mitglied
Ich hab ein Problem bei meinem Commentsystem zu den News:

PHP:
<?
require("admin/config.inc.php");
?>
<?php 
$datum = date("d.m.Y");
$stunden = date("H");
$minuten = date("i");
$sekunden = date("s");
?>
<?
if($submit)
{
	$speichern = mysql_query("INSERT into comments VALUES ('$id', '$user', '$email', '$text', '$date'");
}
else
{
	$abfrage = mysql_query("SELECT id, news_id, poster_name, poster_email, text, date from comments WHERE news_id = '$id'");
}
	while ($ergebnis = mysql_fetch_array($abfrage))
{
echo "$ergebnis[0], $ergebnis[1], $ergebnis[2], $ergebnis[3], $ergebnis[4], $ergebnis[5]";

}
?>
<html>
<body><center>
<font face="verdana" size="3" color="white"><b>comments</b></font><p><p>
<form action="comments.php" method="post">
<table border="0" width="361">
<tr><td><font face="verdana" size="1" color="black">Name:</font></td><td><input type="text" name="user"></td></tr>
<tr><td><font face="verdana" size="1" color="black">E-Mail:</font></td><td><input type="text" name="email"></td></tr>
<tr><td><font face="verdana" size="1" color="black">Text:</font></td><td><TEXTAREA name="text" rows="8" cols="35"></TEXTAREA></td></tr>
<tr><td><input type="hidden" name="date" value="<?php echo "$datum | $stunden:$minuten:$sekunden Uhr" ?>"</td></tr>
<tr><td><input type="submit" name="submit" value="Eintragen"></td></tr></table>
</form>
<font face="verdana" size="1"><a href="index.php">zurück</a></font><p>
</center></body>
</html>

das ding ist, das die while schleife auf die variable in der else anweisung zugreifen möchte, doch wenn man halt auf aubmit drückt, so wird else ja garnicht ausgelöst..wie kann ich das lösen ? Kann sein das es ne dumme frage ist, aber mir raucht der kopf nach einem Tag voller Zahlen udn Variablen auf dem Bildschirm :)) Zudem ist noch net drin das über den Comments die News nochmal zu sehen sein soll :)
 
Zuletzt bearbeitet:
mit if($submit) überprüfst du lediglich, ob das formular abgeschickt wurde. bau also um der submit abfrage eine weitere if schleife ein, in der du eine variable überprüfst (die du z.b. mit einem weiterem hidden feld übergeben kannst).

also ungefähr so:

PHP:
<?
if($submit){
  if($action == "speichern") {
    $speichern = mysql_query("INSERT into comments VALUES ('$id', '$user', '$email', '$text', '$date'");

}else if($action == "abfrage"){

    $abfrage = mysql_query("SELECT id, news_id, poster_name, poster_email, text, date from comments WHERE news_id = '$id'");
    while ($ergebnis = mysql_fetch_array($abfrage)){
    echo "$ergebnis[0], $ergebnis[1], $ergebnis[2], $ergebnis[3], $ergebnis[4], $ergebnis[5]";
}

}
?>

die variable action musst du dann halt mit übergeben.
 
hmm, wo soll das hidden feld denn hin ? in die comments.php oder noch in die news.php ?!

hmm, ich hab jetzt das eifnach noch ins formular reingemacht:

<tr><td><input type="hidden" name="action"></td></tr>

aber das bringt mir ja wenig, weil der user MUSS ja den submit button drücken um die comments einzulesen, oder ? Und ausserdem soll die Variable action denk ich mal über die news.php weitergegeben werden oder ? Bitte nochmal nen Code Example :)

So in meiner news.php steht nun:

PHP:
$action = "abfrage";
der link zu den comments ist nun:

PHP:
<a href=\"index.php?site=comments&id=$ergebnis[0]&action=abfrage\">

meine comment .php ist nun:

PHP:
<?
require("admin/config.inc.php");
?>
<?php 
$datum = date("d.m.Y");
$stunden = date("H");
$minuten = date("i");
$sekunden = date("s");
?>
<?
if($action == "abfrage"){
$anfrage2 = mysql_query("SELECT id, head, text, quelle, quellurl, bereich, date, user_name FROM news WHERE id = '$id'");
    while ($ergebnis_2 = mysql_fetch_array($anfrage2)){
    echo "<font face=\"verdana\" size=\"1\" color=\"white\">News: $ergebnis_2[1]<br>$ergebnis_2[2]<br><a href=\"http://$ergebnis_2[4]\" target=\"blank\">$ergebnis_2[3]</a><br>$ergebnis_2[5]<br>$ergebnis_2[6]<br>$ergebnis_2[7]</font>";
}
}
?>

<?
if($submit){
  if($action == "speichern") {
    $speichern = mysql_query("INSERT into comments VALUES ('$id', '$user', '$email', '$text', '$date'");
}

else if($action == "abfrage"){

    $abfrage = mysql_query("SELECT id, news_id, poster_name, poster_email, text, date from comments WHERE news_id = '$id'");
    while ($ergebnis = mysql_fetch_array($abfrage)){
    echo "$ergebnis[0], $ergebnis[1], $ergebnis[2], $ergebnis[3], $ergebnis[4], $ergebnis[5]";
}
}
}
?>
<html>
<body><center>
<font face="verdana" size="3" color="white"><b>comments</b></font><p><p>
<form action="<?php echo"$PHP_SELF"; ?> method="post">
<table border="0" width="361">
<tr><td><font face="verdana" size="1" color="white">Name:</font></td><td><input type="text" name="user"></td></tr>
<tr><td><font face="verdana" size="1" color="white">E-Mail:</font></td><td><input type="text" name="email"></td></tr>
<tr><td><font face="verdana" size="1" color="white">Text:</font></td><td><TEXTAREA name="text" rows="8" cols="35"></TEXTAREA></td></tr>
<tr><td><input type="hidden" name="date" value="<?php echo "$datum | $stunden:$minuten:$sekunden Uhr" ?>"</td></tr>
<tr><td><input type="hidden" name="action" value="speichern"></td></tr>
<tr><td><input type="submit" name="submit" value="Eintragen"></td></tr></table>
</form>
<font face="verdana" size="1"><a href="index.php">zurück</a></font><p>
</center></body>
</html>

aber es funzt net ! kann mir jemand sagen was ich falsch mache...das problem ist auch das ich in meine index.php folgendes stehen habe:

PHP:
case PHP_SELF:
     $site = "comments.php";
     break;

Und cih glaube das funzt net, in die DB wird nichts eingetragen !

Die News wird in der comment.php nochmal angezeigt, also das funzt mit &action=abfrage...
 
Zuletzt bearbeitet:
Hoi!

Entweder, ich verstehe dein Problem nicht richtig, oder du siehst tatsächich den Wald vor Bäumen nicht mehr:

Dein ursprünglicher Code

Code:
<?
require("admin/config.inc.php");
?>
<?php 
$datum = date("d.m.Y");
$stunden = date("H");
$minuten = date("i");
$sekunden = date("s");
?>
<?
if($submit)
{
    $speichern = mysql_query("INSERT into comments VALUES ('$id', '$user', '$email', '$text', '$date'");
}
else
{
    $abfrage = mysql_query("SELECT id, news_id, poster_name, poster_email, text, date from comments WHERE news_id = '$id'");
}
    while ($ergebnis = mysql_fetch_array($abfrage))
{
echo "$ergebnis[0], $ergebnis[1], $ergebnis[2], $ergebnis[3], $ergebnis[4], $ergebnis[5]";

}
?>
<html>
<body><center>
<font face="verdana" size="3" color="white"><b>comments</b></font><p><p>
<form action="comments.php" method="post">
<table border="0" width="361">
<tr><td><font face="verdana" size="1" color="black">Name:</font></td><td><input type="text" name="user"></td></tr>
<tr><td><font face="verdana" size="1" color="black">E-Mail:</font></td><td><input type="text" name="email"></td></tr>
<tr><td><font face="verdana" size="1" color="black">Text:</font></td><td><TEXTAREA name="text" rows="8" cols="35"></TEXTAREA></td></tr>
<tr><td><input type="hidden" name="date" value="<?php echo "$datum | $stunden:$minuten:$sekunden Uhr" ?>"</td></tr>
<tr><td><input type="submit" name="submit" value="Eintragen"></td></tr></table>
</form>
<font face="verdana" size="1"><a href="index.php">zurück</a></font><p>
</center></body>
</html>

Mein ausgebesserter Code:

Code:
<?
require("admin/config.inc.php");
?>
<?php 
$datum = date("d.m.Y");
$stunden = date("H");
$minuten = date("i");
$sekunden = date("s");
?>
<?
if($submit)
{
    $speichern = mysql_query("INSERT into comments VALUES ('$id', '$user', '$email', '$text', '$date'");
}
else
{
    $abfrage = mysql_query("SELECT id, news_id, poster_name, poster_email, text, date from comments WHERE news_id = '$id'");
       while ($ergebnis = mysql_fetch_array($abfrage))
       {
           echo "$ergebnis[0], $ergebnis[1], $ergebnis[2], $ergebnis[3], $ergebnis[4], $ergebnis[5]";

       }

}
 ?>
<html>
<body><center>
<font face="verdana" size="3" color="white"><b>comments</b></font><p><p>
<form action="comments.php" method="post">
<table border="0" width="361">
<tr><td><font face="verdana" size="1" color="black">Name:</font></td><td><input type="text" name="user"></td></tr>
<tr><td><font face="verdana" size="1" color="black">E-Mail:</font></td><td><input type="text" name="email"></td></tr>
<tr><td><font face="verdana" size="1" color="black">Text:</font></td><td><TEXTAREA name="text" rows="8" cols="35"></TEXTAREA></td></tr>
<tr><td><input type="hidden" name="date" value="<?php echo "$datum | $stunden:$minuten:$sekunden Uhr" ?>"</td></tr>
<tr><td><input type="submit" name="submit" value="Eintragen"></td></tr></table>
</form>
<font face="verdana" size="1"><a href="index.php">zurück</a></font><p>
</center></body>
</html>

Der ganze Trick dabei ist, die While Schleife in den else Teil afuzunehmen :)

Gruesse

..ooOOipOOoo..
 
Zurück