Multiple rows laden en updaten
De tabel heeft 4 kolommen:
- id
- positie
- naam
- prijs
Ik wil dat de gebruiker de laatste 3 kan wijzigen. De positie is van belang omdat ik wil dat de producten zeg maar op positie worden geplaatst, dit is echter pas later belangrijk.
Het probleem is de update, die werkt niet!
Ik zit op dit moment echt vast en wordt er gek van, het lijkt zo simpel.
Iemand een tip?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$_POST = RealEscape($_POST);
$id = $_POST['editid'];
$positie = $_POST['positie'];
$naam = $_POST['naam'];
$prijs = $_POST['prijs'];
if ($_POST['submit'] == "Update" && $editid > 0)
{$query = "UPDATE $tab_prijzen SET positie='$positie', naam='$naam', prijs='$prijs'
WHERE id='$editid'";
mysql_query($query);
echo "<script language=\"javascript\">location.href='editprijzen.php';</script>";
}
$query="SELECT * FROM $tab_prijzen";
$fetch = mysql_query($query);
echo "<form id=\"editprijzenform\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<table id=\"editprijzen\">";
while ($rows = mysql_fetch_array($fetch))
{
echo "<tr>
<td><input type=\"text\" name=\"positie\" size=\"5\" value=\"".$rows['positie']."\"></td>
<td><input type=\"text\" name=\"naam\" size=\"20\" value=\"".$rows['naam']."\"></td>
<td><input type=\"text\" name=\"prijs\" size=\"10\" value=\"".$rows['prijs']."\"></td>
</tr>";
}
echo "<tr>
<td>
<input type=\"submit\" name=\"submit\"
value=\"Update\">
<input type=\"hidden\" name=\"editid\" value=\"".$rows['id']."\">
</td>
</tr>
</table>
</form>";
?>
$_POST = RealEscape($_POST);
$id = $_POST['editid'];
$positie = $_POST['positie'];
$naam = $_POST['naam'];
$prijs = $_POST['prijs'];
if ($_POST['submit'] == "Update" && $editid > 0)
{$query = "UPDATE $tab_prijzen SET positie='$positie', naam='$naam', prijs='$prijs'
WHERE id='$editid'";
mysql_query($query);
echo "<script language=\"javascript\">location.href='editprijzen.php';</script>";
}
$query="SELECT * FROM $tab_prijzen";
$fetch = mysql_query($query);
echo "<form id=\"editprijzenform\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<table id=\"editprijzen\">";
while ($rows = mysql_fetch_array($fetch))
{
echo "<tr>
<td><input type=\"text\" name=\"positie\" size=\"5\" value=\"".$rows['positie']."\"></td>
<td><input type=\"text\" name=\"naam\" size=\"20\" value=\"".$rows['naam']."\"></td>
<td><input type=\"text\" name=\"prijs\" size=\"10\" value=\"".$rows['prijs']."\"></td>
</tr>";
}
echo "<tr>
<td>
<input type=\"submit\" name=\"submit\"
value=\"Update\">
<input type=\"hidden\" name=\"editid\" value=\"".$rows['id']."\">
</td>
</tr>
</table>
</form>";
?>
Gewijzigd op 26/07/2011 21:42:25 door Ferdi Verbeek
Verder geen vars zomaar kopiëren. Vars buiten quotes. Denk aan sql-injection. Je kontroleert niks. Ook foutafhandeling ontbreekt. Gebruik bij echo enkele quotes zodat je de dubbele html-quotes niet hoeft te escapen.
http://www.phpeasystep.com/mysql/10.html
Heb dat dus aangepast. Ik zie nu beide rijen, maar kan nog niet updaten :(
Er is een sql check, dat gaat realscape, staat in andere php file. Maar dezelfde reactie gaf je een tijd geleden ook al in een oudere topic van mij. Ik ga geen controles inbouwen, dat kost me uren werk en het is net of hier reclame heerst voor dat scriptje. We zijn hier toch om elkaar te helpen in de codes?
Goed, nu weer on topic. De update werkt nog steeds niet. Ik weet niet precies hoe ik nu onderscheid maak bij het updaten tussen de verschillende rijen. De update moet toch per rij gaan?
Gewijzigd op 26/07/2011 21:23:50 door Ferdi Verbeek
Dus niet name="positie" maar name="positie[en_hier_het_record_id]".
Dit werkt dus niet, ik begrijp ook het volgende niet:
Dit staat in de update query. Hoe weet de query nou wat de editid is?
Toevoeging op 26/07/2011 22:12:17:
Blijkbaar moet ik meer gaan kijken naar dat [] gedoe en het count gebeuren dat ook op die site staat. Maar ik heb het idee dat dat zo oud is, dat sommige dingen nu anders moeten. Anyway, ik hoop te gaan snappen wat er staat.
Gewijzigd op 26/07/2011 21:51:17 door Ferdi Verbeek
Waar haal je die $editid vandaan en werkt het wel waar je hem vandaan haalt? MIsschien wat echo's in je script zetten om te kijken hoever je komt?
echo $editid;
Ik probeer dit script te volgen:
http://www.phpeasystep.com/mysql/10.html
Maar ik snap niet wat hier gebeurt. Ik vind dit een vreemde manier van notatie:
Toevoeging op 27/07/2011 20:23:35:
Goed, ik heb besloten dat ik helemaal opnieuw begin. Misschien kunnen jullie mij een klein beetje helpen want ik snap de volgende dingen niet:
In het begin kun je die variabelen definiëren. Heet dat zo? Je hebt dan bijvoorbeeld dit:
$naam = $_POST['naam'];
Wat is dit? Wat moet ik ermee? En waarom staat er POST?
Stap 1 dus... Zo moet het vast lukken, veel snap ik maar een aantal dingen helemaal niet waarvan dit de 1e is. Ik hoop dat iemand me een en ander kan uitleggen.
Men maakt daarin gebruik van shorttags. Wordt doorgaans afgeraden.
$naam = $_POST['naam']; zie ik niet als definiëren van een variabele maar als kopiëren van variabele. Doorgaans zinloos.
Heb even gekeken naar het voorbeeld op die link van jou; zou ik niet gebruiken als basis/om van te leren. Daarin zitten een aantal dingen die volgens de kenners/experts hier genadeloos afgebrand worden...
Kijk eens op/ begin met : ohttp://www.phptuts.nl/view/39/
Gewijzigd op 27/07/2011 21:26:06 door Obelix Idefix
Dank u, ga ik zeker doen :)