Checkbox waarde wordt gecached?
Ik ben bezig met het maken van een winkelwagen voor een pizza website. Ik loop alleen tegen een probleem aan. Als ik d.m.v. mootools ajax een post doe en de formulier reset dan haalt hij alles weg. Maar als je daarna nog een keer een product wilt toevoegen en geen checkboxen selecteerd dan gebruikt hij de laatst gebruikte waarde. Kan iemand mij hiermee helpen.
Hieronder een link naar een voorbeeld van het probleem.
http://www.tunesiealgemeen.nl/pizza/index.php?action=bestel
Post relevante code om je probleem aan te tonen! Zodra dit probleem is opgelost is, is dit topic niet meer te volgen en dus zinloos, dat is nu net niet de bedoeling.
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
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
$id = addslashes($_GET['id']);
$sql = "SELECT ID, naam, beschrijving, prijs, (SELECT ei FROM tblmatenhelper WHERE ID = substr('{$id}', -1)) as extra FROM producten WHERE ID = '{$id}'";
$dbHandler->executeQuery($sql);
$product = $dbHandler->getSingleRowAsObject();
$html = "<form action=\"modules.php?ajaxRequest=true&module=cart&taak=addpizza&id={$product->ID}&random=".mt_rand(1,10000)."\" method=\"post\" class=\"productForm\"><table class=\"modaltable\">\n";
$html .= "<tr>\n";
$html .= "<th style=\"width: 200px;\"><span style=\"float: left;\">{$product->naam}</span></th>\n";
$html .= "<th style=\"width: 30px;\">€ <span id=\"thePriceTag-{$product->ID}\">{$product->prijs}</span></th>\n";
$html .= "<th style=\"width: 30px;\"><a class=\"delete\" onclick=\"hideModal('modalPage-{$product->ID}', 'modalBackground-{$product->ID}')\"></a></th>\n";
$html .= "</tr>\n";
$html .= "<tr><td colspan=\"3\"><b>Aantal:</b><br /><input type=\"text\" name=\"aantal\" value=\"1\" /></td></tr>\n";
$html .= "<tr>\n";
$html .= "<td colspan=\"3\">";
$checkSql = "SELECT ID, naam FROM tblingredienten";
$dbHandler->executeQuery($checkSql);
$tRecords = $dbHandler->getRowsAsObjectArray();
$html .= "<input type=\"hidden\" id=\"cPrice-{$product->ID}\" value=\"{$product->prijs}\" />";
$htmt .= "<input type=\"hidden\" id=\"growPrice\" value=\"1.00\" />";
$html .= "<h3>Met ingredinten.</h3>\n";
foreach ($tRecords as $ing){
$html .= "<span class=\"blockmode\"><input type=\"checkbox\" name=\"withI[]\" onclick=\"clickMe(this, '{$product->ID}', '{$product->extra}')\" value=\"{$ing->ID}\" />{$ing->naam}</span>\n";
}
$html .= "</td></tr><tr><td colspan=\"3\"><h3>Zonder ingredinten.</h3>\n";
foreach ($tRecords as $ing){
$html .= "<span class=\"blockmode\"><input type=\"checkbox\" name=\"noI[]\" value=\"{$ing->ID}\" />{$ing->naam}</span>\n";
}
$html .= "</td>\n";
$html .= "</tr><tr><td</td><td></td><td><input type=\"submit\" value=\"Toevoegen\" onclick=\"resetForm(this.form, '{$product->ID}');\"/></td></tr></table></form>";
$html .= "";
$ch->write('temp', $html);
$sql = "SELECT ID, naam, beschrijving, prijs, (SELECT ei FROM tblmatenhelper WHERE ID = substr('{$id}', -1)) as extra FROM producten WHERE ID = '{$id}'";
$dbHandler->executeQuery($sql);
$product = $dbHandler->getSingleRowAsObject();
$html = "<form action=\"modules.php?ajaxRequest=true&module=cart&taak=addpizza&id={$product->ID}&random=".mt_rand(1,10000)."\" method=\"post\" class=\"productForm\"><table class=\"modaltable\">\n";
$html .= "<tr>\n";
$html .= "<th style=\"width: 200px;\"><span style=\"float: left;\">{$product->naam}</span></th>\n";
$html .= "<th style=\"width: 30px;\">€ <span id=\"thePriceTag-{$product->ID}\">{$product->prijs}</span></th>\n";
$html .= "<th style=\"width: 30px;\"><a class=\"delete\" onclick=\"hideModal('modalPage-{$product->ID}', 'modalBackground-{$product->ID}')\"></a></th>\n";
$html .= "</tr>\n";
$html .= "<tr><td colspan=\"3\"><b>Aantal:</b><br /><input type=\"text\" name=\"aantal\" value=\"1\" /></td></tr>\n";
$html .= "<tr>\n";
$html .= "<td colspan=\"3\">";
$checkSql = "SELECT ID, naam FROM tblingredienten";
$dbHandler->executeQuery($checkSql);
$tRecords = $dbHandler->getRowsAsObjectArray();
$html .= "<input type=\"hidden\" id=\"cPrice-{$product->ID}\" value=\"{$product->prijs}\" />";
$htmt .= "<input type=\"hidden\" id=\"growPrice\" value=\"1.00\" />";
$html .= "<h3>Met ingredinten.</h3>\n";
foreach ($tRecords as $ing){
$html .= "<span class=\"blockmode\"><input type=\"checkbox\" name=\"withI[]\" onclick=\"clickMe(this, '{$product->ID}', '{$product->extra}')\" value=\"{$ing->ID}\" />{$ing->naam}</span>\n";
}
$html .= "</td></tr><tr><td colspan=\"3\"><h3>Zonder ingredinten.</h3>\n";
foreach ($tRecords as $ing){
$html .= "<span class=\"blockmode\"><input type=\"checkbox\" name=\"noI[]\" value=\"{$ing->ID}\" />{$ing->naam}</span>\n";
}
$html .= "</td>\n";
$html .= "</tr><tr><td</td><td></td><td><input type=\"submit\" value=\"Toevoegen\" onclick=\"resetForm(this.form, '{$product->ID}');\"/></td></tr></table></form>";
$html .= "";
$ch->write('temp', $html);
Dit is de code van de formulier.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$$('form.productForm').addEvent('submit', function(e) {
e.stop();
this.set('send', {
noCache: true,
onComplete: function(response) {
$('myCart').innerHTML = response;
renderTags();
}
});
this.send();
});
e.stop();
this.set('send', {
noCache: true,
onComplete: function(response) {
$('myCart').innerHTML = response;
renderTags();
}
});
this.send();
});
Dit is de code van de javascript.
1. is de code overzichtlijk
-> antwoord: Nee
2. worden de juiste controles en validaties uitgevoerd
-> antwoord: Nee
3. weet ik waar ik mee bezig ben
-> antwoord: Nee, maar ja daarom stel je deze vraag blijkbaar ook
Post relevante code van de form-afhandeling het is nu gissen wat daar gebeurt!
Aandachtspunten:
1. addslashes is niet de juiste manier van `escapen` gebruik mysql_real_escape string indien het een sql actie is... - in principe is addslashes een achterhaalde functie welke je nu nergens meer in een script wilt gerbuiken -. (zo zijn er nog wel meer php functies welke je niet dient te gebruiken, maar dat terzijde leggende)
2. maak geen overbodige variabelen aan
3. manier van string qouten, haal je variabelen buiten qoutes en qoute je string met '', muz sql-statements
4. programeer overzichtelijk
5. controleer en valideer op correcte wijze
6. ga nooit zomaar kwakkeloos ervan uit dat een query lukt
Net even getest met IE8 en FF3.5, maar ik kan je probleem niet reproduceren. Met welke browser test je?
Dank jullie wel voor jullie hulp.
Ik snap echt niet waarom jij op deze manier werkt...
Kzou voor je er aan verder werkt eens goed nadenken over de manier dat je wilt gebruiken...