Checkbox formulier
Ik heb een checkbox formulier waarin een aantal objecten staan die worden geselecteerd uit de database. Als ik op submit druk wil ik dat die de waardes van de objecten bij elkaar optel. Deze staan niet vermeld in het formulier. Wat ik er dus bij wil hebben is een optie die de waardes van het voertuig uit de database halen bij elkaar optelt, en dan als het persoon genoeg geld heeft repareert.
Heeft dit persoon geld te weinig dan wil een foutmelding krijgen kan iemand mij ermee helpen?
Het script:
Heeft dit persoon geld te weinig dan wil een foutmelding krijgen kan iemand mij ermee helpen?
Het script:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
if(isset($_POST['repair'])){
$aDoor = $_POST['id'];
if(empty($aDoor)){
echo'
<tr>
<td class="mainTxt" colspan="8">
Je hebt geen voertuigen geselecteerd.
</td>
</tr>
';
}
else{
$N = count($aDoor);
for($i=0; $i < $N; $i++){
$test = mysql_query("SELECT * FROM `voertuigen` WHERE `owner`='$data->username' AND `ID`='$aDoor[$i]' AND `game`='$game'");
$testing = mysql_fetch_object($test);
mysql_query("UPDATE `leden` SET `cash`=`cash`-'$prijs' WHERE `username`='$data->username' AND `game`='$game'");
mysql_query("DELETE FROM `voertuigen` WHERE `game`='$game' AND `ID`='$aDoor[$i]'");
}
echo'
<tr>
<td class="mainTxt" colspan="8">
Je hebt '.$N.' voertuigen gerepareerd!
</td>
</tr>
';
}
}
$voertuig = mysql_query("SELECT * FROM `voertuigen` WHERE `game`='$game' AND `soort`='auto' AND `owner`='$data->username'");
while($info = mysql_fetch_assoc($voertuig)){
$id = mysql_real_escape_string($info['ID']);
$types = mysql_real_escape_string($info['soort']);
$models = mysql_real_escape_string($info['nummer']);
$schade = mysql_real_escape_string($info['schade']);
$waardes = mysql_real_escape_string($info['waarde']);
$landz = mysql_real_escape_string($info['land']);
echo'
<tr>
<td class="mainTxt">
'.$id.'
</td>
<td class="mainTxt">
'.$types.'
</td>
<td class="mainTxt">
'.$models.'
</td>
<td class="mainTxt">
'.$schade.'%
</td>
<td class="mainTxt">
€'.$waardes.'
</td>
<td class="mainTxt">
'.$landz.'
</td>
<td class="mainTxt">
<a>
<img src="images/wrench.png" title="Repareren!" alt="Repareren!" />
</a>
<a>
<img src="css/money.png" title="Verkopen!" alt="Verkopen!" />
</a>
</td>
<td class="mainTxt">
<input type="checkbox" name="id[]" value="'.$id.'" />
</td>
</tr>
';
}
echo'
<tr>
<td class="mainTxt" colspan="8" style="text-align:center;">
<br />
<input id="input" name="sell" type="submit" value="Verkoop" />
<input id="input" name="ship" type="submit" value="Verscheep" />
<input id="input" name="repair" type="submit" value="Repareer" />
<br />
<br />
</td>
</tr>
</form>
</table>
';
?>
if(isset($_POST['repair'])){
$aDoor = $_POST['id'];
if(empty($aDoor)){
echo'
<tr>
<td class="mainTxt" colspan="8">
Je hebt geen voertuigen geselecteerd.
</td>
</tr>
';
}
else{
$N = count($aDoor);
for($i=0; $i < $N; $i++){
$test = mysql_query("SELECT * FROM `voertuigen` WHERE `owner`='$data->username' AND `ID`='$aDoor[$i]' AND `game`='$game'");
$testing = mysql_fetch_object($test);
mysql_query("UPDATE `leden` SET `cash`=`cash`-'$prijs' WHERE `username`='$data->username' AND `game`='$game'");
mysql_query("DELETE FROM `voertuigen` WHERE `game`='$game' AND `ID`='$aDoor[$i]'");
}
echo'
<tr>
<td class="mainTxt" colspan="8">
Je hebt '.$N.' voertuigen gerepareerd!
</td>
</tr>
';
}
}
$voertuig = mysql_query("SELECT * FROM `voertuigen` WHERE `game`='$game' AND `soort`='auto' AND `owner`='$data->username'");
while($info = mysql_fetch_assoc($voertuig)){
$id = mysql_real_escape_string($info['ID']);
$types = mysql_real_escape_string($info['soort']);
$models = mysql_real_escape_string($info['nummer']);
$schade = mysql_real_escape_string($info['schade']);
$waardes = mysql_real_escape_string($info['waarde']);
$landz = mysql_real_escape_string($info['land']);
echo'
<tr>
<td class="mainTxt">
'.$id.'
</td>
<td class="mainTxt">
'.$types.'
</td>
<td class="mainTxt">
'.$models.'
</td>
<td class="mainTxt">
'.$schade.'%
</td>
<td class="mainTxt">
€'.$waardes.'
</td>
<td class="mainTxt">
'.$landz.'
</td>
<td class="mainTxt">
<a>
<img src="images/wrench.png" title="Repareren!" alt="Repareren!" />
</a>
<a>
<img src="css/money.png" title="Verkopen!" alt="Verkopen!" />
</a>
</td>
<td class="mainTxt">
<input type="checkbox" name="id[]" value="'.$id.'" />
</td>
</tr>
';
}
echo'
<tr>
<td class="mainTxt" colspan="8" style="text-align:center;">
<br />
<input id="input" name="sell" type="submit" value="Verkoop" />
<input id="input" name="ship" type="submit" value="Verscheep" />
<input id="input" name="repair" type="submit" value="Repareer" />
<br />
<br />
</td>
</tr>
</form>
</table>
';
?>
Gewijzigd op 29/08/2011 22:38:41 door Martijn L
Heb wel een aantal andere opmerkingen:
Waarom op regel 3 een variabele aanmaken?
Waar is de controle op de input?
Backtics horen volgens mij niet thuis in een query.
Variabelen buiten quotes.
Selecteer veldnamen en niet *.
Zorg voor beveiliging van je query's.
Wat is het nut van regel 32 t/m 37. Lijkt me op klok en klepel.
Zorg voor foutafhandeling bij query's.
Misschien handig om duidelijke(re) namen mee te geven aan variabelen.
Hebben de query's op regel 19 en 20 nut? Wat doet die for-lus eigenlijk?
Zie zo snel ook niet waar $voertuig vandaan komt (regel 31).
Waarom op regel 3 een variabele aanmaken?
Waar is de controle op de input?
Backtics horen volgens mij niet thuis in een query.
Variabelen buiten quotes.
Selecteer veldnamen en niet *.
Zorg voor beveiliging van je query's.
Wat is het nut van regel 32 t/m 37. Lijkt me op klok en klepel.
Zorg voor foutafhandeling bij query's.
Misschien handig om duidelijke(re) namen mee te geven aan variabelen.
Hebben de query's op regel 19 en 20 nut? Wat doet die for-lus eigenlijk?
Zie zo snel ook niet waar $voertuig vandaan komt (regel 31).
Obelix en Idefix als eerst bedankt voor je snelle reactie.
Ik zal 1 voor 1 je vragen beantwoorden, graag ook een reactie met hoe het beter kan.
Waarom op regel 3 een variabele aanmaken?
Ik heb op het internet na een tijd zoeken dit als enige tutorial voor het verwerken van een checkbox formulier, afwijken hiervan leek me niet nodig aangezien ze wel verwerkt werden.
Waarom op regel 3 een variabele aanmaken?
Ik heb werkelijk geen idee sorry:$ dit was mijn 1e script met een werkende checkbox dus waarschijnlijk de beveiliging over het hoofd gezien.
Backtics horen volgens mij niet thuis in een query.
Ik heb geleerd van iemand die me het begin van php leerde, is dit verkeerd?
Variabelen buiten quotes.
Die snap ik niet graag uitgebreidere uitleg?
Selecteer veldnamen en niet *.
Is het veiliger als je elk veld in een mysql_query apart noemt?
Zorg voor beveiliging van je query's.
Ik dacht dat je een query beveiligt dmv mysql_real_escape_string() zoals mij is aangeleerd door het bovengenoemde persoon
Edit:
Na even zoeken op het internet zie ik dat het alleen werkt voor het plaatsen van variabelen in de database
Wat is het nut van regel 32 t/m 37. Lijkt me op klok en klepel.
Zie bovenstaande antwoord:P
Zorg voor foutafhandeling bij query's.
Hierbij bedoel je de mysql_error()?
Misschien handig om duidelijke(re) namen mee te geven aan variabelen.
In een script van 1000+ regels wordt het soms een beetje moeilijk om verschillende variabelen te bedenken vandaar de aparte variabelen
Hebben de query's op regel 19 en 20 nut? Wat doet die for-lus eigenlijk?
Deze hebben wel degelijk nut als ik de beveiliging erbij plaats wat jij al noemde
Zie zo snel ook niet waar $voertuig vandaan komt (regel 31).
Erbij geplaatst zag inderdaad dat ontbrak
Ik zal 1 voor 1 je vragen beantwoorden, graag ook een reactie met hoe het beter kan.
Waarom op regel 3 een variabele aanmaken?
Ik heb op het internet na een tijd zoeken dit als enige tutorial voor het verwerken van een checkbox formulier, afwijken hiervan leek me niet nodig aangezien ze wel verwerkt werden.
Waarom op regel 3 een variabele aanmaken?
Ik heb werkelijk geen idee sorry:$ dit was mijn 1e script met een werkende checkbox dus waarschijnlijk de beveiliging over het hoofd gezien.
Backtics horen volgens mij niet thuis in een query.
Ik heb geleerd van iemand die me het begin van php leerde, is dit verkeerd?
Variabelen buiten quotes.
Die snap ik niet graag uitgebreidere uitleg?
Selecteer veldnamen en niet *.
Is het veiliger als je elk veld in een mysql_query apart noemt?
Zorg voor beveiliging van je query's.
Ik dacht dat je een query beveiligt dmv mysql_real_escape_string() zoals mij is aangeleerd door het bovengenoemde persoon
Edit:
Na even zoeken op het internet zie ik dat het alleen werkt voor het plaatsen van variabelen in de database
Wat is het nut van regel 32 t/m 37. Lijkt me op klok en klepel.
Zie bovenstaande antwoord:P
Zorg voor foutafhandeling bij query's.
Hierbij bedoel je de mysql_error()?
Misschien handig om duidelijke(re) namen mee te geven aan variabelen.
In een script van 1000+ regels wordt het soms een beetje moeilijk om verschillende variabelen te bedenken vandaar de aparte variabelen
Hebben de query's op regel 19 en 20 nut? Wat doet die for-lus eigenlijk?
Deze hebben wel degelijk nut als ik de beveiliging erbij plaats wat jij al noemde
Zie zo snel ook niet waar $voertuig vandaan komt (regel 31).
Erbij geplaatst zag inderdaad dat ontbrak
Gewijzigd op 29/08/2011 23:39:35 door Martijn L
Iemand die me een betere manier kan laten zien van de fouten die zijn genoemd door Obelix en Idefix?
Mag ik vragen wat het voor een nut heeft om wel commentaar te geven maar geen manier zoals het beter moet?
Hoe het beter moet: er zijn diverse tuts. In veel topics op dit forum wordt uitgelegd wat er fout gaat en hoe het beter kan/moet en ook waar je het kunt vinden. Zo'n beetje alles wat ik heb aangegeven, vind ik ook terug in andere topics.
Heb je zelf Google al gebruikt om uitleg te vinden??
Omdat het werkt, wil het nog niet zeggen dat het goed is. Door het aanmaken van een variabele ben je 1) het overzicht kwijt waar het vandaan komt (input of vanuit het script) en 2) gebruik je onnodig geheugen.
Heb je zelf Google al gebruikt om uitleg te vinden??
Martijn L op 29/08/2011 22:49:57:
Waarom op regel 3 een variabele aanmaken?
Ik heb op het internet na een tijd zoeken dit als enige tutorial voor het verwerken van een checkbox formulier, afwijken hiervan leek me niet nodig aangezien ze wel verwerkt werden.
Ik heb op het internet na een tijd zoeken dit als enige tutorial voor het verwerken van een checkbox formulier, afwijken hiervan leek me niet nodig aangezien ze wel verwerkt werden.
Omdat het werkt, wil het nog niet zeggen dat het goed is. Door het aanmaken van een variabele ben je 1) het overzicht kwijt waar het vandaan komt (input of vanuit het script) en 2) gebruik je onnodig geheugen.
Martijn L op 29/08/2011 22:49:57:
Waarom op regel 3 een variabele aanmaken?
Ik heb werkelijk geen idee sorry:$ dit was mijn 1e script met een werkende checkbox dus waarschijnlijk de beveiliging over het hoofd gezien.
Ik heb werkelijk geen idee sorry:$ dit was mijn 1e script met een werkende checkbox dus waarschijnlijk de beveiliging over het hoofd gezien.
Quote:
Leer jezelf aan om alles te controleren wat via post/get je script in komt. Controleer ook alle query's of er een (juiste) uitkomst is. En dan bij voorkeur niet met 'or die'.
Het schijnt (af en toe) tot foute/niet werkende query's te kunnen leiden.
Probeer het eens.
Het geeft je inzicht in wat je aan het doen bent en voorkomt bij complexere query's dat dingen niet gaan zoals je zou willen.
Heb het idee van klok en klepel. mysql_real_escape_string() Gebruik je in een query, niet, zoals jij nu doet bij de output. En nee, ook niet alleen! bij het plaatsen van variabelen.
Ja, maar dan volledig/nette foutafhandeling.
En om je een concreet antwoord te geven op je vraag: denk dat het verstandiger is om eerst te zorgen dat je script goed/veilig is. En daarna nog even uitleggen wat je nou precies wilt doen met deze code, want dat is me niet duidelijk.
Martijn L op 29/08/2011 22:49:57:
Backtics horen volgens mij niet thuis in een query.
Ik heb geleerd van iemand die me het begin van php leerde, is dit verkeerd?
Ik heb geleerd van iemand die me het begin van php leerde, is dit verkeerd?
Het schijnt (af en toe) tot foute/niet werkende query's te kunnen leiden.
Martijn L op 29/08/2011 22:49:57:
Variabelen buiten quotes.
Die snap ik niet graag uitgebreidere uitleg?
Die snap ik niet graag uitgebreidere uitleg?
Probeer het eens.
Martijn L op 29/08/2011 22:49:57:
Selecteer veldnamen en niet *.
Is het veiliger als je elk veld in een mysql_query apart noemt?
Is het veiliger als je elk veld in een mysql_query apart noemt?
Het geeft je inzicht in wat je aan het doen bent en voorkomt bij complexere query's dat dingen niet gaan zoals je zou willen.
Martijn L op 29/08/2011 22:49:57:
Zorg voor beveiliging van je query's.
Ik dacht dat je een query beveiligt dmv mysql_real_escape_string() zoals mij is aangeleerd door het bovengenoemde persoon
Edit:
Na even zoeken op het internet zie ik dat het alleen werkt voor het plaatsen van variabelen in de database
Ik dacht dat je een query beveiligt dmv mysql_real_escape_string() zoals mij is aangeleerd door het bovengenoemde persoon
Edit:
Na even zoeken op het internet zie ik dat het alleen werkt voor het plaatsen van variabelen in de database
Heb het idee van klok en klepel. mysql_real_escape_string() Gebruik je in een query, niet, zoals jij nu doet bij de output. En nee, ook niet alleen! bij het plaatsen van variabelen.
Martijn L op 29/08/2011 22:49:57:
Zorg voor foutafhandeling bij query's.
Hierbij bedoel je de mysql_error()?
Hierbij bedoel je de mysql_error()?
Ja, maar dan volledig/nette foutafhandeling.
En om je een concreet antwoord te geven op je vraag: denk dat het verstandiger is om eerst te zorgen dat je script goed/veilig is. En daarna nog even uitleggen wat je nou precies wilt doen met deze code, want dat is me niet duidelijk.
Gewijzigd op 03/09/2011 10:07:37 door Obelix Idefix
Kan de vraag niet aanpassen zie mijn beter geformuleerde vraag
http://www.phphulp.nl/php/forum/topic/checkbox-formulier/79985/
http://www.phphulp.nl/php/forum/topic/checkbox-formulier/79985/
Gewijzigd op 06/09/2011 22:07:02 door Martijn L




