Mailinglisten-Archive |
Hi und einen schoenen Sonntag, versuche mir gerade PHP4 anzueignen (schon laenger), stosse aber gerade an eine scheinbar unueberwindliche Grenze. Moechte eine Navigation erstellen, wo ich in einer Hauptauswahl Kategorien aus einer Datenbank auswaehle und in Abhaengigkeit davon wieder aus einer Datenbank Unterkategorien darstelle. Habe fuer etwas aehnliches ein Beispiel in einem Buch gefunden (brauche Beispiele, um sowas nachzuvollziehen), und kriege diesen Code beim besten Willen nicht zum Laufen. Weder die Version, die ich selbst erstellt habe noch das Originallisting von CD noch den 100sten von Versuchen ihn abzuwandeln. Umgebung: MacOS 10.3.1 Apache 1.3.28 PHP 4.3.2 MySQL 4.0.13 Browser local Safari Probleme: 1. Die Verbindung zur Datenbank wird aufgebaut (Datenbank ist angelegt und enthaelt Daten!). Normalerweise. Eine Dateiversion mit dem exakt selben Code hat das nicht getan, hat aber auch keine Fehlermeldung generiert bis auf die Meldung "Verbindungsaufnahme mit MySQL-Server fehlgeschlagen!". Die Funktion getError hat nichts ausgegeben. 2. Problem: Bei der Navigation funktioniert der Selbstverweis $SELF_PHP offenbar nicht. Schaue ich mir im Browser den Quelltext an, erscheint gar kein Dateiverweis. Aendere ich den Link in $_SERVER[SELF_PHP] wird der Dateiname im Klartext ausgegeben im Quelltext, also eine Verweisdarstellung auf eine reale Datei. 3. Problem: Um in Abhaengigkeit vom gewaehlten Link die Unterdarstellung auszugeben werden bei dem Link flags mit aufgerufen (menue=true&autorMenue=true), die, wenn ich das richtig interpretiere, als Variablen fungieren sollen. Mit isset() sollen die anschliessend ausgelesen und entsprechend weiterverarbeitet werden in einem Formular. isset() erkennt sie nicht, und so passiert einfach gar nichts, noch nicht einmal eine Fehlermeldung. Wo kann ich ansetzen? - Hat das was mit meiner PHP4-Version zu tun? Das Buch hat im Titel PHP 4.3, aber das muss ja nicht heissen, das dieses Beispiel unter PHP 4.3.x entwickelt wurde ... - Kann ich hier irgendwas local nicht testen? - Tritt hier in abgewandelter Form die "register globals = off"-Problematik auf? Und wenn ja, wie kann ich sie umgehen? Hier der Beispielcode: //globale Verbindungsdaten $host = "localhost"; $user = "xyz"; $pass = ""; $database = "phpbuecher"; // Verbindungsaufnahme $vk = @mysql_connect($host, $user, $pass) or die ("Verbindungsaufnahme mit MySQL-Server fehlgeschlagen!"); @mysql_select_db($database, $vk) or die ("Verbindungsaufnahme mit Datenbank fehlgeschlagen!"); //globale Fehlerabfangroutine function getError($myError, $myErrno) { echo "<font color='red'>Bei dem Versuch, einen Datensatz auszulesen, ist ein Fehler aufgetreten.<br>\nFehler-Nummer: <b>".$myErrno."</b> <br>\nFehler-Ausgabe:<b>".$myError."</font></b>"; } ?> <!-- Navigation --> <div align="center"> <table border="0" align="center" cellpadding="2" cellspacing="10"> <tr> <td><a href="<?php echo $PHP_SELF ?>?menue=true&autorMenue=true"> Nach Autor anzeigen</a> </td> <td><a href="<?php echo $PHP_SELF ?>?menue=true&buchMenue=true"> Nach Buchtitel anzeigen</a> </td> <td><a href="<?php echo $PHP_SELF ?>?menue=true&verlagMenue=true"> Nach Verlag anzeigen</a> </td> </tr> </table> </div> <!-- / Navigation --> <?php /* +------------------------------------------------------------------------------+ | Sub-Menue: Anfang: | | - Hilfsvaribalen fuer Formular werden erzeugt | - Formular +------------------------------------------------------------------------------+ */ if (isset($menue)) { if (isset($autorMenue)) { //Variablen für Autor-Menue $sql_query = "SELECT autorID, autorname FROM autor ORDER BY autorname"; $setVar = "autorID"; $setRow_1 = "autorID"; $setRow_2 = "autorname"; } if (isset($buchMenue)) { //Variablen für Buch-Menue $sql_query = "SELECT buchID, buchtitel FROM buch ORDER BY buchtitel"; $setVar = "buchID"; $setRow_1 = "buchID"; $setRow_2 = "buchtitel"; } if (isset($verlagMenue)) { //Variablen für Buch-Menue $sql_query = "SELECT verlagID, verlagname FROM verlag ORDER BY verlagname"; $setVar = "verlagID"; $setRow_1 = "verlagID"; $setRow_2 = "verlagname"; } //Formular Ausgabe: $result = mysql_query($sql_query, $vk); if($result) { echo "<div align='center'><form method='post' action='$PHP_SELF'>"; echo "<select name='$setVar' size='1'>\n"; while ($row = mysql_fetch_array($result)) { echo "<option value=\"$row[$setRow_1]\">".$row[$setRow_2]."\n"; } echo "</select>\n"; echo "<input type='submit' name='showInfo' value='Anfrage absenden'></form></div>"; } else { getError(mysql_errno($vk), mysql_error($vk)); } } // Sub-Menue: Ende ?> <?php Waere sehr dankbar fuer jeden Tip. Gruesse Friederun
php::bar PHP Wiki - Listenarchive