Fehler Umfrage-Modul

Gesperrt
ImmoF
Beiträge: 175
Registriert: Do 26. Jun 2003, 18:33
Kontaktdaten:

Fehler Umfrage-Modul

Beitrag von ImmoF » Fr 7. Nov 2003, 22:32

Ich habe mal das Umfrage-Modul installiert und habe (neben vielen HTML-Fehlern) einen Fehler/Warning, den ich nicht finden kann, der mir aber die Error-Log vollschreibt:

"[07-Nov-2003 22:33:42] PHP Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/www/xxxx/html/contenido/xxxxx/front_content.php(533) : eval()'d code on line 834"

Der "Modul-Debugger" zeigt mir "gruen". Der Fehler wird jedes Mal beim Aufruf des Moduls durch das Frontend geschrieben. Was wird dabei genau gecheckt: Input und Output oder nur Output?

Der Output-Bereich:
<?php
echo "<table class=tiny width=100% cellpadding=0 cellspacing=0 border=0>";

echo "<form style=\"display:inline\" action=\"".$auth->url()."\" method=\"post\" >";

if($button1!="Abstimmen"){

//---------------------------- Umfrage aus der DB auslesen -----------------------------------
$db = new DB_Contenido;
$db->query('SELECT * FROM umfragen WHERE `Frage` = \'CMS_VALUE[0]\'');
$db->next_record();
$frage = $db->f("Frage");
$antwort1 = $db->f("zaehlung1");
$antwort2 = $db->f("zaehlung2");
$antwort3 = $db->f("zaehlung3");
$antwort4 = $db->f("zaehlung4");
$antwort5 = $db->f("zaehlung5");
$antwort6 = $db->f("zaehlung6");

//--------------- Fragen und Antwortmöglichkeiten darstellen ---------------------------------
echo "<tr><td height=\"15\" >$frage</td>
</tr>
<tr>
<td class=tiny ><input value=\"1\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort1."</td>
</tr>
<tr>
<td class=tiny ><input value=\"2\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort2."</td>
</tr>";

//sollte ein Feld nicht belegt worden sein wird es weggelassen, für Umfragen mit weniger als 6 Antwortmöglichkeiten
if($antwort3 !=" ")
echo "<tr>
<td class=tiny ><input value=\"3\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort3."</td>
</tr>";
if($antwort4!=" ")
echo "<tr>
<td class=tiny ><input value=\"4\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort4."</td>
</tr>";
if($antwort5!=" ")
echo "<tr>
<td class=tiny ><input value=\"5\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort5."</td>
</tr>";
if($antwort6!=" ")
echo "<tr>
<td class=tiny ><input value=\"6\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort6."</td>
</tr>";
echo "<tr>
<td class=tiny >&nbsp;</td>
</tr>
<tr>
<td class=tiny ><center><input type=\"submit\" name=\"button1\" value=\"Abstimmen\" class=input3><br>
</tr>";

echo "<tr><td class=tiny >";

}else{

//----------------------------- Datenbank auswertung ----------------------------------------
$db = new DB_Contenido;
$db->query('SELECT * FROM umfragen WHERE `Frage` = \'CMS_VALUE[0]\'');
$db->next_record();
$frage = $db->f("Frage");
$ergeb1 = $db->f("ergebnis1");
$ergeb2 = $db->f("ergebnis2");
$ergeb3 = $db->f("ergebnis3");
$ergeb4 = $db->f("ergebnis4");
$ergeb5 = $db->f("ergebnis5");
$ergeb6 = $db->f("ergebnis6");
switch($Radio1){
case 1 : {
$ergeb1++;
break;
}
case 2 : {
$ergeb2++;
break;
}
case 3 : {
$ergeb3++;
break;
}
case 4 : {
$ergeb4++;
break;
}
case 5 : {
$ergeb5++;
break;
}
case 6 : {
$ergeb6++;
break;
}
}

//--------------------------- Darstellung im Balkendiagramm ----------------------------------
$gesamt = $ergeb1+$ergeb2+$ergeb3+$ergeb4+$ergeb5+$ergeb6;
echo "<tr><td class=tiny ><center><b>Ergebnis:</b> CMS_VALUE[0]</center><br></td></tr>";

echo "<tr><td class=tiny >";

if($ergeb1!="0") $farbe1= "bgcolor=\"cornflowerblue\"";
echo "<b>CMS_VALUE[1] </b>";
echo "<table><tr><td ".$farbe1." class=tiny width=\"";
echo (300*$ergeb1)/$gesamt;
$prozent = (100*$ergeb1)/$gesamt;
echo "\">&nbsp;</td><td class=tiny nowrap >".round($prozent, 2)." % </td></tr>";
echo "</table><br>";

echo "</td></tr><tr><td class=tiny >";


if($ergeb2!="0") $farbe2= "bgcolor=\"skyblue\"";
echo "<b>CMS_VALUE[2] </b>";
echo "<table><tr><td ".$farbe2." class=tiny width=\"";
echo (300*$ergeb2)/$gesamt;
$prozent = (100*$ergeb2)/$gesamt;
echo "\">&nbsp;</td><td class=tiny >".round($prozent, 2)." % </td></tr>";
echo "</table><br>";

echo "</td></tr><tr><td class=tiny >";

if("CMS_VALUE[3]"!=" "){
if($ergeb3!="0") $farbe3= "bgcolor=\"lightskyblue\"";
echo "<b>CMS_VALUE[3]</b>";
echo "<table><tr><td ".$farbe3." class=tiny width=\"";
echo (300*$ergeb3)/$gesamt;
$prozent = (100*$ergeb3)/$gesamt;
echo "\">&nbsp;</td><td class=tiny >".round($prozent, 2)." % </td></tr>";
echo "</table><br>";
}

echo "</td></tr><tr><td class=tiny >";


if("CMS_VALUE[4]"!=" "){
if($ergeb4!="0") $farbe4= "bgcolor=\"lightblue\"";
echo "<b>CMS_VALUE[4]</b>";
echo "<table><tr><td ".$farbe4." class=tiny width=\"";
echo (300*$ergeb4)/$gesamt;
$prozent = (100*$ergeb4)/$gesamt;
echo "\">&nbsp;</td><td class=tiny >".round($prozent, 2)." % </td></tr>";
echo "</table><br>";
}

echo "</td></tr><tr><td class=tiny >";

if("CMS_VALUE[5]"!=" "){
if($ergeb5!="0") $farbe5= "bgcolor=\"lightsteelblue\"";
echo "<b>CMS_VALUE[5]</b>";
echo "<table><tr><td ".$farbe5." class=tiny width=\"";
echo (300*$ergeb5)/$gesamt;
$prozent = (100*$ergeb5)/$gesamt;
echo "\">&nbsp;</td><td class=tiny >".round($prozent, 2)." % </td></tr>";
echo "</table><br>";
}

echo "</td></tr><tr><td class=tiny >";


if("CMS_VALUE[6]"!=" "){
if($ergeb6!="0") $farbe6= "bgcolor=\"darkgray\"";
echo "<b>CMS_VALUE[6]</b>";
echo "<table><tr><td ".$farbe6." class=tiny width=\"";
echo (300*$ergeb6)/$gesamt;
$prozent = (100*$ergeb6)/$gesamt;
echo "\">&nbsp;</td><td class=tiny >".round($prozent, 2)." % </td></tr>";
echo "</table>";
}


//------------------------- Speichern der neuen Ergebnisse in der DB -------------------------
$sql = 'SELECT `umfragenid` FROM `umfragen` WHERE 1 AND `Frage` = \'CMS_VALUE[0]\' LIMIT 0, 30';
$db->query($sql);
$ID = $db->f("umfragenid");

$sql = 'REPLACE INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `zaehlung6`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `ergebnis6`) VALUES (\''.$ID.'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\', \'CMS_VALUE[5]\', \'CMS_VALUE[6]\', \''.$ergeb1.'\', \''.$ergeb2.'\', \''.$ergeb3.'\', \''.$ergeb4.'\', \''.$ergeb5.'\', \''.$ergeb6.'\');'; \');';
$db->query($sql);
}


echo "</td></tr></form></table>";

?>
btw: gibts eigentlich eine Moeglichkeit, die Error-Log-Aufzeichnung abzustellen bzw. keine Warnings aufzuzeichnen?

Gruss
Immo

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

Beitrag von emergence » So 9. Nov 2003, 19:13

was steht bei dir im input bereich ?

ImmoF
Beiträge: 175
Registriert: Do 26. Jun 2003, 18:33
Kontaktdaten:

Beitrag von ImmoF » So 9. Nov 2003, 19:18

Input
echo " <table>";

$db = new DB_Contenido;
switch($button1){

//-------------------------- Speichern der Daten in die Tabelle ------------------------------
case "Speichern" : {
if("CMS_VALUE[3]" =="") $eintrag3 = " "; else $eintrag3 = "CMS_VALUE[3]";
if("CMS_VALUE[4]" =="") $eintrag4 = " "; else $eintrag4 = "CMS_VALUE[4]";
if($CMS_VAR[5] =="") $eintrag5 = " "; else $eintrag5 = $CMS_VAR[5];
if($CMS_VAR[6] =="") $eintrag6 = " "; else $eintrag6 = $CMS_VAR[6];
$sql = 'INSERT INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `zaehlung6`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `ergebnis6`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \''.$eintrag3.'\', \''.$eintrag4.'\', \''.$eintrag5.'\', \''.$eintrag6.'\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\');'; \');';
$db->query($sql);
break;
}
case "Auswählen" : {

//--------------------------- Auswählen der gewünschten Frege --------------------------------
$db->query('SELECT * FROM umfragen WHERE `Frage` = \''.$CMS_VAR[7].'\'');
$db->next_record();
$frage = $db->f("Frage");
$edit1 = $db->f("zaehlung1");
$edit2 = $db->f("zaehlung2");
$edit3 = $db->f("zaehlung3");
$edit4 = $db->f("zaehlung4");
$edit5 = $db->f("zaehlung5");
$edit6 = $db->f("zaehlung6");
break;
}
}

echo "<tr>
<td>&nbsp;</td>
<td></td>
</tr>";
echo " <tr>
<td>Frage :</td>
<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"";
if($frage=="") echo "CMS_VALUE[0]"; else echo $frage;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 1 :</td>
<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"";
if($edit1=="") echo "CMS_VALUE[1]" ; else echo $edit1;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 2 :</td>
<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"";
if($edit2=="") echo "CMS_VALUE[2]" ; else echo $edit2;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 3 :</td>
<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"";
if($edit3=="") echo "CMS_VALUE[3]" ; else echo $edit3;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 4 :</td>
<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"";
if($edit4=="") echo "CMS_VALUE[4]" ; else echo $edit4;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 5 :</td>
<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"";
if($edit5=="") echo "CMS_VALUE[5]" ; else echo $edit5;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 6 :</td>
<td><input type=\"text\" name=\"CMS_VAR[6]\" value=\"";
if($edit6=="") echo "CMS_VALUE[6]" ; else echo $edit6;
echo "\"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"button1\" value=\"Speichern\"></td>
</tr>
<tr>
<td colspan=\"2\"><center>";

//---------------------- darstellung in einer drop-down Liste --------------------------------
$db = new DB_Contenido;
if($db->query("SELECT * FROM umfragen")){
for($i=1;$i<=$db->num_rows();$i++){
$db->next_record();
$tab = "tab".$i;
$$tab = $db->f("Frage");
}
}else{
$sql = 'CREATE TABLE `umfragen` ( `umfragenid` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `Frage` TEXT NOT NULL, `zaehlung1` TEXT NOT NULL, `zaehlung2` TEXT NOT NULL, `zaehlung3` TEXT NOT NULL, `zaehlung4` TEXT NOT NULL, `zaehlung5` TEXT NOT NULL, `zaehlung6` TEXT NOT NULL, `ergebnis1` INT(15) NOT NULL, `ergebnis2` INT(15) NOT NULL, `ergebnis3` INT(15) NOT NULL, `ergebnis4` INT(15) NOT NULL, `ergebnis5` INT(15) NOT NULL, `ergebnis6` INT(15) NOT NULL );';
$db->query($sql);
}
echo "<select name=\"CMS_VAR[7]\" size=\"1\">";
if($CMS_VAR[7]!="")echo "<option value=\"$CMS_VAR[7]\">".$CMS_VAR[7]."</option>";
for($i=1;$i<=$db->num_rows();$i++){
$tab = "tab".$i;
if(!isset($CMS_VAR[7]))echo "<option value=\"".$$tab."\">".$$tab."</option>";
if(isset($CMS_VAR[7])) if($$tab!=$CMS_VAR[7])echo "<option value=\"".$$tab."\">".$$tab."</option>";
}
echo "</select>" ;

echo " <input type=\"submit\" name=\"button1\" value=\"Auswählen\"></td>
</tr>";

echo "</table>";

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

Beitrag von emergence » So 9. Nov 2003, 20:09

zwei fehler...

jeweils bei den sql querys

im input bereich anstelle des querys (zeile 12) folgendes verwenden:

Code: Alles auswählen

$sql = 'INSERT INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `zaehlung6`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `ergebnis6`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \''.$eintrag3.'\', \''.$eintrag4.'\', \''.$eintrag5.'\', \''.$eintrag6.'\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\');';
im output bereich beim query zeile (177) folgendes verwenden:

Code: Alles auswählen

$sql = 'REPLACE INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `zaehlung6`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `ergebnis6`) VALUES (\''.$ID.'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\', \'CMS_VALUE[5]\', \'CMS_VALUE[6]\', \''.$ergeb1.'\', \''.$ergeb2.'\', \''.$ergeb3.'\', \''.$ergeb4.'\', \''.$ergeb5.'\', \''.$ergeb6.'\');';
ich weiss zwar auch nicht warum aber am ende deiner querys war folgender teil zu viel des guten: \');';

und siehe da die warnings sind aus dem errorlog entschwunden...

ImmoF
Beiträge: 175
Registriert: Do 26. Jun 2003, 18:33
Kontaktdaten:

Beitrag von ImmoF » So 9. Nov 2003, 20:26

si - es funzt :oops:

jetzt verrat mir doch noch, wie ich zukuenftig so einen fehler finde, ohne mich dumm zu suchen - gibts da vielleicht eine editor-empfehlung oder aehnliches?

das modul muesste an sich vom contenido.de-modul-download (vorgestern) stammen, bis auf die html-aenderungen. vielleicht waere es gut, das modul dort noch einmal geaendert einzuspielen.

immo

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

Beitrag von emergence » So 9. Nov 2003, 20:40

ImmoF hat geschrieben:jetzt verrat mir doch noch, wie ich zukuenftig so einen fehler finde, ohne mich dumm zu suchen - gibts da vielleicht eine editor-empfehlung oder aehnliches?
du wirst lachen ich verwende einen ganz normalen texteditor mit syntax highlighting... [MED 2.73] - fehler anzeigen tut er mir leider auch nicht...
zum debuggen von contenido modulen benötigte ich die errorlog.txt

ich hab nichts anderes gemacht wie das modul bei meinem testsystem reinzuspielen und gleich nach dem speichern ins errorlog gesehen.
dort scheinen die php warnings (falls vorhanden) sofort auf.

bei mir hat das so ausgesehen:

Code: Alles auswählen

[09-Nov-2003 19:52:09] PHP Warning:  Unexpected character in input:  '\' (ASCII=92) state=1 in e:\contenido_4.4.1\contenido\includes\functions.mod.php(148) : eval()'d code on line 12
[09-Nov-2003 19:52:09] PHP Warning:  Unexpected character in input:  '\' (ASCII=92) state=1 in e:\contenido_4.4.1\contenido\includes\functions.mod.php(148) : eval()'d code on line 178
die erste zeile verweist auf ein problem im input bereich zeile 12 (+-1)
und die zweite auf eh schon wissen...
ach ja und der modul debugger ist innerhalb der datei (functions.mod.php(148)) deshalb sieht mans auch sofort.

und das is es...
ImmoF hat geschrieben:das modul muesste an sich vom contenido.de-modul-download (vorgestern) stammen, bis auf die html-aenderungen. vielleicht waere es gut, das modul dort noch einmal geaendert einzuspielen.
ja vielleicht, wer das macht ? keine ahnung...

ImmoF
Beiträge: 175
Registriert: Do 26. Jun 2003, 18:33
Kontaktdaten:

Beitrag von ImmoF » Mo 10. Nov 2003, 17:24

danke dir - werde mich beim naechsten fehler dran erinnern, so gesehen, macht das error-log richtig sinn. :idea:

Gesperrt