hoe krijg ik de data uit een html formulier zo in de arrys in $_post() dat ik ze kan gebruiken ?
Ik heb hulp nodig bij het oplossen van een probleem waar ik zelf als beginner met php niet uit kom.
Waar gaat het om:
Er is een database tabel met producten die bereidt en bezorgt kunnen worden bij de klanten.
Er is ook een wisselend dagmenu dat tegen een lagere prijs dan normaal wordt aangeboden.
De status van ieder product moet door de kok, op een gebruiksvriendelijke manier bijgewerkt kunnen worden, soms meerdere malen per dag. Gebruiksvriendelijk is in dit geval, op 1 pagina en voor alle producten tegelijk.
In de database zijn er o.a. de kolommen: SKU (product nummer), Nombre_del_producto (productnaam), Producto_disponible ( product beschikbaar ) en Comida_del_dia ( dagmaaltijd).
Of een product beschikbaar is en maaltijd van de dag is wordt aangegeven met een 1 of een 0 in de betreffende kolom in de database.
Wat heb ik gedaan om dit te realiseren:
Ik haal middels een query de benodigde gegevens van alle producten op uit de database en laat deze zien in een tabel.
Ik voer de Query nogmaals uit maar vervang nu in de tabel de gegevens voor “product beschikbaar” en “maaltijd van de dag” door inputs, respectievelijk een checkbox en een radio button, waarmee de kok de gewenste nieuwe status kan in geven.
Hierna worden de gegevens verstuurt naar “status_bijwerken.php”. Dit is nu, na wat experimenteren, even vereenvoudigd tot een pagina die alleen de arrays in $_POST() laat zien.
Er zijn “hidden inputs” opgenomen om er zeker van te zijn, dat er een 0 als waarde wordt gebruikt, indien een maaltijd niet beschikbaar is en geen dagmaaltijd is. Dit blijkt niet goed te werken! (bij arrays?) Hoe dit op te lossen is dan ook de kern mijn vraag.
Er is voor gekozen om geen “checked”radiobutton te gebruiken want er kan ook, geen dagmaaltijd, zijn.
Onderstaand de code van de tweede quiery en het formulier.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
echo "<form method='post' action='status_bijwerken.php'>";
echo "<br><b>Introduzca el nuevo estado deseado de los productos:</b> "; // laat de lijst opnieuw zien, maar nu met inputs, zodat de gewenste nieuwe status van de producten gekozen kan worden.
$sql = "SELECT `SKU`,`Nombre_del_producto`,`Producto_disponible` , `comida_del_dia` FROM `productas` ";
$result1 = $dbconn->query($sql);
echo "<table border= '1' width='80%'><tr> <th> SKU </th> <th> Nombre_del_producto </th> <th> Producto disponible</th> <th> Comida_del_dia </th> </tr>";
if ($result1->num_rows > 0) {
// output data of each row
while($row = $result1->fetch_assoc()) {
$sku = $row["SKU"] ;
$nombre = $row["Nombre_del_producto"];
echo " <tr>
<td><input type='hidden' name = 'Sku[]' value='$sku'> ".$sku."</td>
<td><input type='hidden' name = 'Nombre_del_producto[]' value='$nombre'>".$nombre."</td>
<td> <input type='hidden' name = 'Producto_disponible[]' value='0'> <input type='checkbox' name = 'Producto_disponible[]' value='1'> </td>
<td><input type='hidden' name = 'Comida_del_dia[]' value='0'> <input type='radio' name ='Comida_del_dia[]' value='1'></td>
</tr>"; }
}
echo "</table><br><input type='submit' name='submit' value='Enviar a la base de datos '></form><br><br>";// stuur nieuwe status naar de database
$dbconn->close();
echo "<br><b>Introduzca el nuevo estado deseado de los productos:</b> "; // laat de lijst opnieuw zien, maar nu met inputs, zodat de gewenste nieuwe status van de producten gekozen kan worden.
$sql = "SELECT `SKU`,`Nombre_del_producto`,`Producto_disponible` , `comida_del_dia` FROM `productas` ";
$result1 = $dbconn->query($sql);
echo "<table border= '1' width='80%'><tr> <th> SKU </th> <th> Nombre_del_producto </th> <th> Producto disponible</th> <th> Comida_del_dia </th> </tr>";
if ($result1->num_rows > 0) {
// output data of each row
while($row = $result1->fetch_assoc()) {
$sku = $row["SKU"] ;
$nombre = $row["Nombre_del_producto"];
echo " <tr>
<td><input type='hidden' name = 'Sku[]' value='$sku'> ".$sku."</td>
<td><input type='hidden' name = 'Nombre_del_producto[]' value='$nombre'>".$nombre."</td>
<td> <input type='hidden' name = 'Producto_disponible[]' value='0'> <input type='checkbox' name = 'Producto_disponible[]' value='1'> </td>
<td><input type='hidden' name = 'Comida_del_dia[]' value='0'> <input type='radio' name ='Comida_del_dia[]' value='1'></td>
</tr>"; }
}
echo "</table><br><input type='submit' name='submit' value='Enviar a la base de datos '></form><br><br>";// stuur nieuwe status naar de database
$dbconn->close();
In bijgaande screen-prints zie de 1 tabel met de inputs 2 de r_print van het resulterende $_post() array. Je ziet dat er extra regels aangemaakt worden, er zijn 12 producten dus er moeten ook 2 maal 12 status regels zijn.
Zonder de hidden inputs krijg je weer minder status regels dan productregels dus dat gaat ook niet goed.
En regel voor regel updaten wordt zo veel werk voor de kok... er komen nog wel 30 producten bij.
Wie heeft de oplossing?
1
2
Gewijzigd op 22/12/2018 18:46:43 door Douwe Hessel de Jong
https://www.phphulp.nl/php/forum/topic/hoe-krijg-ik-mijn-vraag-op-dit-forum/102643/last/
Deze sluit ik om het overzicht te bewaren.
Gewijzigd op 22/12/2018 18:49:15 door - Ariën -