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:
Und hier das 2. Formular:
Würde mich über jeden Denkanstoss dazu sehr freuen.
Viele Grüße,
Matthias
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_HOST, DB_USER, DB_PASSWORD, DB_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_HOST, DB_USER, DB_PASSWORD, DB_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);
?>
Viele Grüße,
Matthias
Kommentar