PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Filter'n mit Dropdown-Liste


syntax
25.03.2012, 19:24:47
Hallo Leute ich habe mir für meine DB eine Dropdown-Liste, die den Inhalt dynamisch aus einer Tabelle ausliest. Dies funktioniert auch, liest alle Kunden aus meiner DB aus und übergibt sie in die Dropdown-Liste.

Wenn ich jetzt eine Auswahl in der Dropdown-Liste treffe soll mir alles zu dieser Auswahl angezeigt werden, leider funktioniert das nicht.

Er zeigt mir nichts an, keine Fehlermeldung und auch keine Ausgabe meiner Daten.
Es geht aber wenn ich in meiner SQL-Abfrage einen Kunden reinschreibe.


<?php
include("../php/connect.php");

$kunden_liste = '';
$kundenauswahl = mysql_query("SELECT id, kunde FROM kunden") or die(mysql_error());
while ($kunden_result = mysql_fetch_array($kundenauswahl))
{
$kunden_liste .= '<option value="' . $kunden_result['id'] . '">' . $kunden_result['kunde'] . '</option>';
}

echo '<select name="aufgabe">' . $kunden_liste . '</select>';
?>


<form action="<? $_SERVER["SCRIPT_NAME"] ?>" method="post">
<table>
<?PHP
$abfrageergebnis = mysql_query("SELECT fahrzeug.id, fahrzeug.auto,fahrzeug.kunde, fahrzeug.status FROM fahrzeug, kunden WHERE fahrzeug.kunde, = '". $kunden_result['kunde'] ."'") or die(mysql_error());
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{
echo '<tr>';
echo '<td>' . $datensatz['id'] . '</td>';
echo '<td>' . $datensatz['auto'] . '</td>';
echo '<td>' . $datensatz['kunde'] . '</td>';
echo '<td>' . $datensatz['status'] . '</td>';
echo '<tr>';
}
?>
<td style="width:15px"><input type="submit" value="Senden" name="submit"></td>
</table>
</form>


Ich steh irgendie auf dem Schlauch, muss ich den die Auswahl in der Dropdown-Liste nach der Auswahl nochmal übergeben bzw. als Variable deklarieren?

Ckaos
25.03.2012, 22:51:49
Hi

echo '<select name="aufgabe">' . $kunden_liste . '</select>';
Sollte schon zwischen Formularstart und Ende, davor bringts nichts ;)

Und ich seh nichts was dann auf dein Select reagieren soll?
kein $_POST['aufgabe']

Entschuldige die Frage, aber schreibst du das alleine? oder wurschtelst du dich
durch irgendwas was jemand anders vorgelegt hat?

mfg

CKaos

syntax
26.03.2012, 00:14:59
Ja das mit dem $_POST hab ich vergessen, Danke.

Bin bei PHP noch Grün hinter den Ohren und vergesse manchmal das neu gelernte und suche dann meine Fehler an den falschen Stellen.

syntax
26.03.2012, 19:46:14
Hey Leute muss nochmal was fragen bezüglich der dem $_POST, wenn ich nur einen Kunden in meiner Tabelle habe geht es, ansonsten multipliziert er die Anzahl der Kunden mit den Autos des Kunden. (5 Kunden in der Kundentabelle x 2 Autos von Kunde 1 = 10 der selbe Datensatz). Mir ist aufgefallen das mein Fehler daran lag das ich nicht value sondern name definiert habe.

Jetzt ist meine Frage wie ich value="' . $kunden_result['kunde'] . '" mit $_POST übergeben kann?


<?php
include("../php/connect.php");

$kunden_liste = '';
$kundenauswahl = mysql_query("SELECT id, kunde FROM kunden") or die(mysql_error());
while ($kunden_result = mysql_fetch_array($kundenauswahl))
{
$kunden_liste .= '<option value="' . $kunden_result['kunde'] . '">' . $kunden_result['kunde'] . '</option>';
}
?>

<form action="<? $_SERVER["SCRIPT_NAME"] ?>" method="post">
<? echo '<select name="kundenauswahl">' . $kunden_liste . '</select>'; ?>
<table>
<?
$kundenauswahl = $POST['kundenauswahl']

$abfrageergebnis = mysql_query("SELECT fahrzeug.id, fahrzeug.auto,fahrzeug.kunde, fahrzeug.status FROM fahrzeug, kunden WHERE fahrzeug.kunde, = '".$kundenauswahl."'") or die(mysql_error());
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{
echo '<tr>';
echo '<td>' . $datensatz['id'] . '</td>';
echo '<td>' . $datensatz['auto'] . '</td>';
echo '<td>' . $datensatz['kunde'] . '</td>';
echo '<td>' . $datensatz['status'] . '</td>';
echo '<tr>';
}
?>
<td style="width:15px"><input type="submit" value="Senden" name="submit"></td>
</table>
</form>

syntax
26.03.2012, 20:26:42
Kommando zurück, geht doch. Ich hab mich in der Select-Abfrage vertan.

Aber aus reinem interesse wäre es möglich mein value="' . $kunden_result['kunde'] . '" mit $_POST zu übergeben?

Danke

meikel (†)
27.03.2012, 01:35:27
Aber aus reinem interesse wäre es möglich mein value="' . $kunden_result['kunde'] . '" mit $_POST zu übergeben?
Na klar. Mit korrektem HTML incl. form Tag mit method="post" kann der Client alle form Elemente per POST Request verschicken.

urvater
27.03.2012, 10:54:59
$kundenauswahl = $POST['kundenauswahl']

$abfrageergebnis = mysql_query("SELECT fahrzeug.id, fahrzeug.auto,fahrzeug.kunde, fahrzeug.status FROM fahrzeug, kunden WHERE fahrzeug.kunde, = '".$kundenauswahl."'") or die(mysql_error());
Tu dir bitte selbst einen Gefallen und sichere diesen Wert gegen sql Injektion ab.
Nie ungeprüft externe Daten verarbeiten.
Tip: mysql_real_escape_string
In deinem Fall ist: is_numeric() auch sehr empfehlenswert, wenn du nicht den Namen sondern die ID des Kunden übergeben würdest.

Was reagiert eigentlich dein Formular, wenn du mehr als einen Müller, Meier, Schulze in deine Kundenliste hast?

syntax
28.03.2012, 17:45:43
Erstmal Danke für den Tipp mit der SQL-Injektion, habe das geändert.

Habe noch eine 2 Dropdown-Liste erstellt, diese liest Werte aus der Tabelle Status aus.
Diese Dropdown-Liste habe ich in die Ausgabe meiner SQL-Abfrage gebaut.
Ich will, das die Dropdown-Liste immer den Wert anzeigt der in fahrzeug.status steht.

Wie kann ich das am besten machen?
Meine erste Idee wäre eine If-Abfrage, die mir dann den Wert in der Dropdownliste anzeigt oder brauch ich dazu AJAX bzw. JavaScript?


<?php
include("../php/connect.php");

$kunden_liste = '';
$kundenauswahl = mysql_query("SELECT id, kunde FROM kunden") or die(mysql_error());
while ($kunden_result = mysql_fetch_array($kundenauswahl))
{
$kunden_liste .= '<option value="' . $kunden_result['kunde'] . '">' . $kunden_result['kunde'] . '</option>';
}



$status_liste = '';
$statusauswahl = mysql_query("SELECT id, status FROM zustand") or die(mysql_error());
while ($status_result = mysql_fetch_array($statusnauswahl))
{
$status_liste .= '<option value="' . $status_result['status'] . '">' . $status_result['status'] . '</option>';
}
?>

<form action="<? $_SERVER["SCRIPT_NAME"] ?>" method="post">
<? echo '<select name="kundenauswahl">' . $kunden_liste . '</select>'; ?>
<table>
<?
$kundenauswahl = $POST['kundenauswahl']
$statusauswahl = $POST['statusauswahl']

$abfrageergebnis = mysql_query("SELECT fahrzeug.id, fahrzeug.auto,fahrzeug.kunde, fahrzeug.status FROM fahrzeug, kunden WHERE fahrzeug.kunde, = '".$kundenauswahl."', mysql_real_escape_string($kundenauswahl)") or die(mysql_error());
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{
echo '<tr>';
echo '<td>' . $datensatz['id'] . '</td>';
echo '<td>' . $datensatz['auto'] . '</td>';
echo '<td>' . $datensatz['kunde'] . '</td>';
echo '<td><select name="statusauswahl"> ' . $status_liste . ' </select></td>';
echo '<tr>';
}
?>
<td style="width:15px"><input type="submit" value="Senden" name="submit"></td>
</table>
</form>