Drop-Down Liste
PHP-Niete
- php
0 Julian Hofmann0 Dan0 Julian Hofmann0 Dan
0 Robert
Hallo Zäme (bin Schweizer)
Ich hab da mal ne Frage. Ich versuche eine kleine Knowledge-Datenbank zu realisieren mit MySQL und PHP (was sont?!).
Nun möchte ich eine kleine Drop-Down Liste erstellen welche den Inhalt aus meiner Tabelle saugt. Das hab ich auch fast geschaft, leider erscheinen die Einträge doppelt und ich weiss zum verrecken nicht wieso!! Hier ist das betreffende Code-Fragment:
include("connect.php"); //Datenbankanbindung
$table = "error, program";
$sql = "select * from $table";
$sql .= " where error_number like '$number%'";
$result = mysql_db_query($db, $sql);
$num = mysql_num_rows($result);
echo "<tr>";
echo "<td></td>";
echo "<td>Programm:</td>";
echo "<td><select name='program' size=1>";
for ($i=0; $i<$num; $i++)
{
$program = mysql_result($result, $i, "pro_name");
echo "<option>$program</option>";
}
echo "</td>";
echo "</tr>";
Nachdem das mit der FOR-Schleife nicht hinhaute hab ich das ganze mit einer WHILE-Schleife versucht:
while ($row=mysql_fetch_row($result))
{
echo "<option value='$row[9]'>$row[9]</option>";
}
echo "</select></td>";
echo "</tr>";
Und siehe da, der genau gleich Fehler ist aufgetaucht. Hab mir schon überlegt ob es wohl in irgend einer Form was mit der MySQL-Datenbank zu tun haben könnte, aber ich komme einfach nicht auf einen grünen Zweig!
Ich wäre wirklich unglaublich Dankbar für einen kleinen oder auch grösseren Schubser in die richtige Richtung...
Vielen Dank
Hallo.
Wenn zwei Verfahren das Ergebnis der Abfrage auszzuwerten den gleichen Fehler bringen, dann muss das Problem muss viel mehr hier liegen:
$sql .= " where error_number like '$number%'";
Sicher, dass Du like meinst? Wie siehts denn error_number aus? Und wie $number?
Grüße aus Würzburg
Julian
Hallo Julian
Danke für deine Antwort!
$number ist eine Variable aus einer Suchabfrage. Number bezieht sich auf ein Formularfeld. Du hast recht, es ghört eigentlich nicht in dieses Script, macht aber keinen Unterschied wenn ich das rauslösche!
Und die Datei connect.php sorgt für die Datenbankanbindung:
<?
/*Zugangsdaten zum Verbinden mit dem MySQL-Server */
$link=mysql_pconnect("localhost","","");
$db='knowledge';
?>
Da sehe ich keinen Fehler. Die Anbindung funktioniert ja, es werden ja die richtigen Daten angezeigt, einfach doppelt. Es ist wirklich zum verrückt werden
Gruss aus Bern...
Hallo.
Wenn zwei Verfahren das Ergebnis der Abfrage auszzuwerten den gleichen Fehler bringen, dann muss das Problem muss viel mehr hier liegen:
$sql .= " where error_number like '$number%'";
Sicher, dass Du like meinst? Wie siehts denn error_number aus? Und wie $number?
Grüße aus Würzburg
Julian
Hi Dan.
Da sehe ich keinen Fehler. Die Anbindung funktioniert ja, es werden ja die richtigen Daten angezeigt, einfach doppelt.
Wir sind uns doch einig, dass per Schleife immer nur ein optionfeld erzeugt wird pro $i. Somit muss in der Abfrage der Wurm sein.
Hast Du die SQL-Abfrage mal direkt getestet z.B. in PHPmyadmin?
Grüße aus Würzburg
Julian
Hallo Julian
Ja du hast recht. Wenn ich den SQL-Befehl in PHPmyAdmin ausführe erscheinen die Einträge tatsächlich auch doppelt. Ich habe zwei Tabellen, eine mit Fehlermeldungen und Lösungen usw. und eine mit Programmen die ausgewählt werden können. Bei meiner ursprünglichen SQL-Anfrage habe ich select * aus beiden Tabellen gewählt und da erscheinen die Einträge beider Tabellen doppelt. Wenn ich aber nur select * aus einer Tabelle abfrage funktionierts. Somit wäre das Problem eigentlich gelöst und ich muss mal über die SQL-Bücher, den verstehen tu ich’s nicht ganz wieso das so ist!
Anyway, vielen Dank für deine Unterstützung, auf ein anderes Mal!
Gruss aus Bern, werde jetzt einen Atlas hervorholen um nachzuschlagen wo genau Würzburg liegt! (komme halt aus der Schweiz, wir leben noch ein wenig hinterm Mond!)
Dan
Hi Dan.
Da sehe ich keinen Fehler. Die Anbindung funktioniert ja, es werden ja die richtigen Daten angezeigt, einfach doppelt.
Wir sind uns doch einig, dass per Schleife immer nur ein optionfeld erzeugt wird pro $i. Somit muss in der Abfrage der Wurm sein.
Hast Du die SQL-Abfrage mal direkt getestet z.B. in PHPmyadmin?
Grüße aus Würzburg
Julian
Hi,
Nun möchte ich eine kleine Drop-Down Liste erstellen welche den Inhalt aus meiner Tabelle saugt. Das hab ich auch fast geschaft, leider erscheinen die Einträge doppelt und ich weiss zum verrecken nicht wieso!! Hier ist das betreffende Code-Fragment:
$table = "error, program";
$sql = "select * from $table";
$sql .= " where error_number like '$number%'";
Das ergibt also
select * from error, programm where error_number like ...
Du liest Daten aus 2 Tabellen aus.
Aber Du sagst in keiner Weise, wie die Daten der beiden Tabellen miteinander verknüpft sind.
Laß mich raten: in einer der Tabellen hast Du genau 2 Einträge.
Und wenn Du in der Tabelle noch einen dazufügst, bekommst Du jeweils 3 Datensätze.
Robert