PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   selectbox befüllen (http://www.selfphp.de/forum/showthread.php?t=25914)

schlappi 17.08.2016 00:40:22

selectbox befüllen
 
Hallo Gemeinde,

ich habe ein kleines Problem beim dynamischen befüllen meiner SelectBox mit nur bestimmten Bereichen aus der Datenbank.
Meine Datenbank dafür sieht wie folgt aus

Tabelle1
ID | IDbereich
1 | bereich1
2 | bereich2
3 | bereich3

Tabelle2
ID | IDbereich | Vergehen
1 | bereich1 | vergehen1
2 | bereich1 | vergehen2
3 | bereich2 | vergehen3
4 | bereich2 | vergehen4
5 | bereich3 | vergehen5
6 | bereich3 | vergehen6

meine test.php (ausschnitt)

PHP-Code:

<script type="text/javascript">
  $(document).ready(function() {
      $("#selectbox_1").change(function(){
        var id_hauptkategorie=$(this).children('option:selected').val();
        $("#selectbox_2").load("includes/selectboxen.php",{value: id_hauptkategorie});
      });
  });
</script>

<tr>
                    <td>Bereich:</td>
                    <td>
                        <select id="selectbox_1" name="strafen_1" style="width:200pt">
                            <?php
                            
while ($row mysql_fetch_assoc($tabelle1)) 
                                {
                                
?>
                               <option value="<?php echo $row['ID']; ?>"><?php echo $row['IDbereich']; ?></option> 
                             <?php
                             
}
                            
?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>Vergehen:</td>
                    <td>
                        <select id="selectbox_2" name="strafen_2" style="width:200pt">
                            <?php 
                            
while ($row mysql_fetch_assoc($tabelle2))
                            {
                            
?>
                              <option value="<?php echo $row['ID']; ?>"></option>
                              <?
                              }
                              ?>
                        </select>
                    </td>
                </tr>

In der ersten SelectBox wähle ich mein Bereich aus --> funktioniert auch super soweit
Die 2. Box lass ich über java dynamisch füllen. Die selectbox.php sieht wie folgt aus.

PHP-Code:

<?php
if($_POST["value"]==1){
?>
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3">c</option>
<?php  
} elseif($_POST["value"]==2){
?>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
<?php
} else {
  
?>
    <option value="1">+</option>
    <option value="2">-</option>
    <option value="3">*</option>
<?php
}

?>

In sofern ich in der ersten SelectBox meine 3 Bereiche jeweils auswähle bekomm ich auch nur die jeweiligen 3 Kategorien ausgegeben. Mein Problem liegt eher darin, das ich hier statisch die 3 Optionen für die 2. Selectbox angebe. Wie kann ich es hier aber dynamisch aus der Datenbank angeben. Die Auswahl, dass ich die komplette Tabelle2 ausgebe bekomm ich auch hin. Würde hier aber gern nur aus Tabelle2 die jeweiligen Vergehen füllen lassen, wessen Bereich ich in der 1.Selectbox gewählt habe. Hatte auch Überlegt die beiden Tabellen mittels JOIN LEFT zusammen zufügen, nur bekomm ich dann immernoch nicht nur die Vergehen des ausgewählten Bereichs ausgegeben.
Steh da echt irgendwie aufm Schlauch.

(alle Angaben sind nur Synonyme oder Testwerte)

vt1816 17.08.2016 11:52:58

AW: selectbox befüllen
 
Hallo und willkommen hier im Forum.

So wie Du zzt. mit if($_POST['value']...) arbeitest, so kannst Du auch die Dynamik in eine Datenbankabfrage bringen (SELECT * FROM table WHERE $_POST['value'] = irgendwas) und nur die gewünschten Einträge für die SELECT-Box selektieren.

schlappi 17.08.2016 14:15:10

AW: selectbox befüllen
 
Hallo vt1816,

also ich habe meine selectbox.php wie folgt angepasst
PHP-Code:

$sql1 = "SELECT 
            tabelle1.*,
            tabelle2.IDbereich,
            tabelle2.vergehen
        FROM
            tabelle1
        LEFT JOIN
            tabelle2
        ON
            tabelle1.IDbereich = tabelle2.IDbereich
        WHERE $_POST["value"]=tabelle1.ID 
        ";
$sql = mysql_query($sql1) OR die(mysql_error());
 
?>

<?php
if($_POST["value"]==1){
?>
<?php
while ($row mysql_fetch_assoc($sql)) {
?>    
    <option value="1"><?php echo $row["vergehen"]; ?></option>
<?php ?>


<?php  
} elseif($_POST["value"]==2){
?>
<?php
while ($row mysql_fetch_assoc($sql)) {
?>
    <option value="1"><?php echo $row["vergehen"]; ?></option>
<?php ?>
<?php
} else {
  
?>
<?php
while ($row mysql_fetch_assoc($sql)) {
?>
    <option value="1"><?php echo $row["vergehen"]; ?></option>
<?php ?>
<?php
}

?>

leider bleibt meine 2. Selectbox leer. Ich gehe mal davon aus das $_POST im WHERE nicht korekt zugeordnet wird. Nur weis ich da auch kein Rat weiter

vt1816 17.08.2016 17:24:38

AW: selectbox befüllen
 
In Tabelle 2 nicht IDBereich (Text) sondern nur ID_aus_Tabelle1 speichern.
Dann braucht nicht mit JOIN abgefragt werden.
PHP-Code:

$sql1 "SELECT *
         FROM tabelle2
         WHERE ID_aus_Tbl1 = " 
.$_POST["value"] .";"

Das ganze Gerödel mit if() kann weg. Nur noch der Aufbau der SelectBox und fertig.

schlappi 19.08.2016 23:30:31

AW: selectbox befüllen
 
Hallo,

war beruflich und privat ein wenig eingespannt die letzten 1-2 Tage. Danke für deine Hilfe vt1816. Hat super geklappt und kann Zitat deins "das ganze Gerödel mit if()" ;) weglassen. Ich danke dir für den Tipp und deine Hilfestellung.
Nochmals danke.

schlappi 20.08.2016 08:53:26

AW: selectbox befüllen
 
Wobei vt1816 eine Frage hätte ich noch. Da ich in Tabelle2.IDbereich nun die ID aus Tabelle1 speichere, komm ich gerade mit meiner UPDATE-funktion in Schwierigkeiten. In dem Formular fürs UPDATE bekomm ich von der selectbox ja immer als NAME="" den Text übergeben vom IDbereich. Wie kann im SQL UPDATE dann aber die ID aus Tabelle1 übermitteln fürn IDbereich.

vt1816 21.08.2016 18:55:55

AW: selectbox befüllen
 
Sehe hier kein UPDATE Statment!?

schlappi 23.08.2016 23:37:44

AW: selectbox befüllen
 
PHP-Code:

$_POST['submit']
            
                                
$bereich $_POST['bereich'];
                                
$vergehen_kurz $_POST['vergehen_kurz'];
                                
$vergehen_lang $_POST['vergehen_lang'];
                                
$kosten $_POST['kosten'];
                                            
                
$abfrageA "UPDATE strafen SET
                                strafen.IDbereich = '"
.$bereich."',
                                strafen.vergehen_kurz = '"
.$vergehen_kurz."',
                                strafen.vergehen_lang = '"
.$vergehen_lang."',
                                strafen.kosten = '"
.$kosten."';

                            mysql_query($abfrageA); 

HTML-Code:

<select name="bereich">
              <?php while ($row = mysql_fetch_assoc($bereich)) { ?>
                      <option><? echo $row["bereich"]; ?></option>
              <? } ?>
              </select>
<input type="text" name="vergehen_kurz" value="<? echo $datensatz["vergehen_kurz"]; ?>" >
<input type="text" name="vergehen_lang" value="<? echo $datensatz["vergehen_lang"]; ?>" >
<input type="text" name="kosten" value="<? echo $datensatz["kosten"]; ?>" >
<input name="submit" type="submit" id="submit" value="Aktualisieren">

Im groben und ganzen bastel ich mir grad ein Strafenkatalog für meine Vereinsmannschaft.
In der selectbox wird mir ja von der Tabelle 1 der IDbereich ausgegeben. Der dient mir einfach nur um meine 3 oder mehr Bereiche die ich habe, als Gruppe auszugeben als TEXTform wo ich dann die jeweiligen Strafen hinzufügen kann bzw ändern kann. Wenn ich jetzt eine Strafe ändere die in Tabelle 2 hinzugefügt/geändert wird, schreibt er mir ja nicht, wie du vorgeschlagen hast die ID aus Tabelle 1 rein sondern den Text(IDbereich). Somit wäre ja meine selectbox.php wieder hinfällig, da ich ja wieder keine ZAHL sondern TEXT habe.

schlappi 24.08.2016 00:17:32

AW: selectbox befüllen
 
Ok hab mein Fehler bzw Problem gefunden. Habe in der Selectbox in <option> kein value gesetzt. wenn ich da $row["ID"] nehme setzt er mir auch die ID als Zahl.

trotzdem danke für alles.

vt1816 24.08.2016 13:30:56

AW: selectbox befüllen
 
Danke für die Rückmeldung und immer wieder gerne ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:55:33 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.