Zum Inhalt springen

php programmieren mit templates


Empfohlene Beiträge

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;
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...