Kommentar-Modul erneuert

Gesperrt
jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Kommentar-Modul erneuert

Beitrag von jph »

Hallo,
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";
Ausgabe

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&uuml;lle einfach das folgende Formular vollst&auml;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&uuml;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&auml;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;\">&nbsp;</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]
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

nur ne kleine anmerkung
$_SERVER['REQUEST_URI'] wird auf einem iis nicht funktinieren, da die variable dort nicht zur verfügung steht...
*** make your own tools (wishlist :: thx)
jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Beitrag von jph »

$_SERVER['REQUEST_URI']:
das drückt wohl meine Persönliche Neigung gegen M$ aus.. ;-)

Danke für den Hinweis. man lernt nie aus. Funktioniert den sowas wie $_SERVER['SCRIPT_Filename']?
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ne wirklich gute auflistung findest du hier
-> http://www.koivi.com/apache-iis-php-server-array.php
*** make your own tools (wishlist :: thx)
jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Beitrag von jph »

genau soetwas meinte ich super, kommt sofort in meine Bookmarks;-)

aber mal ehrlich: wieviel % nutzen den hier einen WAMP auf Basis von IIS? Würde mich wirklich mal interessieren, weil im allgemeinen ist der IIS im Webserver bereich ja eher eine Nullnummer, wenn es um PHP geht.
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

jph hat geschrieben:genau soetwas meinte ich super, kommt sofort in meine Bookmarks;-)

aber mal ehrlich: wieviel % nutzen den hier einen WAMP auf Basis von IIS? Würde mich wirklich mal interessieren, weil im allgemeinen ist der IIS im Webserver bereich ja eher eine Nullnummer, wenn es um PHP geht.
das kommt immer auf die server umgebung des kunden an...
habe selbst mindestens 10 mandanten auf iis. selbst verwend ich apache...
wieviele das ansonsten verwenden ist somit eigentlich egal...
tatsache ist und bleibt dass das modul dort nicht laufen würde...
*** make your own tools (wishlist :: thx)
jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Beitrag von jph »

Du hast ja auch vollkommen recht mit deinem Hinweis! Ich habe mich nur bisher - vielleicht auch einfach weil kein Bedarf da war - noch nie mit dem Thema IIS und PHP auseinander gesetzt, da alle PHP-Anwendungen was ich bisher geschrieben habe immer nur auf Apache zum Einsatz kamen.
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

jph hat geschrieben:...mit dem Thema IIS und PHP auseinander gesetzt...
ich krieg immer bauchweh wenn ich es mit einem iis zu tun habe...
geil ist dann nur mehr wenn ich dann noch auf dem selben server php 4.0.6 zur verfügung habe... :evil:
*** make your own tools (wishlist :: thx)
jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Beitrag von jph »

zu meinem Schulzeiten habe ich unsere Schulseite gemacht. die haben heute immer noch PHP 3.06 (!) auf dem Server.. Ich habe etwa 20 mal da angerufen und andauernd gemailt, aber die waren nicht in der lage den server upzudaten!!!
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2
Gesperrt