Meerdere input's
*EDIT als er persé een beetje code voor nodig is hoor ik het wel
Gewijzigd op 01/01/1970 01:00:00 door Leon
Ik bedoel eigenlijk of het mogelijk is om er meteen bijvoorbeeld 30 te laten veranderen; anders moet je ze 1 voor 1 controleren...
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
<?php
#| Controleren of formulier is verzonden.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
#| Loop door gehele " $_POST " array.
foreach($_POST as $sleutel => $waarde)
{
#| Controleren of " $_POST[$sleutel] " een waarde heeft.
if(!empty($_POST[$sleutel]))
{
// Ingevuld.
}
else
{
// Leeg gelaten.
}
}
}
?>
#| Controleren of formulier is verzonden.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
#| Loop door gehele " $_POST " array.
foreach($_POST as $sleutel => $waarde)
{
#| Controleren of " $_POST[$sleutel] " een waarde heeft.
if(!empty($_POST[$sleutel]))
{
// Ingevuld.
}
else
{
// Leeg gelaten.
}
}
}
?>
Wat bedoel je met veranderen?
Ik heb een form met 57 Posts erop. Om ze overzichtelijk in de Database te zetten heb ik ze allemaal in één $sleutel gezet; gewoon achter elkaar gescheiden door " - " dus ff samengevat:
Code (php)
Dit is in de Database gezet; nou zoek ik een manier om alle POST's in 1x te controleren of ze leeg zijn, en indien dat zo is ze door een tekstje te laten vervangen, zoals "Leeg"
Die links hierboven zijn van tutorials over hoe je het wel op de juiste manier doet.
Leer ook die php tutorial, aangezien je ook verkeerd kijkt of een form gepost is.
Ehm... Even voor mezelf: Als dit niet correct is, waarom werkt het dan? (Ja ik ben nog een beetje aan het oefenen)
Links rijden is ook niet correct, maar het werkt wel (tot dat je onder die vrachtauto zat).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
if(isset($_POST['submit'])) {
if($_POST['antwoord1'] == "") {
$antwoord1 = "Leeg"
}
if($_POST['antwoord2'] == "") {
$antwoord2 = "Leeg"
}
$antwoorden = $_POST['antwoord1'].' - '.$_POST['antwoord2'];
$insert_test = "INSERT INTO toets (id,antwoorden)
VALUES (0,'{$antwoorden}')";
mysql_query($insert_test);
}
?>
if(isset($_POST['submit'])) {
if($_POST['antwoord1'] == "") {
$antwoord1 = "Leeg"
}
if($_POST['antwoord2'] == "") {
$antwoord2 = "Leeg"
}
$antwoorden = $_POST['antwoord1'].' - '.$_POST['antwoord2'];
$insert_test = "INSERT INTO toets (id,antwoorden)
VALUES (0,'{$antwoorden}')";
mysql_query($insert_test);
}
?>
Dit werkt ook volgens mij maar is dit ook massaal te doen voor allemaal of niet? (waarschijnlijk vragen jullie je af waarom ik niet gewoon dit 57x kopieër maar het zijn iets moeilijkere value's dan antwoord1 en antwoord2)
Gewijzigd op 01/01/1970 01:00:00 door Leon
Leon schreef op 01.01.2010 23:31:
ok punt voor jou maar toch vraag ik me af wat er niet goed aan is, alles werkt gewoon goed, alleen zoek ik iets om alle empty post's te laten veranderen; apart zou ik het zo doen:
Dit werkt ook volgens mij maar is dit ook massaal te doen voor allemaal of niet? (waarschijnlijk vragen jullie je af waarom ik niet gewoon dit 57x kopieër maar het zijn iets moeilijkere value's dan antwoord1 en antwoord2)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
if(isset($_POST['submit'])) {
if($_POST['antwoord1'] == "") {
$antwoord1 = "Leeg"
}
if($_POST['antwoord2'] == "") {
$antwoord2 = "Leeg"
}
$antwoorden = $_POST['antwoord1'].' - '.$_POST['antwoord2'];
$insert_test = "INSERT INTO toets (id,antwoorden)
VALUES (0,'{$antwoorden}')";
mysql_query($insert_test);
}
?>
if(isset($_POST['submit'])) {
if($_POST['antwoord1'] == "") {
$antwoord1 = "Leeg"
}
if($_POST['antwoord2'] == "") {
$antwoord2 = "Leeg"
}
$antwoorden = $_POST['antwoord1'].' - '.$_POST['antwoord2'];
$insert_test = "INSERT INTO toets (id,antwoorden)
VALUES (0,'{$antwoorden}')";
mysql_query($insert_test);
}
?>
Dit werkt ook volgens mij maar is dit ook massaal te doen voor allemaal of niet? (waarschijnlijk vragen jullie je af waarom ik niet gewoon dit 57x kopieër maar het zijn iets moeilijkere value's dan antwoord1 en antwoord2)
Wat doe je er niet goed aan?
Je kijkt op de verkeerde manier of een post is gedaan. Niet elke browser stuurt een submit mee.
Je stopt alle antwoorden in een vakkie dat is niet de bedoeling. Je hoort koppeltabellen e.d. te gebruiken, want nu kan je er dus niks uit opmaken. Je kunt niet in een keer ophalen hoe vaak op vraag twaalf een bepaald antwoord is gegeven.
Je douwt direct een post waarde in de query. Dat is vragen om moeilijkheden.
Misschien dat dit niet veel veranderd aan je antwoord; indien dit toch zo is hoor ik het wel!
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
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
<?php
#| Settings | Aantal vragen.
$aantal_vragen = 57;
#| Set " $data " array voor het opslaan van alle antwoorden.
$data = array();
#| Controleren of formulier is verzonden.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
#| Loop door alle vragen heen.
for($vraag = 1; $vraag <= $aantal_vragen; $vraag++)
{
#| Controleren of er een antwoord is ingevuld.
if(!empty($_POST['antwoord'.$vraag]))
{
/*---- INFO: Ja er is iets ingevuld. ----*/
$data[] = $_POST['antwoord'.$vraag];
}
else
{
/*---- INFO: Nee er is niets ingevuld, Antwoord invullen met Leeg. ----*/
$data[] = 'leeg';
}
}
#| Lijst met antwoorden samenstellen.
$antwoorden = implode(' - ', $data);
}
?>
#| Settings | Aantal vragen.
$aantal_vragen = 57;
#| Set " $data " array voor het opslaan van alle antwoorden.
$data = array();
#| Controleren of formulier is verzonden.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
#| Loop door alle vragen heen.
for($vraag = 1; $vraag <= $aantal_vragen; $vraag++)
{
#| Controleren of er een antwoord is ingevuld.
if(!empty($_POST['antwoord'.$vraag]))
{
/*---- INFO: Ja er is iets ingevuld. ----*/
$data[] = $_POST['antwoord'.$vraag];
}
else
{
/*---- INFO: Nee er is niets ingevuld, Antwoord invullen met Leeg. ----*/
$data[] = 'leeg';
}
}
#| Lijst met antwoorden samenstellen.
$antwoorden = implode(' - ', $data);
}
?>
EDIT: De [] vergeten bij het toevoegen van de antwoorden aan de $data array.
Karl heeft gelijk over het invoeren van de gegevens. Met bovenstaande code kun je het doen zoals je het eerst van plan was maar ik zou als je toch bezig bent je database opnieuw opbouwen.
Gewijzigd op 01/01/1970 01:00:00 door - Mark -
EN nog een klein (misschien dom) vraagje: dit werkt nog steeds met $_POST['submit'] en het standaard HTML gedeelte?
Code (php)
Hij gaat van antwoord 1 tot 57. Wil je meer of minder antwoorden dan verander je dat in de settings " $aantal_vragen "
<input type="submit" name="submit" value="Verstuur >" /> regel gewoon laten staan of weghale?
Lol Je moet natuurlijk wel een knop hebben om het formulier te versturen. Die regel moet dus gewoon blijven staan. Alleen het controleren of een formulier is verstuurd moest veranderd worden.
OK Bedankt!!! Dit is de 1e keer dat ik eens een logisch antwoord krijg in een forum, heb er al 5 geprobeerd :( Heel erg bedankt voor de hulp!
Maar je hebt nog steeds een fout database model, niet waar?
Nog een kleine tip, Vergeet niet commentaar toe te voegen aan je script. Je leest dan veel gemakkelijker door een script heen. Zoals je ziet staat er in mijn voorbeeld overal een regel met commentaar. Zo hoef je niet de gehele code te doorlopen om te weten wat elk stukje doet of waar het voor is.
Ja ik weet dat het meer werk is maar het is de moeite waard.
BDW: Weet je hoe eng dichtbij jij woont?