Seite 1 von 2

Kommentar Modul

Verfasst: Fr 23. Apr 2004, 22:50
von Kathrin77
Hallo ich bins mal wieder.

Kent jemand das FOLGENDE Modul:
erhalte beim einsetzen die FOLGENDE Fehler meldung " PHP Parse error: parse error, unexpected T_STRING in D:\xampp\htdocs\cms\contenido\includes\functions.mod.php(155) : eval()'d code on line 42"

Code: Alles auswählen

Komentar schreiben

EINGABE

echo "'Kommentare schreiben' gesetzt."; 

AUSGABE

<?php 
echo ("<br><br><HR><P>Bitte kommentieren Sie diesen Artikel mit folgendem Formular:<BR><BR>"); 
echo ("<form name=\"bew\" method=\"post\" action=\"$PHP_SELF\">"); 
echo ("<table cellpadding=\"0\" cellspacing=\"0\">"); 
echo ("<tr>"); 
echo ("<td width=\"120\"><P>Ihr Name:</td>"); 
echo ("<td><input type=\"text\" name=\"name\" size=\"30\" value=\"Anonymous\"></td>"); 
echo ("</tr>"); 
echo ("<tr>"); 
echo ("<td><P>Ihre E-Mail Adresse:</td>"); 
echo ("<td><input type=\"text\" name=\"email\" size=\"30\" value=\"name@it.add.gknplc.com\"></td>"); 
echo ("</tr>"); 
echo ("</table><BR>"); 
echo ("<input type=text size=\"60\" name=\"kommentar\" value=\"Ihr Text\">"); 
echo ("<input type=\"hidden\" name=\"idside\" value=\"$idside\">"); 
echo ("<input type=\"hidden\" name=\"idcat\" value=\"$idcat\">"); 
echo ("<input type=\"hidden\" name=\"lang\" value=\"$lang\">"); 
echo ("<input type=\"hidden\" name=\"contenido\" value=\"$contenido\">"); 
echo ("<input type=\"hidden\" name=\"komt\" value=\"do\">"); 
echo (" <input type=\"submit\" name=\"submit\" value=\"Absenden\">"); 
echo ("</form>"); 
if ($kommentar != "") 
{ 
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idside'"); 
while ($kommcount = mysql_fetch_row($kommentarcount)){ 
$kommanzahl = $kommcount[0]; 
} 
$kommentar = strip_tags($kommentar); 
IF ($kommanzahl == "0" or $kommanzahl == "") { 
$rezlfdnr = 1; 
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idside, LfdNr = $rezlfdnr, 
Kommentar = '$kommentar', KommentarVon = '$name', KommentarMail = '$email'"); 
} else { 
$rezlfdnr = $kommanzahl + 1; 
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idside, LfdNr = $rezlfdnr, 
Kommentar = '$kommentar', KommentarVon = '$name', KommentarMail = '$email'"); 
} 
} 

?> 
und

Code: Alles auswählen

Modul um Kommentare zu einem Artikel anzuzeigen

EINGABE
echo "'Kommentare lesen' gesetzt."; 


AUSGABE
<?php
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idside'"); 
while ($kommcount = mysql_fetch_row($kommentarcount)){ 
$kommanzahl = $kommcount[0]; 
} 
IF ($kommanzahl > 0) { 
echo("<HR><P>Zu diesem Artikel wurden folgende Kommentare geschrieben:<BR><BR>"); 
$sql = "select * from kommentare where ID = $idside order by LfdNr"; 
$query = mysql_query($sql); 
$r = mysql_fetch_array($query); 
do { 
IF ($r[KommentarMail] != ""){ 
echo ("Kommentar von <B><a 
href=\"mailto:$r[KommentarMail]\">$r[KommentarVon]</a></B><BR>"); } 
Else { 
echo ("Kommentar von <B>$r[KommentarVon]</B><BR>"); 
} 
echo("<B>>> " . $r[Kommentar] . "</B>"); 
echo("<BR><BR>"); 
} while ($r = mysql_fetch_array($query)); 
} 
?>


Verfasst: Mo 26. Apr 2004, 10:58
von emergence
sag mal welche contenido version hast du nochmal ?
zeile 42 wäre das ende des input moduls...
füg dort mal ein paar leerzeichen ein und versuchs dann nochmal

Verfasst: Mo 26. Apr 2004, 17:24
von Kathrin77
hi


hab die ver 4.4.4

Verfasst: Mo 26. Apr 2004, 17:54
von timo
vermutlich fehlt irgendwo eine geschweifte klammer zu...aber bei DEM code blick ich nicht wirklich durch...

Verfasst: Mi 28. Apr 2004, 21:23
von Kathrin77
HMM finde den fehler nicht und verstehe nicht warum mir das anzeinegn modul nichts anzeigt

Verfasst: Do 13. Mai 2004, 19:25
von Kathrin77
Hallo melde mich mal wieder zurück

hat jemand vielleicht eine Lösung für mich ist das letzte Pussel Teil damit ich die Seite Fertig bekomme Bitte. :cry:

Verfasst: Do 13. Mai 2004, 20:24
von rossi
bei funktioniert diese modul (con 4.4.4 - www.arosskopf.net/cms)

datenbankeintrag:

Code: Alles auswählen

CREATE TABLE `kommentare` (
  `ID` int(3) unsigned NOT NULL default '0',
  `LfdNr` int(10) unsigned default NULL,
  `Kommentar` text,
  `KommentarVon` text,
  `KommentarMail` text,
  `TIMESTAMP` timestamp(14) NOT NULL
) TYPE=MyISAM;

Kommentare schreiben: nur output

Code: Alles auswählen

<?php
echo ("<HR><P>Hier Schreiben<BR><BR>");
echo ("<form name=\"bew\" method=\"post\" action=\"$PHP_SELF\">");
echo ("<table cellpadding=\"0\" cellspacing=\"0\">");
echo ("<tr>");
echo ("<td width=\"120\"><P>Wer schreibt?</td>");
echo ("<td><input type=\"text\" name=\"name\" value=\"\"></td>");
echo ("</tr>");
echo ("<tr>");
echo ("<td><P>E-Mail</td>");
echo ("<td><input type=\"text\" name=\"email\" value=\"\"></td>");
echo ("</tr>");
echo ("</table><BR>");
echo ("<input type=text name=\"kommentar\" value=\"\">");
echo ("<input type=\"hidden\" name=\"idart\" value=\"$idart\">");
echo ("<input type=\"hidden\" name=\"komt\" value=\"do\">");
echo (" <input type=\"submit\" name=\"submit\" value=\"Absenden\">");
echo ("</form>");
if ($kommentar != "")
{
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idart'");
while ($kommcount = mysql_fetch_row($kommentarcount)){
$kommanzahl = $kommcount[0];
}
$kommentar = strip_tags($kommentar);
IF ($kommanzahl == "0" or $kommanzahl == "") {
$rezlfdnr = 1;
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr,
Kommentar = '$kommentar', KommentarVon = '$name', KommentarMail = '$email'");
} else {
$rezlfdnr = $kommanzahl + 1;
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr,
Kommentar = '$kommentar', KommentarVon = '$name', KommentarMail = '$email'");
}
}
?>
komentare lesen (nur output)

Code: Alles auswählen

<?php
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idart'");
while ($kommcount = mysql_fetch_row($kommentarcount)){
$kommanzahl = $kommcount[0];
}
IF ($kommanzahl > 0) {
echo("(Sinnvolle) Kommentare<BR><BR>");
$sql = "select * from kommentare where ID = $idart order by LfdNr";
$query = mysql_query($sql);
$r = mysql_fetch_array($query);
do {
IF ($r[KommentarMail] != ""){
echo ("Text von <ahref=\"mailto:$r[KommentarMail]\">$r[KommentarVon]</a><BR>"); }
Else {
echo ("Text von $r[KommentarVon]<BR>");
}
echo(">> " . $r[Kommentar] . "");
echo("<BR><BR>");
} while ($r = mysql_fetch_array($query));
}
?>
lg rossi

Verfasst: Do 13. Mai 2004, 20:42
von Kathrin77
Super Danke werde es Morgen gleich mal einsetzen.

Verfasst: Mo 17. Mai 2004, 21:53
von Rizzo
Hi. Super Modul. Habs gleich mal eingebaut und funktioniert Super.
Habe nur das Kommentareingabefeld auf Textarea gesetzt, damit die Leute besser sehen können was sie schreiben.
Das modfizierte Eingabemodul:

Code: Alles auswählen

<?php 
echo ("<HR><P>Hier Schreiben<BR><BR>"); 
echo ("<form name=\"bew\" method=\"post\" action=\"$PHP_SELF\">"); 
echo ("<table cellpadding=\"0\" cellspacing=\"0\">"); 
echo ("<tr>"); 
echo ("<td width=\"120\"><P>Wer schreibt?</td>"); 
echo ("<td><input type=\"text\" name=\"name\" value=\"\"></td>"); 
echo ("</tr>"); 
echo ("<tr>"); 
echo ("<td><P>E-Mail</td>"); 
echo ("<td><input type=\"text\" name=\"email\" value=\"\"></td>"); 
echo ("</tr>"); 
echo ("</table><BR>"); 
echo ("<TEXTAREA name=\"kommentar\" value=\"\" cols=10 rows=10  wrap=physical style=width:50%;></TEXT"."AREA>");
echo ("<input type=\"hidden\" name=\"idart\" value=\"$idart\">"); 
echo ("<input type=\"hidden\" name=\"komt\" value=\"do\">"); 
echo (" <input type=\"submit\" name=\"submit\" value=\"Absenden\">"); 
echo ("</form>"); 
if ($kommentar != "") 
{ 
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idart'"); 
while ($kommcount = mysql_fetch_row($kommentarcount)){ 
$kommanzahl = $kommcount[0]; 
} 
$kommentar = strip_tags($kommentar); 
IF ($kommanzahl == "0" or $kommanzahl == "") { 
$rezlfdnr = 1; 
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr, 
Kommentar = '$kommentar', KommentarVon = '$name', KommentarMail = '$email'"); 
} else { 
$rezlfdnr = $kommanzahl + 1; 
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr, 
Kommentar = '$kommentar', KommentarVon = '$name', KommentarMail = '$email'"); 
} 
} 
?> 
Rizzo

Verfasst: Di 18. Mai 2004, 09:55
von maTTos
Ich kanns nur bestätigen. Das Modul funktioniert mit der 4.4.4. Leider hat das Modul eine echte Schwachstelle: Nach dem Absenden wird der Kommentar nicht direkt auf der Seite sichtbar. Erst über ein erneutes Aufrufen der Seite über die Page-Navigation wird der Kommentar sichtbar (also Reload / F5 / Strg+R / Aktualisieren ) zeigen nicht den Kommentar, sondern dupluzieren den Eintrag.

Hat vielleicht ein php-Freak eine Ahnung woran das liegt und kann hier eine Lösung posten? Das wär fein. :wink:

Zudem wärs super, wenn irgendwo ein Zähler über die Anzahl der Kommentare dargestellt werden könnte. Also z.B. hinter der Headline. Kann jemand von Euch helfen? :shock:

Verfasst: Di 18. Mai 2004, 10:37
von 2Code
ungetestet und q&d:

Code: Alles auswählen

//ins Output
if(!isset($_POST['submit'])){

foreach ($_GET as $key=>$value){
    $get.="$key=$value&";
}

header( "location: ".$_SERVER['PHP_SELF']."?$get"); 
}

Verfasst: Di 18. Mai 2004, 11:07
von maTTos
Hi 2Code,

danke für die schnelle Antwort. Leider brachte der Code noch keinen Erfolg. Da es sich bei beiden Modulen um Outputcode handelt, wusste ich nicht, welches Modul ich verwenden sollte (wahrscheinlich in dem "Kommentar schreiben"-Modul). Deswegen besitzen nun beide Module den Code. Muss ich diesen evt. an einer bestimmten Stelle plazieren? So habe ich ihn angewendet:

Kommentare lesen:
<?php

if(!isset($_POST['submit'])){

foreach ($_GET as $key=>$value){
$get.="$key=$value&";
}

header( "location: ".$_SERVER['PHP_SELF']."?$get");
}

$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idart'");
while ($kommcount = mysql_fetch_row($kommentarcount)){
$kommanzahl = $kommcount[0];
}
IF ($kommanzahl > 0) {
echo("<b>Kommentare</b> zu diesem Artikel<hr size=1 color=#666666><BR>");
$sql = "select * from kommentare where ID = $idart order by LfdNr";
$query = mysql_query($sql);
$r = mysql_fetch_array($query);
do {
IF ($r[KommentarMail] != ""){
echo ("&nbsp;&nbsp;&nbsp;<b><a href=\"mailto:$r[KommentarMail]\">$r[KommentarVon]</a></b><BR>"); }
Else {
echo ("&nbsp;&nbsp;&nbsp;<b>$r[KommentarVon]</b><BR>");
}
echo("> <i>" . $r[Kommentar] . "</i>");
echo("<BR><BR>");
} while ($r = mysql_fetch_array($query));
}
?>

Kommentare schreiben:
<?php

if(!isset($_POST['submit'])){

foreach ($_GET as $key=>$value){
$get.="$key=$value&";
}

header( "location: ".$_SERVER['PHP_SELF']."?$get");
}

echo ("<br><b>Kommentar schreiben</b><HR size=1 color=#666666><b>Wichtig:</b> Dein Kommentar wird erst sichtbar, wenn Du die Seite über die Navigation neu aufrufst! Über Reload/Aktualisieren im Browser ist dies nicht möglich.<BR><BR>");
echo ("<form name=\"bew\" method=\"post\" action=\"$PHP_SELF\">");
echo ("<table cellpadding=\"0\" cellspacing=\"0\">");
echo ("<tr>");
echo ("<td width=\"120\"><P>Name:</td>");
echo ("<td><input type=\"text\" name=\"name5\" value=\"\"></td>");
echo ("</tr>");
echo ("<tr>");
echo ("<td><P>E-Mail</td>");
echo ("<td><input type=\"text\" name=\"email5\" value=\"\"></td>");
echo ("</tr>");
echo ("</table><BR>");
echo ("<TEXTAREA name=\"kommentar\" value=\"\" cols=10 rows=5 wrap=physical style=width:360;></TEXT"."AREA>");
echo ("<input type=\"hidden\" name=\"idart\" value=\"$idart\">");
echo ("<input type=\"hidden\" name=\"komt\" value=\"do\">");
echo (" <input type=\"submit\" name=\"submit\" value=\"Absenden\">");
echo ("</form>");
if ($kommentar != "")
{
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idart'");
while ($kommcount = mysql_fetch_row($kommentarcount)){
$kommanzahl = $kommcount[0];
}
$kommentar = strip_tags($kommentar);
IF ($kommanzahl == "0" or $kommanzahl == "") {
$rezlfdnr = 1;
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr,
Kommentar = '$kommentar', KommentarVon = '$name5', KommentarMail = '$email5'");
} else {
$rezlfdnr = $kommanzahl + 1;
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr,
Kommentar = '$kommentar', KommentarVon = '$name5', KommentarMail = '$email5'");
}
}
?>
Vielleicht fällt Dir ja noch etwas ein/auf. Thx! Denn Dialoge sind immer schöner als Monologe. :roll:

Verfasst: Di 18. Mai 2004, 11:14
von emergence
ähm es liegt an der reihenfolge...
das die einträge mittels insert gemacht werden sollte ganz zu beginn des scripts stehen...
erst dann sollte eine weiterleitung gemacht werden...

die richtige reihenfolge wäre also für das eingabe script
zuerst die inserts
dann die abfrage mit location reload
und dann das formular

ich habs jetzt nicht getestet aber es sollte so aussehen:

Code: Alles auswählen

<?php 

if ($kommentar != "") 
{ 
$kommentarcount = MYSQL_QUERY( "SELECT LfdNr FROM kommentare WHERE ID = '$idart'"); 
while ($kommcount = mysql_fetch_row($kommentarcount)){ 
$kommanzahl = $kommcount[0]; 
} 
$kommentar = strip_tags($kommentar); 
IF ($kommanzahl == "0" or $kommanzahl == "") { 
$rezlfdnr = 1; 
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr, 
Kommentar = '$kommentar', KommentarVon = '$name5', KommentarMail = '$email5'"); 
} else { 
$rezlfdnr = $kommanzahl + 1; 
MYSQL_QUERY( "INSERT INTO kommentare set ID = $idart, LfdNr = $rezlfdnr, 
Kommentar = '$kommentar', KommentarVon = '$name5', KommentarMail = '$email5'"); 
} 
} 

if(!isset($_POST['submit'])){ 

foreach ($_GET as $key=>$value){ 
$get.="$key=$value&"; 
} 

header( "location: ".$_SERVER['PHP_SELF']."?$get"); 
} 

echo ("<br><b>Kommentar schreiben</b><HR size=1 color=#666666><b>Wichtig:</b> Dein Kommentar wird erst sichtbar, wenn Du die Seite über die Navigation neu aufrufst! Über Reload/Aktualisieren im Browser ist dies nicht möglich.<BR><BR>"); 
echo ("<form name=\"bew\" method=\"post\" action=\"$PHP_SELF\">"); 
echo ("<table cellpadding=\"0\" cellspacing=\"0\">"); 
echo ("<tr>"); 
echo ("<td width=\"120\"><P>Name:</td>"); 
echo ("<td><input type=\"text\" name=\"name5\" value=\"\"></td>"); 
echo ("</tr>"); 
echo ("<tr>"); 
echo ("<td><P>E-Mail</td>"); 
echo ("<td><input type=\"text\" name=\"email5\" value=\"\"></td>"); 
echo ("</tr>"); 
echo ("</table><BR>"); 
echo ("<TEXTAREA name=\"kommentar\" value=\"\" cols=10 rows=5 wrap=physical style=width:360;></TEXT"."AREA>"); 
echo ("<input type=\"hidden\" name=\"idart\" value=\"$idart\">"); 
echo ("<input type=\"hidden\" name=\"komt\" value=\"do\">"); 
echo (" <input type=\"submit\" name=\"submit\" value=\"Absenden\">"); 
echo ("</form>"); 

?> 

Verfasst: Di 18. Mai 2004, 12:02
von 2Code
hups das hab ich vergessen zu sagen.
Danke emergence:)

Verfasst: Di 18. Mai 2004, 13:01
von maTTos
Hi nochmal,

der Code funktioniert. :D Allerdings mit einer kleinen Einschränkung, die ich noch nicht so ganz verstehe:

Das "Kommentar schreiben"-Modul muss vor dem Modul "Kommentar lesen"-Modul plaziert werden. Dann erfolgt die Anzeige der Kommentare direkt nach dem Absenden. Anders herum ändert sich nichts an dem Problem. Dann muss die Seite erst neu aufgerufen werden.

Wie ist das zu erklären bzw. wie kann Abhilfe geschaffen werden? Werden die Module erst nacheinander ausgeführt. Für den User ist es irritierend, wenn erst das "Kommentar schreiben"-Modul im Anschluss an den Artikel folgt. Hier sollten direkt die Kommentar stehen.

Im Zusammenhang mit diesem Modul wird pro Aufruf der Artikelseite (ohne Abesenden eines Comments) folgender Error-Log-Eintrag erstellt:
[18-May-2004 14:33:53] PHP Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/50372/www.betaweb.de/myfdb/cms/front_content.php(563) : eval()'d code:34) in /is/htdocs/50372/www.betaweb.de/myfdb/cms/front_content.php(563) : eval()'d code on line 303
[18-May-2004 14:33:53] PHP Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/50372/www.betaweb.de/myfdb/cms/front_content.php(563) : eval()'d code:34) in /is/htdocs/50372/www.betaweb.de/myfdb/cms/front_content.php(563) : eval()'d code on line 333
:?:

Aber vielen Dank, damit lässt es sich schon gut ganz gut arbeiten. Was wäre ich ohne Euch :P