input-script
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.voting.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 21-07-2004
* Modified : 21-07-2004
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";
echo "<tr><td>Voting einschalten:</td>";
if ("CMS_VALUE[0]" == 1) {
echo "<td><div><input type=\"radio\" name=\"CMS_VAR[0]\" value=\"1\" checked=\"checked0\"/> ja</div>
<div><input type=\"radio\" name=\"CMS_VAR[0]\" value=\"0\" /> nein</div></td></tr>";
} else {
echo "<td><div><input type=\"radio\" name=\"CMS_VAR[0]\" value=\"1\" /> ja</div>
<div><input type=\"radio\" name=\"CMS_VAR[0]\" value=\"0\" checked=\"checked0\"/> nein</div></td></tr>";
}
echo "</table>";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
$this->aufdroeseln($this->suppress('sent'));
$this->generateEmailMessage();
mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion());
}
// PRIVATE
function aufdroeseln($aufzudroeseln,$prefix = '') {
foreach ($aufzudroeseln as $key => $value) {
if (is_array($value)) {
$this->aufdroeseln($value,$key." ");
} else {
$this->aufgedroeselt["{$prefix}{$key}"] = $value;
}
}
}
// PRIVATE
function add2Message($key,$value) {
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',25-strlen($key));
$this->email['message'] .= "$value\n";
}
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
}
}
// PRIVATE
function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key,$suppress) === false) $fields[$key] = $value;
}
return $fields;
}
// PUBLIC
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
// PUBLIC
function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
// PUBLIC
function setEmailFrom($email,$name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
// PUBLIC
function setForm($form) {
$this->form['form'] = $form;
}
// PUBLIC
function setAnswer($answer) {
$this->form['answer'] = $answer;
}
// PUBLIC
function setBackgroundError($color) {
$this->form['colorError'] = $color;
}
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###',$formular);
for ($i=1;$i<count($felder);$i=$i+2) {
$attributte = split(';',trim($felder[$i]));
foreach ($attributte as $attribut) {
$namewert = split(':',trim($attribut));
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
return $feld;
}
// PRIVATE
function formularAusgabe($sent = false) {
echo '<form action="" method="POST">';
echo '<input type="hidden" name="sent" value="true" />';
$formular = $this->form['form'];
$formulardaten = $this->formularInterpretation(&$formular);
$formular = split('###',$formular);
foreach ($formular as $formularteil) {
if (!empty($formulardaten["{$formularteil}"])) {
$this->formularFeld($formulardaten["{$formularteil}"],$sent);
} else {
echo $formularteil;
}
}
echo '</form>';
}
// PRIVATE
function formularFeld($attribute,$sent) {
$parameter = "name=\"{$attribute['name']}\"";
if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
if (!empty($attribute['value'])) $value = $attribute['value'];
if (!empty($_POST["{$attribute['name']}"])) $value = $_POST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'text':
echo "<input type=\"text\" $parameter value=\"$value\" $style />";
break;
case 'password':
echo "<input type=\"password\" $parameter value=\"$value\" $style />";
break;
case 'textarea':
echo "<textarea name=\"{$attribute['name']}\" cols=\"";
echo (empty($attribute['cols']))?('20'):($attribute['cols']);
echo "\" rows=\"";
echo (empty($attribute['rows']))?('2'):($attribute['rows']);
echo "\" wrap=\"virtual\" $style>$value</textarea>";
break;
case 'select':
echo "<select $parameter $style>";
for ($i=0;$i<count($attribute['option']);$i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
}
}
} else {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option>{$attribute['option'][$i]}</option>\n";
}
}
}
}
echo "</select>";
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
if ($sent) {
if ($_POST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
case 'radio':
if (!empty($_POST["{$attribute['name']}"])) {
if ($_POST["{$attribute['name']}"] == $attribute['value']) {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
}
}
// PRIVATE
function formularVollstaendig() {
$formular = $this->form['form'];
$felder = $this->formularInterpretation(&$formular);
foreach ($felder as $feld) {
if (!$this->formularFeldKorrekt(&$feld)) return false;
}
return true;
}
// PRIVATE
function success() {
$this->sendEmail();
echo $this->form['answer'];
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) return false;
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST["{$feld['name']}"])) return true;
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[ öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false;
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success($value);
} else {
$this->formularAusgabe(true);
}
}
}
class voting extends w3form {
var $idart;
function success() {
$db = new DB_Contenido;
$db->query("
SELECT pk_voting FROM w3concepts_voting
WHERE
ip = '{$_SERVER['REMOTE_ADDR']}'
AND DATE_ADD(time,INTERVAL 30 DAY) > NOW()
AND fk_idart = {$this->idart}
");
if (!$db->next_record()) {
$db->query("
INSERT INTO w3concepts_voting
(fk_idart,ip,time,vote)
VALUES
({$this->idart},'{$_SERVER['REMOTE_ADDR']}',NOW(),{$_POST['vote']})
");
echo $this->form['answer'];
} else {
echo $this->form['doubleVoteAnswer'];
}
}
function setIdart($idart) {
$this->idart = $idart;
}
function setDoubleVoteAnswer($answer) {
$this->form['doubleVoteAnswer'] = $answer;
}
}
if ("CMS_VALUE[0]" == 1) {
$db->query("
SELECT AVG(vote) AS average, count(*) AS anzahl FROM w3concepts_voting
WHERE
fk_idart = $idart
");
if ($db->next_record()) {
$anzahl = $db->f("anzahl");
$average = number_format($db->f("average"),1);
echo "
<table style=\"width:152px\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td style=\"background-color:#4EC0FF; width:15px; color:white; text-align:center\"></td>
<td style=\"padding-top:3px; padding-left:4px; padding-bottom:3px; background-color:#EEEEEE\">
Dieser Artikel wurde bisher $anzahl mal mit durchschnittlich $average bewertet (auf einer Skala von 1 bis 5).
</td></tr>
</table>
";
}
$formular = new voting();
$formular->setIdart($idart);
$formular->setForm('
<table style="width:152px" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; background-color:#EEEEEE">
<strong>Artikelbewertung</strong>
</td></tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; background-color:#EEEEEE">
Wie beurteilen Sie diesen Artikel?
</td></tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; padding-bottom:3px; background-color:#EEEEEE">
###name:vote; valid:integer; type:select; minvalue:1; option:bitte auswählen; option:sehr gut; option:gut; option:brauchbar; option:schlecht; option:sehr schlecht; optionvalue:0; optionvalue:5; optionvalue:4; optionvalue:3; optionvalue:2; optionvalue:1###
</td></tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; padding-bottom:3px; background-color:#EEEEEE">
<input type="submit" value="bewerten" />
</td></tr>
</table>
');
$formular->setAnswer('
<table style="width:152px" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; background-color:#EEEEEE">
<strong>Vielen Dank</strong>
</td></tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; padding-bottom:3px; background-color:#EEEEEE">
Vielen Dank, dass Sie an der Bewertung dieses Artikels teilgenommen haben. Ihre Stimme ist
erfolgreich eingegangen und findet sich im angezeigten Resultat repräsentiert.
</td></tr>
</table>
');
$formular->setDoubleVoteAnswer('
<table style="width:152px" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; background-color:#EEEEEE">
<strong>Mehrfachteilnahme</strong>
</td></tr>
<tr>
<td style="background-color:#4EC0FF; width:15px; color:white; text-align:center"></td>
<td style="padding-top:3px; padding-left:4px; padding-bottom:3px; background-color:#EEEEEE">
In der Datenbank liegt bereits ein Eintrag mit Ihrer IP-Adresse für diesen Artikel vor. Ihre Stimmabgabe
muss deshalb ignoriert werden.
</td></tr>
</table>
');
$formular->process();
}
?>
Code: Alles auswählen
CREATE TABLE w3concepts_voting (
pk_voting int(10) unsigned NOT NULL auto_increment,
fk_idart int(10) unsigned NOT NULL default '0',
ip varchar(15) NOT NULL default '',
time date NOT NULL default '0000-00-00',
vote tinyint(4) NOT NULL default '0',
PRIMARY KEY (pk_voting)
) TYPE=MyISAM;
http://www.w3concepts.net/1/1/51/130.html
die tabelle heisst zur zeit w3concepts_voting, kann allerdings problemlos umbenannt werden. dann einfach im output-script nach w3concepts_voting suchen und durch den neuen tabellennamen ersetzen.
für fragen stehe ich zur verfügung.
gruss,
andreas