ich habe mal das Modul für das Kommentieren von Artikeln von der Download-Seite angepasst. Folgende Sachen habe ich eingebaut bzw. verändert:
- es ist nur noch ein Modul, dass das Schreiben und lesen von Kommentaren vereint und es somit zum beispiel sehr leicht macht, nach dem schreiben des Kommentars die anderen Kommentare anzuzeigen
- zusammenfassung der bewertungen zu einer Ministatistik am ende der kommentare in form eines balkendiagramms
- Datenbankanbindung ist nun auf die Datenbank-Klasse von Contenido umgestellt
- die Tabelle der Datenbank wurde verbessert
- die DB-Abfragen basieren nun auf einer Variable für den Tabellennamen
Eingabe:
Code: Alles auswählen
echo "
Kommentieren dieses Artikels:<br />
<input type=\"radio\" value=\"yes\" name=\"CMS_VAR[1]\" id=\"CMS_VAR[1]\""; if ("CMS_VALUE[1]"=="yes") {echo " checked"; }echo " /> erlauben <br />
<input type=\"radio\" value=\"no\" name=\"CMS_VAR[1]\" id=\"CMS_VAR[1]\""; if ("CMS_VALUE[1]"=="no") {echo " checked"; }echo " /> nicht erlauben";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname: Kommentarmodul mit Bewertungssystem
* Author: Christoph Preusche modifiziert von Jan P. Heck
* Copyright: Contenido - four for business / www.hiphop-pott.de
* Created: 21-07-2004
* Modified: 25-02-2005
************************************************/
$dbConnect = new DB_Contenido;
function checkMail($email) // Checkt, ob Emails gültig sind
{
$nonascii = "\x80-\xff"; # Non-ASCII-Chars are not allowed
$nqtext = "[^\\\\$nonascii\015\012\"]";
$qchar = "\\\\[^$nonascii]";
$protocol = '(?:mailto:)';
$normuser = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
$quotedstring = "\"(?:$nqtext|$qchar)+\"";
$user_part = "(?:$normuser|$quotedstring)";
$dom_mainpart = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
$dom_subpart = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
$dom_tldpart = '[a-zA-Z]{2,5}';
$domain_part = "$dom_subpart$dom_mainpart$dom_tldpart";
$regex = "$protocol?$user_part\@$domain_part";
return preg_match("/^$regex$/",$email);
}
$bewertungsBegriff[0] = "schlecht";
$bewertungsBegriff[1] = "geht so";
$bewertungsBegriff[2] = "ganz gut";
$bewertungsBegriff[3] = "gut";
$bewertungsBegriff[4] = "empfehlenswert";
//Wenn die Kommentarfunktion nicht durch die Template-konfiguration ausgeschaltet ist.
if ("CMS_VALUE[1]" != "no")
{
echo "<br />";
if($_GET['kommentarFunktion']=="add")
{
if (isset($_REQUEST['submit']))
{
$kommentar = strip_tags($_REQUEST['kommentar']);
$name = strip_tags($_REQUEST['name']);
$email = strip_tags($_REQUEST['email']);
$bewertung=$_REQUEST['bewertung'];
if(!checkMail($email))
{
echo "Die von Ihnen angegebene eMail-Adresse ist falsch.";
}
elseif ($kommentar=="" || $name=="" || $bewertung=="")
{
echo "Sie müssen alle Felder ausfüllen.";
}
else
{
$query="INSERT INTO ".$cfg["tab"]["kommentare"]." (ID,Kommentar, KommentarVon, KommentarMail, Bewertung, TIMESTAMP)
VALUES ('$idart','$kommentar', '$name', '$email', '$bewertung', '".time()."')";
if($dbConnect->query($query))
{
echo "<b>Herzlichen Dank für den Kommentar.</b><br /><br />";
}
else
{
echo "Fehler beim Hinzufügen des Kommentares.";
}
}
}
else
{
echo ("<form name=\"bew\" method=\"post\" action=\"".$_SERVER['REQUEST_URI']."\">");
echo ("<table width=\"433\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td>Bewerte den Artikel!<br>
Fülle einfach das folgende Formular vollständig aus und gib dein
Kommentar ab.</td>
</tr>
<tr>
<td style=\"height:10px;\"></td>
</tr>
<tr>
<td>
<table width=\"433\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\" bgcolor=\"#999999\">
<tr>
<td width=\"200\" bgcolor=\"#CCCCCC\"><b>Dein Name:</b></td>
<td width=\"233\" bgcolor=\"#CCCCCC\">
<input type=\"text\" class=\"Kommentar\" name=\"name\">
</td>
</tr>
<tr bgcolor=\"#eeeeee\">
<td width=\"200\"><b>Deine eMail-Adresse:</b></td>
<td width=\"233\">
<input type=\"text\" class=\"Kommentar\" name=\"email\">
</td>
</tr>
<tr>
<td width=\"200\" bgcolor=\"#CCCCCC\" valign=\"top\"><b>Deine Bewertung:</b><br>
<font color=\"#666666\" size=\"1\">Vergib bis zu sechs Kronen
für den Artikel. Eine Krone ist schlecht, sechs Kronen sind
absolut empfehlenswert.</font></td>
<td width=\"233\" bgcolor=\"#CCCCCC\">
<select name=\"bewertung\" class=\"Kommentar\" size=\"1\">
<option selected>Bitte wählen...</option>");
for($i=0;$i<count($bewertungsBegriff);$i++)
{
echo "<option value=\"$i\">".$bewertungsBegriff[$i]."</option>\n";
}
echo ("</select>
</td>
</tr>
</table>
<br /><br />
<table width=\"433\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\" bgcolor=\"#999999\">
<tr>
<td bgcolor=\"#CCCCCC\" width=\"190\" valign=\"top\"><b>Dein Kommentar:</b><br>
<font size=\"1\" color=\"#666666\">Bitte achte auf deine Ausdrucksweise
und deine Rechtschreibung.</font></td>
<td bgcolor=\"#CCCCCC\" width=\"228\" valign=\"top\">
<textarea name=\"kommentar\" class=\"Kommentar\" wrap=\"VIRTUAL\" rows=\"6\" cols=\"25\"></textarea>
</td>
</tr>
</table>
<br />
<table width=\"433\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
<tr>
<td>
<div align=\"right\"><input type=\"hidden\" name=\"idart\" value=\"$idart\"><input type=\"hidden\" name=\"komt\" value=\"do\">
<input type=\"submit\" class=\"Kommentar_Button\" name=\"submit\" value=\"Kommentar absenden\">
</div>
</td>
</tr>
</table>
</td>
</tr>
</table></form>");
}
}
if($_GET['kommentarFunktion']=="show" || ($_GET['kommentarFunktion']=="add" && isset($_REQUEST['submit'])))
{
//Kommentare anzeigen
$query="SELECT * FROM ".$cfg["tab"]["kommentare"]." where ID = '$idart' order by TIMESTAMP DESC";
$dbConnect->query($query);
while ($dbConnect->next_record())
{
echo "<b>Kommentar von:</b> <a href=\"mailto:".$dbConnect->f("KommentarMail")."\">".$dbConnect->f("KommentarVon")."</a> (".date("d.m.Y H:i:s",$dbConnect->f("TIMESTAMP")).")<br>";
echo "<b>Bewertung:</b> ",$bewertungsBegriff[$dbConnect->f("Bewertung")]."<br />";
echo "<b>Kommentar:</b> ".$dbConnect->f("Kommentar");
echo "<br><hr style=\"width:80%;color:red;\" noshade>";
}
$summe = 0;
for($i=0;$i<count($bewertungsBegriff);$i++)
{
$query="SELECT COUNT(ID) as anzahl FROM ".$cfg["tab"]["kommentare"]." where ID = '$idart' and Bewertung = '$i'";
$dbConnect->query($query);
$dbConnect->next_record();
$stimmen[$i] = $dbConnect->f("anzahl");
$summe+=$dbConnect->f("anzahl");
}
echo "<table><tr><td colspan=3><b>Bewertungszusammenfassung</b></td></tr>";
for($i=0;$i<count($bewertungsBegriff);$i++)
{
if($stimmen[$i]>0)
{
$proz =number_format ($stimmen[$i]/$summe*100,2);
$breite = number_format ($stimmen[$i]/$summe*100,0);
echo "<tr><td>".$bewertungsBegriff[$i]."</td><td style=\"width:100px\" valign=\"middle\"><div style=\"width:$breite px; background-color: red;height: 15px;\"> </div></td><td>".$proz." %</td></tr>";
}
}
echo "</table>";
echo "<a href=\"".$_SERVER['REQUEST_URI']."&kommentarFunktion=add\" title=\"Artikel kommentieren\">Artikel kommentieren</a><br />";
}
else if($_REQUEST['kommentarFunktion']=="")
{
//ANzeigen der Auswahl
echo "<a href=\"".$_SERVER['REQUEST_URI']."&kommentarFunktion=add\" title=\"Artikel kommentieren\">Artikel kommentieren</a><br />";
$query = "SELECT COUNT(ID) as anzahl from ".$cfg["tab"]["kommentare"]." where ID='$idart'";
$dbConnect->query($query);
$dbConnect->next_record();
if($dbConnect->f("anzahl")>0)
{
echo "<a href=\"".$_SERVER['REQUEST_URI']."&kommentarFunktion=show\" title=\"Artikel kommentieren\">".$dbConnect->f("anzahl")." Kommentare lesen</a><br />";
}
}
}
?>
Grüße
Jan[/list]