Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown Werte aus MySQL DB

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dropdown Werte aus MySQL DB

    Hi,
    ich habe vor einiger Zeit ein Bestelltool für die Firma geschrieben und versuche nun, mich wieder etwas in PHP einzuarbeiten.

    Zur Zeit geht es darum, dass ich ein Formular habe, in dem der User eventuell mehrere Artikel ausgewählt hat und über eine Dropdown Liste eine Kostenstelle auswählen kann.

    Von dort gelangt er auf ein weiteres Formular, wo die Kostenstellen fü jeden Artikel einzeln geändert werden können.

    Mein Problem: derzeit sind die Kostenstellen noch in HTML fest codiert, dass heisst, jedesmal, wenn eine neue Kostenstelle angelegt wird, muss ich mehrere Formulare anpassen.
    Das ist natürlich ineffizient und Fehleranfällig.

    Ich habe die Kostenstellen ohnehin in einer Datenbank stehen und hätte nun gerne, dass die Dropdown Liste mit Werten aus der DB gefüllt wird.

    Für das erste Formular funktioniert das schon, beim zweiten habe ich das Problem, dass ich nicht weiss, wie ich alle Kostenstellen aus der Datenbank anzeigen kann und gleichzeitig den ausgewählten Wert aus dem 1. Formular als "Selected" ausgeben kann.

    Hier ist der Code des 1. Formulars:
    PHP-Code:
    <?php
    // connect to the database
    $page_title 'Schritt 2 von 4: Kostenstelle eingeben';
    require_once(
    'inc/header.php');
    // Verbindung mit der Datenbak herstellen
    $db mysqli_connect(DB_HOSTDB_USERDB_PASSWORDDB_NAME);
    //Überprufen, ob Charset = UTF8
    if (!mysqli_set_charset($db"utf8")) {
    printf("Error loading character set utf8: %s\n"mysqli_error($db));
    } else {
    //Do nothing
    }
    //Überprüft, welcher Benutzer angemeldet ist und wählt den aktuellen Bestellvorgang
        
    if(isset($_POST['ks_select_id'])){
        
    $user $_SESSION['username'];
        
    $query_max "SELECT max(order_id) from orders  WHERE ordered_by = '$user'";
        
    $result_max mysqli_query($db$query_max); 
        
    $row mysqli_fetch_array($result_max);   
        
    $max_id $row[0];
        
    $query "SELECT * FROM orders
        INNER JOIN ordered_articles
        USING ( order_id )
        WHERE order_id = 
    $max_id";
        
    $result mysqli_query($db$query);
        
    //Aktualisiert die Kostenstelle, wenn der Button gedrückt wurde und springt zur nächsten Seite
        
    $ks_id $_POST['ks_select_id'];
        
    $query2 "UPDATE ordered_articles SET ks_id = $ks_id WHERE order_id=$max_id";
        echo 
    $query2;
        
    mysqli_query($db$query2) or die("FAILURE");
        
    header("location:ks_kt.php");
        }
        
    //Zeigt das Formular zur Auswahl der Kostenstelle an
        
    else{
    //Überprüft, welcher Benutzer angemeldet ist und wählt den aktuellen Bestellvorgang
        
    $user $_SESSION['username'];
        
    $query_max "SELECT max(order_id) from orders  WHERE ordered_by = '$user'";
        
    $result_max mysqli_query($db$query_max); 
        
    $row mysqli_fetch_array($result_max);   
        
    $max_id $row[0];
        
    $query "SELECT * FROM orders
        INNER JOIN ordered_articles
        USING ( order_id )
        WHERE order_id = 
    $max_id";
        
    $result mysqli_query($db$query);
    //Wählt die existierenden Kostenstellen aus der Datenbanktabelle 'kostenstellen' aus und zeigt diese in einer Dropdownliste
        
    $result2 mysqli_query($db,"SELECT * FROM kostenstellen where active = 'y' ORDER by Ko_St_ID");    
        echo 
    '<form id="kostenstellen_form" method="post">';
        echo 
    "<select id='ks_select_id' name = 'ks_select_id'>";
        while(
    $row mysqli_fetch_array($result2))
          {
        echo 
    "<option value='" $row['ks_id'] . "'>" $row['Ko_St_ID'] . ' ' $row['KS_Desc'] . "</option>";
          }
        echo 
    "</select>";
        
        echo 
    '                           ';
        echo 
    "<input type='submit' name='submit' value='Weiter in der Bestellung' /><br><br>" ;
        echo 
    '<br>';
        echo 
    "</div>";
    }
    ?>
    </td>
    <?php
    mysqli_close
    ($db);
    ?>

    Und hier das 2. Formular:
    PHP-Code:
    <?php
    // connect to the database
    $page_title 'Schritt 4 von 5: Kostenstelle überprüfen';
    require_once(
    'inc/header.php');
    $db mysqli_connect(DB_HOSTDB_USERDB_PASSWORDDB_NAME);
    // run the query and put the results in an array variable called $result
    $user $_SESSION['username'];
      
    $query_max "SELECT max(order_id) from orders  WHERE ordered_by = '$user'";
      
    $result_max mysqli_query($db$query_max); 
      
    $row mysqli_fetch_array($result_max);   
      
    $max_id $row[0];
      
    $query "SELECT * FROM orders
    INNER JOIN ordered_articles
    USING ( order_id )
    LEFT JOIN sap_art USING (art_id)
    WHERE order_id = 
    $max_id";
      
    $result mysqli_query($db$query);
    //$result_max = mysqli_query($db, $query_max); 
    // start a counter in order to number the input fields for each record
    $i 0;
    // open a form
    print "<form name='namestoupdate' method='post' action='update_ks_kt.php'>\n";
    echo 
    '<table id=articles>';
    ?>
    <tr>
     <th><b>Bestellte Menge</b></th>
     <th><b>Artikel</b></th>
     <th><b>Kostenstelle</b></th>
     <th><b>Kommentar</b></th>
      </tr>
    <?php
    while ($ordered_articles mysqli_fetch_array($result)) {
    $ks_id $ordered_articles['ks_id'];
    $kt_id $ordered_articles['kt_id'];
    echo 
    "<input type='hidden' name='oa_id[$i]' value='{$ordered_articles['oa_id']}' />";
    echo 
    '<tr>';
    echo 
    "<td>{$ordered_articles['qty']}</td>";
    echo 
    "<td>{$ordered_articles['art_beschr']} </td>";
    echo 
    "<td>";
    ?>
    <select name="ks_id[]">
            <option value="28" <?php if ($ks_id=="00") echo "selected"?>>Bitte auswählen</option>
            <option value="4" <?php if ($ks_id=="4") echo "selected"?>> AN001 - 100010</option>
            <option value="5" <?php if ($ks_id=="5") echo "selected"?>>AN002 - 100020</option>        
            <option value="15" <?php if ($ks_id=="15") echo "selected"?>>ADMINISTRATION - 300010</option>
            <option value="16" <?php if ($ks_id=="16") echo "selected"?>>USP PD - 200010</option>
            <option value="17" <?php if ($ks_id=="17") echo "selected"?>>USP GMP - 200015 </option>
            <option value="18" <?php if ($ks_id=="18") echo "selected"?>>DSP PD - 200020 </option>
            <option value="19" <?php if ($ks_id=="19") echo "selected"?>>DSP GMP - 200025 </option>
            <option value="20" <?php if ($ks_id=="20") echo "selected"?>>QC - 200030</option>
            <option value="21" <?php if ($ks_id=="21") echo "selected"?>>IT - 300020</option>
            <option value="22" <?php if ($ks_id=="22") echo "selected"?>>QA - 300030 </option>
            <option value="23" <?php if ($ks_id=="23") echo "selected"?>>PM - 300040</option>
            <option value="24" <?php if ($ks_id=="24") echo "selected"?>>HR - 300050</option>
            <option value="25" <?php if ($ks_id=="25") echo "selected"?>>R&D - 400010 </option>
            <option value="26" <?php if ($ks_id=="26") echo "selected"?>>SALES - 500010 </option>
            <option value="27" <?php if ($ks_id=="27") echo "selected"?>>MARKETING - 500020</option>
        </select><br>
    <?php
    echo "</td>";
    echo 
    "<td> <input type='text' size='50'  maxlength='300' name='kt_comment[$i]' value='{$ordered_articles['kt_comment']}' /></td>";
    echo 
    "<td>";
    ?>
    <?php
    echo '</tr>'
    // add 1 to the count, close the loop, close the form, and the mysql connection
    ++$i;
    }
    echo 
    '</table>';
    echo 
    '<br>';
    echo 
    "<input type='submit' value='Weiter in der Bestellung' /><br><br>" ;
    echo 
    '<br>';
    print 
    "</form>";
    echo 
    "</div>";
    //require_once ('inc/footer.php');
    mysqli_close($db);
    ?>
    Würde mich über jeden Denkanstoss dazu sehr freuen.
    Viele Grüße,
    Matthias


  • #2
    dass ich nicht weiss, wie ich alle Kostenstellen aus der Datenbank anzeigen kann und gleichzeitig den ausgewählten Wert aus dem 1. Formular als "Selected" ausgeben kann.
    http://php-de.github.io/jumpto/auswa...misch-erzeugen

    Den ersten Wert hast ("weißt") du ja, dh Werte aus der DB per Schleife in das Select und pro Durchlauf prüfen ob der aktuelle Wert dem vom ersten Form entspricht und wenn dann ein selected im HTML ergänzen.


    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Ah, okay, das werde ich mir die Tage mal genauer anschauen.
      Vielen Dank erst mal.

      Gruß, Matthias

      Kommentar

      Lädt...
      X