Form insert niet alle opgegeven waarden bij submit
Ben nu al een tijdje bezig met onderstaande en ik kom niet verder dan dat die het id nummer van de checkbox insert. Nieuwe records worden dus toegevoegd waarbij alleen de waarde van de checkbox mee gaat. Overige waarden pakt die alleen de standaard waarden die het formulier toont. het selecteren van meerdere rijen en die toevoegen werkt, het zit hem puur en alleen in die overige waarden.
Onderstaand de code die het formulier afhandelt en hoe een rij in het betreffende form staat.
Hopelijk kan iemand mij hierbij helpen, alvast enorm bedankt !
Gr
Dennis
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<? if(isset($_POST['Verwerken']) and prevent_multi_submit())
{
if(empty($_POST['dienst']) ){
echo "<font color='#ff0000'><b>U bent vergeten diensten te selecteren die u wilt doorvoeren</b></font>";
}else{
for($i = 0 ; $i <count ($_POST['dienst']);$i++)
{
$result = mysql_query("INSERT INTO urenbriefjes SET kandidaat = '".mysql_real_escape_string($_POST['kandidaat'])."', client = '" .mysql_real_escape_string($_POST['organisatie']). "', datum = '" .mysql_real_escape_string($_POST['datum']). "', locatie = '" .mysql_real_escape_string($_POST['locatie']). "', begintijd='".mysql_real_escape_string($_POST['begin'])."', eindtijd='".mysql_real_escape_string($_POST['eind'])."', uren ='".mysql_real_escape_string($_POST['uren'])."', kmww ='".mysql_real_escape_string($_POST['kmww'])."', kmintern ='".mysql_real_escape_string($_POST['kmintern'])."', numid = '".mysql_real_escape_string($_POST['dienst'][$i])."' ")
or die(mysql_error());
}
echo "<font color='#ffffff'><b>De dienst(en) zijn succesvol toegevoegd in het systeem</b></font>";
}
}
?>
{
if(empty($_POST['dienst']) ){
echo "<font color='#ff0000'><b>U bent vergeten diensten te selecteren die u wilt doorvoeren</b></font>";
}else{
for($i = 0 ; $i <count ($_POST['dienst']);$i++)
{
$result = mysql_query("INSERT INTO urenbriefjes SET kandidaat = '".mysql_real_escape_string($_POST['kandidaat'])."', client = '" .mysql_real_escape_string($_POST['organisatie']). "', datum = '" .mysql_real_escape_string($_POST['datum']). "', locatie = '" .mysql_real_escape_string($_POST['locatie']). "', begintijd='".mysql_real_escape_string($_POST['begin'])."', eindtijd='".mysql_real_escape_string($_POST['eind'])."', uren ='".mysql_real_escape_string($_POST['uren'])."', kmww ='".mysql_real_escape_string($_POST['kmww'])."', kmintern ='".mysql_real_escape_string($_POST['kmintern'])."', numid = '".mysql_real_escape_string($_POST['dienst'][$i])."' ")
or die(mysql_error());
}
echo "<font color='#ffffff'><b>De dienst(en) zijn succesvol toegevoegd in het systeem</b></font>";
}
}
?>
Rij in form :
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
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
<tr>
<td height="14" width="5%" align="left" valign="middle">
<input name="dienst[]" id="dienst" type="checkbox" value="1" />
</td>
<td class='tablerow1' width='15%'><select name="kandidaat" class="entryfield" id="kandidaat">
<option value="selecteer">Maak uw keuze</option>
<?
$sql = "SELECT * FROM kandidaten GROUP BY kandidaat ASC";
$res = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<option value='".$row['kandidaat']."'>".$row['kandidaat']."</option>";
}
?>
</select></td>
<td class='tablerow1' width='15%'><select name="organisatie" class="entryfield" id="organisatie">
<option value="selecteer">Maak uw keuze</option>
<?
$sql = "SELECT * FROM login GROUP BY organisatie ASC";
$res = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<option value='".$row['organisatie']."'>".$row['organisatie']."</option>";
}
?>
</select></td>
<td class='tablerow3' width='15%'><input name="locatie" type="text" class="entryfield" id="locatie" value=" " /></td>
<td class='tablerow3'><input name="datum" type="text" class="entryfield" id="datum" size="8" value="dd-mm-jjjj " /></td>
<td class='tablerow3'><input name="begin" type="text" class="entryfield" id="begin" size="8" value="00:00 "></td>
<td class='tablerow3'><input name="eind" type="text" class="entryfield" id="eind" size="8" value="00:00 "></td>
<td class='tablerow3'><input name="uren" type="text" class="entryfield" id="uren" size="5" value="0 "></td>
<td class='tablerow3'><input name="kmww" type="text" class="entryfield" id="kmww" size="5" value="0 "></td>
<td class='tablerow3'><input name="kmintern" type="text" class="entryfield" id="kmintern" size="5" value="0 "></td>
</tr>
<td height="14" width="5%" align="left" valign="middle">
<input name="dienst[]" id="dienst" type="checkbox" value="1" />
</td>
<td class='tablerow1' width='15%'><select name="kandidaat" class="entryfield" id="kandidaat">
<option value="selecteer">Maak uw keuze</option>
<?
$sql = "SELECT * FROM kandidaten GROUP BY kandidaat ASC";
$res = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<option value='".$row['kandidaat']."'>".$row['kandidaat']."</option>";
}
?>
</select></td>
<td class='tablerow1' width='15%'><select name="organisatie" class="entryfield" id="organisatie">
<option value="selecteer">Maak uw keuze</option>
<?
$sql = "SELECT * FROM login GROUP BY organisatie ASC";
$res = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<option value='".$row['organisatie']."'>".$row['organisatie']."</option>";
}
?>
</select></td>
<td class='tablerow3' width='15%'><input name="locatie" type="text" class="entryfield" id="locatie" value=" " /></td>
<td class='tablerow3'><input name="datum" type="text" class="entryfield" id="datum" size="8" value="dd-mm-jjjj " /></td>
<td class='tablerow3'><input name="begin" type="text" class="entryfield" id="begin" size="8" value="00:00 "></td>
<td class='tablerow3'><input name="eind" type="text" class="entryfield" id="eind" size="8" value="00:00 "></td>
<td class='tablerow3'><input name="uren" type="text" class="entryfield" id="uren" size="5" value="0 "></td>
<td class='tablerow3'><input name="kmww" type="text" class="entryfield" id="kmww" size="5" value="0 "></td>
<td class='tablerow3'><input name="kmintern" type="text" class="entryfield" id="kmintern" size="5" value="0 "></td>
</tr>
Gewijzigd op 26/08/2014 15:55:47 door Dennis Gerlings
- 1: Gebruik <?php ipv <?
- 1: Wat doet prevent_multi_submit()?
- 8: Wat ik zelf doe:
- 12: Gebruik liever mysqli, mysql is verouderd en verdwijnt in de toekomst
- 12: Een INSERT statement hoort er zo uit te zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
INSERT INTO (
Veld1,
Veld2,
Veld3
)
VALUES (
'Waarde1',
'Waarde2',
'Waarde3'
)
Veld1,
Veld2,
Veld3
)
VALUES (
'Waarde1',
'Waarde2',
'Waarde3'
)
Wat jij probeert te doen is een UPDATE.
- 13: Gebruik liever niet or die(), bouw een juiste foutenafhandeling
Vraag aan jou: Wat wil je bereiken met regel 3 van je formulier?
Gewijzigd op 26/08/2014 16:41:41 door Peter Flos
Dank voor de tips. Ga ik meteen even mee aan de slag.
Prevent multi submit is nog een stukje van een oude code van mij die ik nu aan het ombouwen ben, die gaat/moet er ook uit.
Regel 3 doel je denk ik op de checkbox ? Zo ja, ik kreeg het niet voor elkaar dat die een waarde mee gaf in een array. Met die haakjes [] pakt die het wel mee. Nu dus alleen nog de rest van de opgegeven waarden. Als ik alles aangepast heb laat ik even de uitkomst weten.
Alvast bedankt !
gr
Dennis
Code (php)
1
2
3
4
5
2
3
4
5
<input type="checkbox" name="Checkbox[]" value="Waarde1">
<input type="checkbox" name="Checkbox[]" value="Waarde2">
<input type="checkbox" name="Checkbox[]" value="Waarde3">
<input type="checkbox" name="Checkbox[]" value="Waarde4">
<input type="checkbox" name="Checkbox[]" value="Waarde5">
<input type="checkbox" name="Checkbox[]" value="Waarde2">
<input type="checkbox" name="Checkbox[]" value="Waarde3">
<input type="checkbox" name="Checkbox[]" value="Waarde4">
<input type="checkbox" name="Checkbox[]" value="Waarde5">
Dat is in principe enkel relevant als je gegevens uit een Database selecteert, als voorbeeld even te noemen, je hebt 10 gebruikers en wilt er 3 verwijderen, dat je deze kunt selecteren. Bij jou zie ik maar 1 checkbox, dus voldoet dit:
Quote:
INSERT inserts new rows into an existing table. The INSERT ... VALUES and INSERT ... SET forms of the statement insert rows based on explicitly specified values. The INSERT ... SELECT form inserts rows selected from another table or tables. INSERT ... SELECT is discussed further in Section 13.2.5.1, “INSERT ... SELECT Syntax”.
http://dev.mysql.com/doc/refman/5.6/en/insert.html
De manier van (andere) Peter is ook de goede manier, maar daar loopt het script van TS niet op fout, vandaar dat ik het even aangaf.
Probleem nu...hij maakt maar 1 rij aan en neemt helemaal geen waarden meer mee... Wellicht is het iets simpels, maar hoor graag jullie advies. Ben zelf geen doorgewinterde specialist hierin, maar als hobby vind ik het erg leuk. Elke dag leer je weer bij niet waar.
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
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
<?php if(isset($_POST['Verwerken']) )
{
if(empty($_POST['dienst']) ){
echo "<font color='#ff0000'><b>U bent vergeten diensten te selecteren die u wilt doorvoeren</b></font>";
}else{
// insert
$sql = "INSERT INTO urenbriefjes SET numid = '" . mysql_real_escape_string($_POST['dienst'][$i])."', kandidaat='" . mysql_real_escape_string($_POST['kandidaat'])."', client = '".mysql_real_escape_string($_POST['organisatie'])."', datum = '".mysql_real_escape_string($_POST['datum'])."', locatie = '".mysql_real_escape_string($_POST['locatie'])."', begintijd = '".mysql_real_escape_string($_POST['begin'])."', eindtijd = '".mysql_real_escape_string($_POST['eind'])."', uren = '".mysql_real_escape_string($_POST['uren'])."', kmww = '".mysql_real_escape_string($_POST['kmww'])."', kmintern = '".mysql_real_escape_string($_POST['kmintern'])."' ";
$res = mysql_query($sql);
if ($res == false)
{
echo "Query mislukt. Foutmelding: " . mysql_error();
}
else
{
echo "Query gelukt!";
}
echo "<font color='#ffffff'><b>De dienst(en) zijn succesvol toegevoegd in het systeem</b></font>";
}
}
?>
{
if(empty($_POST['dienst']) ){
echo "<font color='#ff0000'><b>U bent vergeten diensten te selecteren die u wilt doorvoeren</b></font>";
}else{
// insert
$sql = "INSERT INTO urenbriefjes SET numid = '" . mysql_real_escape_string($_POST['dienst'][$i])."', kandidaat='" . mysql_real_escape_string($_POST['kandidaat'])."', client = '".mysql_real_escape_string($_POST['organisatie'])."', datum = '".mysql_real_escape_string($_POST['datum'])."', locatie = '".mysql_real_escape_string($_POST['locatie'])."', begintijd = '".mysql_real_escape_string($_POST['begin'])."', eindtijd = '".mysql_real_escape_string($_POST['eind'])."', uren = '".mysql_real_escape_string($_POST['uren'])."', kmww = '".mysql_real_escape_string($_POST['kmww'])."', kmintern = '".mysql_real_escape_string($_POST['kmintern'])."' ";
$res = mysql_query($sql);
if ($res == false)
{
echo "Query mislukt. Foutmelding: " . mysql_error();
}
else
{
echo "Query gelukt!";
}
echo "<font color='#ffffff'><b>De dienst(en) zijn succesvol toegevoegd in het systeem</b></font>";
}
}
?>
Gewijzigd op 26/08/2014 21:40:53 door Dennis Gerlings
Bedenk dat een checkbox alleen wordt doorgegeven via POST of GET wanneer checked true is. Is die vals dan wordt het element niet meegestuurd middels GET of POST.