Hallo,
Hopelijk kan iemand me hiermee helpen, ik ben maar een beginnende PHPer en pruts het meeste voor elkaar m.b.v. copy and paste.
Nu heb ik het volgende probleem (zie code):
Er wordt een lijstje gemaakt vanuit MySQL, daar wil ik een of meer regels bewerken die ik met een vinkje markeer in de checkbox.
Hoe sla ik de gemarkeerde regels weer op in de DB?
Meerdere foreach?

Bij voorbaat dank.
Rob


<?php
// Create table
echo "<form name='form' method='post' action=''>";
echo "<table cellpadding='1' border='0'>";
echo "<thead><tr>
<th>&nbsp;</th>
<th>Produkt</th>
<th>Omschrijving</th>
<th>Hoeveelheid</th>
<th>Prijs</th>
</tr></thead>";

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
echo "<tr>
<td><input name='checkbox[]' type='checkbox' session_id='checkbox[]' value=' ".$row['produkt_nummer']." '></td>
<td><input type='text' value=' ".$row['produkt']." ' maxlength='20' size='20' name='produkt[]' /></td>
<td><input type='text' value=' ".$row['omschrijving']." ' maxlength='30' size='30' name='omschrijving[]' /></td>
<td><input type='text' value=' ".$row['hoeveelheid']." ' maxlength='10' size='10' name='hoeveelheid[]' /></td>
<td><input type='text' value=' ".$row['prijs']." ' maxlength='10' size='10' name='prijs[]' /></td>
</tr>";
}
echo "<tr>
<td colspan='5'><hr /><input name='submit' type='submit' value='Opslaan'></td>
</tr>
</table>";

// Check if checkbox active, start this
if (isset($_POST['submit'])) {
$proceed = false; // Check of er iets gedaan is
foreach ($_POST['nummer'] as $nummer) { // Loop elke checkbox langs en sla zijn value op
$sql = "INSERT INTO $tbl_name
(produkt, omschrijving, hoeveelheid, prijs)
VALUES ('$produkt', '$omschrijving', '$hoeveelheid', 'prijs')
";
if (@mysql_query($sql)) {
$proceed = true; // Ga door naar refresh
}
}
if ($proceed) {
echo "<meta http-equiv='refresh' content='0;URL=/pages/test.php'>";
}
}
echo "</form>";
?>
Ik zou beginnen met PHP onder de knie krijgen als je echt ingewikkeldere dingen wilt gaan doen. ( Zoals mysql handelingen )


Aan je code is heel veel niet correct.

- Je hebt variabelen niet buiten quotes.
- Je gebruikt @ om fouten te onderdrukken.
- ipv mysql_fetch_array zou ik nu mysql_fetch_assoc gebruiken.

Controle zou ik m.b.v.

<?php

if($_SERVER['REQUEST_METHOD'] == 'post') {

// hier je code

}

?>

controleren ipv met

<?php
if (isset($_POST['submit'])) {
?>

Verder mis ik foutafhandeling. als er nu iets fout gaat weet je niet wat er fout gaat.
Ik zou als ik jou was de volgende tutorial doornemen en je script hierop aanpassen. Daarna kunnen we verder kijken naar wat voor foutmelding je krijgt en hoe deze op te lossen

http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
Hallo Reshad,

Bedankt voor je supersnelle reactie, ik zal de tutorial eens doornemen en kijken of ik de fouten er uit krijg.
Zoals gezegd heb ik het meeste met knippen en plakken bij elkaar gesprokkeld, ik ben daarmee dus niet de enigste die verkeerde/slordige code schrijft. :-)
Dat ben je zeker niet! Maar mijn mening is leer het correct programmeren, of laat iemand het voor je doen! Met kopiƫren en plakken kan je misschien een paar simpele dingen doen maar als je weet wat je doet kom je een heel eind verder!
Reshad F op 12/03/2013 10:21:17

Aan je code is heel veel niet correct.

- Je hebt variabelen niet buiten quotes.
- Je gebruikt @ om fouten te onderdrukken.
- ipv mysql_fetch_array zou ik nu mysql_fetch_assoc gebruiken.

Variabelen niet buiten quotes heeft niets te maken met het al dan niet correct zijn van je code. Is een kwestie van programmeerstijl en zeker in dit geval (SQL-query met veel quotes) vind ik het een stuk leesbaarder om alles binnen de quotes te houden. En iets wat leesbaar is, geeft een stuk minder kans op fouten.

Ik ben het wel met je eens dat het in principe slecht is om fouten te onderdrukken.

Ook vind ik het niet per se fout om fetch_array te gebruiken in plaats van fetch_assoc. Ik zou eerder adviseren om mysqli te gebruiken in plaats van mysql. Dan loop je tenminste niet het risico dat je over een tijdje je code moet gaan ombouwen omdat PHP de oude mysql-extensie niet meer ondersteunt.

Reageren