Kommentar Modul

Kathrin77
Beiträge: 28
Registriert: Do 18. Mär 2004, 16:58
Kontaktdaten:

Kommentar Modul

Beitrag von Kathrin77 » Fr 23. Apr 2004, 22:50

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)); 
} 
?>


emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 26. Apr 2004, 10:58

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
*** make your own tools (wishlist :: thx)

Kathrin77
Beiträge: 28
Registriert: Do 18. Mär 2004, 16:58
Kontaktdaten:

Beitrag von Kathrin77 » Mo 26. Apr 2004, 17:24

hi


hab die ver 4.4.4

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 26. Apr 2004, 17:54

vermutlich fehlt irgendwo eine geschweifte klammer zu...aber bei DEM code blick ich nicht wirklich durch...

Kathrin77
Beiträge: 28
Registriert: Do 18. Mär 2004, 16:58
Kontaktdaten:

Beitrag von Kathrin77 » Mi 28. Apr 2004, 21:23

HMM finde den fehler nicht und verstehe nicht warum mir das anzeinegn modul nichts anzeigt

Kathrin77
Beiträge: 28
Registriert: Do 18. Mär 2004, 16:58
Kontaktdaten:

Beitrag von Kathrin77 » Do 13. Mai 2004, 19:25

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:

rossi
Beiträge: 35
Registriert: Mo 22. Mär 2004, 18:09
Kontaktdaten:

Beitrag von rossi » Do 13. Mai 2004, 20:24

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

Kathrin77
Beiträge: 28
Registriert: Do 18. Mär 2004, 16:58
Kontaktdaten:

Beitrag von Kathrin77 » Do 13. Mai 2004, 20:42

Super Danke werde es Morgen gleich mal einsetzen.

Rizzo
Beiträge: 3
Registriert: Mo 17. Mai 2004, 21:46
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von Rizzo » Mo 17. Mai 2004, 21:53

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

maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos » Di 18. Mai 2004, 09:55

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:

2Code
Beiträge: 73
Registriert: So 4. Jan 2004, 11:24
Kontaktdaten:

Beitrag von 2Code » Di 18. Mai 2004, 10:37

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"); 
}

maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos » Di 18. Mai 2004, 11:07

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:

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 18. Mai 2004, 11:14

ä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>"); 

?> 
*** make your own tools (wishlist :: thx)

2Code
Beiträge: 73
Registriert: So 4. Jan 2004, 11:24
Kontaktdaten:

Beitrag von 2Code » Di 18. Mai 2004, 12:02

hups das hab ich vergessen zu sagen.
Danke emergence:)

maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag von maTTos » Di 18. Mai 2004, 13:01

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

Gesperrt