Verschachtelte Select Felder aus der Datenbank

Patematthes

Mitglied
Hallo hier bin ich mal wieder euer PHP ....
Ich würde gerne verschachtelte select-felder machen, dies bedeutet wenn man im ersten select-feld etwas ausgewählt hat, dann sollen im zweiten select-feld nur die daten erscheinen, welche die erste bedingungen erfüllen. im dritten sollen dann die erscheinen welche die Bedingung aus dem ersten und zweiten erfüllen.

Hier mal ein kurzer Ausschnitt aus dem ersten Feld.

PHP:
<?php
$query = "SELECT * FROM divisionen";
$result=odbc_exec($connection_id, $query) or die("Verbindung konnte nicht hergestellt werden: ".odbc_error());
echo "<select name=\"division\">\n";
echo "<option></option>\n";
while ($datensatz_division = odbc_fetch_array($result))
{
echo "<option value=\"". $datensatz_division['divisions_id'] ."\">";
echo $datensatz_division['division'];
echo "</option>\n";
}
echo "</select>\n</td>";
?>

Ich weiss das ich nun den angeklickten Wert in eine Variable speichern müsste um diese mit in das nächste select-feld zu nehmen, allerdings weiss ich nicht wie ich das in php realisieren soll.

Danke im Vorraus
 
Ich habe das ganze über ein JavaScript gelöst. Bei einem onchange wird das Script aufgerufen, ermittelt den ausgewählten Wert und leitet über eine URL an die gleiche Page (mit angehängtem Wert) weiter. Dort requestest du den wert wieder und kannst das zweite Select Feld damit entsprechend füllen lassen.
 
Hallo,

wie schon angesprochen entweder durch das Onchange Ereignis, den Selected.Value übergeben, neues Query auf die DB und dann refresh erzwingen und Combobox neu befüllen, oder über ein Form lösen, mit Submitbutton, und bei jedem Submit neues Query auf die DB und dann Form füllen. Letzte Möglichkeit wäre Ajax, im OnChange Ereignis den Request an ein extra php Script senden und mit der Antwort dann die nächste Combobox füllen. Die Ajax Variante hat den Vorteil das du keinen Browser Refesh hast.
 
knn man nicht einen verstecketen submit befehl in php einbauen so das man den Wert in eine Variable gespeichert bekommt?

JS und Ajax kenn ich nur vom Namen :)
 
mit reinen PHP mittel kannst dein Problem nicht lösen, so leid es mir tut. Wenigstens JS wirst brauchen. Und nen bissel Wissen anlesen schadet doch auch nicht :)
 
na dann melde ich mich mal wieder wenn ic mir das onchage angeschaut habe :)
und schreibe den code hinein ober funktioniert oer nicht, damit andere user auch etwas davon haben. Bis dahin bedanke ich mich ersmal für die schnellen antowrten :)
 
falls du es nicht hinbekommst schick mir ne pm, ich such zuhause dann mal den code raus. Ein Hexenwerk ist es aber nicht, hatte auch keine großen Erfahrungen in JS und habs dann doch irgendwie hinbekommen :-)
 
wie versprochen :)
ich habe es hinbekommen nun hänge ich an einem sql problem aber das wird ins andere forum gepostet.
Ps wer fragen dazu hat kann sie mir per pm zu schicken


PHP:
<?php
error_reporting(E_ALL);
$title="Analyse - Eigen/Fremd-Datenbankanwendung";
include ("connectmsa.php");
settype($_POST['divisions_id'], "integer");
settype($_POST['hauptbereichs_id'], "integer");
settype($_POST['betriebs_id'], "integer");
?>
<!-- Anzeigen der Inhalte der 'suche.php' -->
<div id="main">
<h3>Analysebereich</h3>
Angabe von Suchkriterien: <br /><br />
<!-- Formular, um Suchkriterien für die Analyse anzugeben -->
<form method="post" action="testsuche.php" name="DivisionSuche">
<table>
 
<?php
$query = "SELECT * FROM divisionen";
$result=odbc_exec($connection_id, $query) or die("Verbindung konnte nicht hergestellt werden: ".odbc_error());
?>
<tr>
<td>Division:&nbsp;</td>
<td colspan="2">
  <select name="divisions_id" onchange="DivisionSuche.submit();">
    <option value="0">bitte auswählen</option>
    <?
        while ($datensatz_division = odbc_fetch_array($result))
        {
            if($_POST['divisions_id'] == $datensatz_division['divisions_id']) $ins="selected"; else $ins="";
            ?>
                <option value="<? echo $datensatz_division['divisions_id'];?>" <?echo $ins;?> >
                    <?echo $datensatz_division['division'];?>
                </option>
            <?
        }
    ?>
  </select>
</td>
</tr>
<?
 if ($_POST['divisions_id'] > 0);
{
 $query = "SELECT * FROM hauptbereich WHERE divsions_id = ".$_POST['divisions_id'].";";
 $result=odbc_exec($connection_id, $query) or die("Verbindung konnte nicht hergestellt werden: ".odbc_error());
}
?>
<tr>
<td>Hauptbereich:&nbsp;</td>
<td colspan="2">
  <select name="hauptbereichs_id" onchange="DivisionSuche.submit();">
    <option value="0">bitte auswählen</option>
    <?
        while ($datensatz_hauptbereich = odbc_fetch_array($result))
        {
            if($_POST['hauptbereichs_id'] == $datensatz_hauptbereich['hauptbereichs_id']) $ins="selected"; else $ins="";
            ?>
                <option value="<? echo $datensatz_hauptbereich['hauptbereichs_id'];?>" <?echo $ins;?> >
                    <?echo $datensatz_hauptbereich['hauptbereich'];?>
                </option>
            <?
        }
    ?>
  </select>
</td>
</tr>
<?
 if ($_POST['hauptbereichs_id'] > 0);
{
 $query = "SELECT * FROM betrieb WHERE hauptbereichs_id = ".$_POST['hauptbereichs_id'].";";
 $result=odbc_exec($connection_id, $query) or die("Verbindung konnte nicht hergestellt werden: ".odbc_error());
}
?>
<tr>
<td>Betrieb:&nbsp;</td>
<td colspan="2">
  <select name="betriebs_id" onchange="DivisionSuche.submit();">
    <option value="0">bitte auswählen</option>
    <?
        while ($datensatz_betrieb = odbc_fetch_array($result))
        {
            if($_POST['betriebs_id'] == $datensatz_betrieb['betriebs_id']) $ins="selected"; else $ins="";
            ?>
                <option value="<? echo $datensatz_betrieb['betriebs_id'];?>" <?echo $ins;?> >
                    <?echo $datensatz_betrieb['betrieb'];?>
                </option>
            <?
        }
    ?>
  </select>
</td>
</tr>
<?
 if ($_POST['betriebs_id'] > 0);
{
 $query = "SELECT * FROM bereich WHERE betriebs_id = ".$_POST['betriebs_id'].";";
 $result=odbc_exec($connection_id, $query) or die("Verbindung konnte nicht hergestellt werden: ".odbc_error());
}
?>
<tr>
<td>Bereich:&nbsp;</td>
<td colspan="2">
  <select name="bereichs_id" onchange="DivisionSuche.submit();">
    <option value="0">bitte auswählen</option>
    <?
        while ($datensatz_bereich = odbc_fetch_array($result))
        {
            if($_POST['bereichs_id'] == $datensatz_bereich['bereichs_id']) $ins="selected"; else $ins="";
            ?>
                <option value="<? echo $datensatz_bereich['bereichs_id'];?>" <?echo $ins;?> >
                    <?echo $datensatz_bereich['bereich'];?>
                </option>
            <?
        }
    ?>
  </select>
</td>
</tr>
</table>
Button zum Abschicken
<input type="submit" name="suchen" value="Datensätze anzeigen"/>
</form>
<?php
error_reporting(E_ALL);
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
 
Zurück