Form insert niet alle opgegeven waarden bij submit

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Gerlings

Dennis Gerlings

26/08/2014 15:55:18
Quote Anchor link
Goedemiddag,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>";


}
}

?>


Rij in form :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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
 
PHP hulp

PHP hulp

16/11/2024 22:28:16
 
Peter  Flos

Peter Flos

26/08/2014 16:39:57
Quote Anchor link
Verbeteringen op je code:

- 1: Gebruik <?php ipv <?
- 1: Wat doet prevent_multi_submit()?
- 8: Wat ik zelf doe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($_POST['dienst'] as $value){
// insert
}
?>


- 12: Gebruik liever mysqli, mysql is verouderd en verdwijnt in de toekomst
- 12: Een INSERT statement hoort er zo uit te zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
INSERT INTO (
             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
 
Dennis Gerlings

Dennis Gerlings

26/08/2014 16:46:13
Quote Anchor link
Hoi Peter,

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
 
Peter  Flos

Peter Flos

26/08/2014 16:53:22
Quote Anchor link
Regel 3 doel ik inderdaad op de checkbox, maar als ik je script zie is er maar één checkbox, dus is het niet zoals dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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">


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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// PHP GEDEELTE
if(isset($_POST['Checkbox'])){
// doe je ding
}
?>

<!-- HTML GEDEELTE -->
<input type="checkbox" name="Checkbox" value="Waarde">
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/08/2014 17:21:41
Quote Anchor link
Peter,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO tabelnaam
SET kolomnaam = 'waarde'

Dit kan gewoon in MySQL
 
Peter K

Peter K

26/08/2014 20:16:28
Quote Anchor link
Eerlijk gezegd gebruik ik ook altijd de manier die Peter gebruikt, ik was ook niet op de hoogte van die methode Ger. Wel interessant overigens:

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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/08/2014 20:38:37
Quote Anchor link
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.
 
Dennis Gerlings

Dennis Gerlings

26/08/2014 21:40:08
Quote Anchor link
Zijn we weer... Peter wat je zei heb ik geprobeerd maar kwam er niet uit. Heb het nu als volgt staan en de query is goed. Alleen pakt hi jdus niet de waarden mee uit het form. Ik had 1 checkbox eerder gepost, maar in totaal heeft mijn form er 20 zodat je max 20 opdrachten tegelijk kan invoeren. Hiervoor dient de betreffend eregel dan wel aangevinkt te zijn dmv de checkbox.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";


}
}

?>
Gewijzigd op 26/08/2014 21:40:53 door Dennis Gerlings
 
Pipo Clown

Pipo Clown

27/08/2014 00:08:21
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.