korea1 Geschrieben 19. Mai 2003 Geschrieben 19. Mai 2003 hi, ich programmier ein webinterface, das mir daten aus einer mysql db anzeigen soll. soweit funktioniert das auch alles. aber er bringt mir einen template fehler: Notice: Undefined index: b in d:\programme\apache\htdocs\include\template.inc on line 210 wisst ihr was dass für ein fehler is? danke korea1 hier der code von meinem html-tpl: <html> <head> <title></title> </head> <body> <table border="1"> <tr> <th width="80">ID</th> <th width="80">BMK</th> <th width="80">BG-Name</th> <th width="80">ArtNr.</th> <th width="80">PDF</th> </tr> <!-- BEGIN a --> <tr> <td width="80">{TBL1ID}</td> <td width="80">{BMK}</td> <td width="80">{BGNAME}</td> <td width="80">{ARTNR}</td> <td width="80">{PDF}</td> </tr> <!-- END a --> </table> </body> </html> hier der code von meinem php script: <?php include ("../include/template.inc"); $servername ="localhost"; $benutzer = "******"; $passwort = "******"; $db = "test"; $conID = mysql_connect($servername, $benutzer, $passwort); if(! $conID) { print ("Keine Verbindung zu MySQL!!!"); } mysql_select_db($db)or die ("Konnte Datenbank: $db nicht oeffnen"); $tpl = new Template; $tpl->set_root("../templates"); $tpl->set_file(array("uebersicht" => "uebersicht.tpl.htm")); switch($_REQUEST["action"]){ //############ ANZEIGEN ############ case "anzeigen": $tpl->set_block("uebersicht","a","b"); $sql_query = "SELECT tbl1_ID, tbl1_bmk, tbl1_bgname, tbl1_artnr, tbl1_pdf FROM tbl_1"; $result = mysql_query($sql_query,$conID); while($row = mysql_fetch_array($result)){ $tpl->set_var(array("TBL1ID" => $row["tbl1_ID"], "BMK" => $row["tbl1_bmk"], "BGNAME" => $row["tbl1_bgname"], "ARTNR" => $row["tbl1_artnr"], "PDF" => $row["tbl1_pdf"] )); print "blubb"; $tpl->parse("b","a",true); } break; } $tpl->parse("Ausgabe","uebersicht"); $tpl->p("Ausgabe"); mysql_close($conID); ?> [/PHP] und hier die template.inc: [PHP] function get_var($varname) { if (!is_array($varname)) { return $this->varvals[$varname]; } else { reset($varname); while(list($k, $v) = each($varname)) { $result[$k] = $this->varvals[$k]; } return $result; } } Zitieren
DanielH Geschrieben 19. Mai 2003 Geschrieben 19. Mai 2003 Hi, in Zeile 210 in template.inc wird ein array-schlüssel "b" angesprochen, der nicht definiert ist. Schreib mal die Zeilennummern vor den Codeschnipsel aus der template.inc. Dieser Fehler ist aber unproblematisch für die Ausführung und kann in der ini deaktiviert werden. Das wird immer ausgegeben wenn Variablen zuvor nicht definiert wurden oder eben nicht existieren. MfG Zitieren
korea1 Geschrieben 19. Mai 2003 Autor Geschrieben 19. Mai 2003 hier nochmal die template.inc: 208 function get_var($varname) { 209 if (!is_array($varname)) { 210 return $this->varvals[$varname]; 211 } else { 212 reset($varname); 213 while(list($k, $v) = each($varname)) { 214 $result[$k] = $this->varvals[$k]; 215 } 216 217 return $result; 218 } 219 } [/PHP] ok und nu? wo kann ich dass genau in der php.ini ausschalten? und bitte wenn möglich mit syntax? bin mir gerade noch unschlüssig obs richtig is. korea1 Zitieren
DanielH Geschrieben 19. Mai 2003 Geschrieben 19. Mai 2003 Also abschalten kann man das so: aus der Zeile error_reporting = E_ALL machst du error_reporting = E_ALL & ~E_NOTICE Das schaltet die Notice-Meldungen während der Laufzeit ab. Steht aber in der ini auch nochmal alles beschrieben Was aber die Ursache des nicht vergebenen Array-Schlüssels ist, lässt sich so leider kaum sagen. Um da dahinter zu kommen solltest du die Template-Funktionen mal alles ausgegeben lassen womit die arbeiten sollen. MfG Zitieren
Spoom Geschrieben 19. Mai 2003 Geschrieben 19. Mai 2003 Also in $varname steht "b" aber $this->varvals hat keinen Index b. Da läuft was schief ... MfG Spoom Zitieren
korea1 Geschrieben 19. Mai 2003 Autor Geschrieben 19. Mai 2003 ok danke, mit dem error_reporting klappt das jetzt und ich bekomm die meldung nich mehr. mit der template.inc kenn ich mich nicht so aus, die versteh ich auch nicht so richtig, da das mit klassen programmiert is, welche ich noch nicht wirklich beherrsche. korea1 Zitieren
Spoom Geschrieben 19. Mai 2003 Geschrieben 19. Mai 2003 Also prinzipiell würde ich in der Entwicklung sogar Notices einblende! Einfach keine Fehler anzeigen und hoffen, dass es trotzdem geht ist ziemlich unsauber ... Zitieren
DanielH Geschrieben 19. Mai 2003 Geschrieben 19. Mai 2003 Original geschrieben von Spoom Also prinzipiell würde ich in der Entwicklung sogar Notices einblende! Einfach keine Fehler anzeigen und hoffen, dass es trotzdem geht ist ziemlich unsauber ... Das kann man so nicht unbedingt sagen. Sicher ist es sinnvoll alle Meldungen los zu werden, aber immer geht es nicht. Gerade bei Arrays die mit Datenbankwerten gefüllt werden kann diese Ausgabe ziemlich nerven, wenn ein Datensatz nicht komplett war oder ähnliches. Bei Variablen kam es auch schon zu eigenartigen Ausgaben bei einer älteren Shopsoftware, bei der Übergabewerte aus dem Script im Script selber ausgewertet wurden. Beim ersten Aufruf waren die natürlich noch nicht gesetzt. Auch da kann die Meldung sehr störend sein. MfG Zitieren
Spoom Geschrieben 20. Mai 2003 Geschrieben 20. Mai 2003 aber immer geht es nicht. Natürlich gehts immer! Es gibt nur Leute die sind zu faul irgendwelche fehler abzufangen... MfG Spoom Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.