Formulier verwerken met php
Ik heb een formulier 2 selectvelden gemaakt. Wanneer deze velden beide geselecteerd zijn zullen er in een ander formulier op dezelfde pagina 2 tekstvelden aangemaakt worden waarin de waardes van de selectboxen zijn opgeslagen.
Het formulier waarin de inputs neergezet worden ziet er zo uit:
rij 1: input1 - input2 - input3
rij 2: input1 - input2 - input3
rij 3: input1 - input2 - input3
enz...
Het aantal rijen is dus variabel en daardoor heb ik aan de veldnamen een variabele moeten meegeven:
rij 1: input11 - input12 - input13
rij 2: input21 - input22 - input23
rij 3: input31 - input32 - input33
wanneer ik op submit klik haal ik de velden met een foreach functie tevoorschijn:
Hoe maak ik hierbij nou een insertquery? Ik kan de insertquery in de foreach zetten, maar als ik 20 rijen heb krijg ik dus ook 20 query's.
Verder krijg ik als ik bijvoorbeeld 3 rijen heb niet 3 gegroepeerd waardes, maar 9 apparte waardes.
Het is de bedoeling dat de waardes net als in het formulier rij per rij in de database gezet worden (input_id => input1 => input2 => input3)
Weten jullie een oplossing?
Het formulier waarin de inputs neergezet worden ziet er zo uit:
rij 1: input1 - input2 - input3
rij 2: input1 - input2 - input3
rij 3: input1 - input2 - input3
enz...
Het aantal rijen is dus variabel en daardoor heb ik aan de veldnamen een variabele moeten meegeven:
rij 1: input11 - input12 - input13
rij 2: input21 - input22 - input23
rij 3: input31 - input32 - input33
wanneer ik op submit klik haal ik de velden met een foreach functie tevoorschijn:
Hoe maak ik hierbij nou een insertquery? Ik kan de insertquery in de foreach zetten, maar als ik 20 rijen heb krijg ik dus ook 20 query's.
Verder krijg ik als ik bijvoorbeeld 3 rijen heb niet 3 gegroepeerd waardes, maar 9 apparte waardes.
Het is de bedoeling dat de waardes net als in het formulier rij per rij in de database gezet worden (input_id => input1 => input2 => input3)
Weten jullie een oplossing?
Gewijzigd op 01/01/1970 01:00:00 door Chris visser
Gesponsorde koppelingen:
Quote:
Hoe maak ik hierbij nou een insertquery? Ik kan de insertquery in de foreach zetten, maar als ik 20 rijen heb krijg ik dus ook 20 query's.
Dat is geen enkel probleem. Je kunt honderden insertquery's na elkaar uitvoeren.
Maar je kunt toch meerdere rijen verwerken in 1 query?
VALUES
("test1", "value1"),
("test2", "value2"),
("test3", "value3");
en als je php toevoegt in de query:
('".$test1."', '".$value1."'),
Als je variabelen kan toevoegen in mysql kun je toch ook wel een loop toevoegen als:
Je krijgt dus de loop in de insertquery
VALUES
("test1", "value1"),
("test2", "value2"),
("test3", "value3");
en als je php toevoegt in de query:
('".$test1."', '".$value1."'),
Als je variabelen kan toevoegen in mysql kun je toch ook wel een loop toevoegen als:
Code (php)
Je krijgt dus de loop in de insertquery
Gewijzigd op 01/01/1970 01:00:00 door chris visser
dan zou je zoiets krijgen als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query = "INSERT INTO (..., ... VALUES(";
foreach($test AS $key => $value)
{
$query.="('".$key."', '".$value."')"; // @robert idd.. wask vergeten
}
// wel ff een if / else maken voor de komma achter $query in de foreach
//dan hier $query uitvoeren
?>
$query = "INSERT INTO (..., ... VALUES(";
foreach($test AS $key => $value)
{
$query.="('".$key."', '".$value."')"; // @robert idd.. wask vergeten
}
// wel ff een if / else maken voor de komma achter $query in de foreach
//dan hier $query uitvoeren
?>
Gewijzigd op 01/01/1970 01:00:00 door Niek Ha
@Niek90
Je moet dan wel de regel in de foreach eraanplakken met een .
Je moet dan wel de regel in de foreach eraanplakken met een .
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query = "INSERT INTO (..., ...) VALUES";
foreach($test AS $key => $value)
{
$query.="('".$key."', '".$value."')";
}
// wel ff een if / else maken voor de komma achter $query in de foreach
//dan hier $query uitvoeren
?>
$query = "INSERT INTO (..., ...) VALUES";
foreach($test AS $key => $value)
{
$query.="('".$key."', '".$value."')";
}
// wel ff een if / else maken voor de komma achter $query in de foreach
//dan hier $query uitvoeren
?>
Ik heb de query nu voor elkaar gekregen, ik zit nu alleen nog met het verwerken van de array's:
De bovenstaande code kan ik oproepen dmv een foreach waarbij ik dit probeerde om de waardes te sorteren:
waarbij ik de onderstaande output krijg. Tot zover ben ik dus, maar nu nog zorgen dat elke rij een plaats krijgt in een array, maar hoe :S
rij 1: Description1 - type1 - input1
rij 2: Description2 - type2 - input2
rij 3: Description3 - type2 - input3
Alvast bedankt voor het bovenstaande antwoord, deze hebben me aardig op weg geholpen ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo "<form action='verwerking.php' name='order' method='post'>";
echo "<table>";
$i = 0;
$t = 3;
while($i != $t)
{
echo "<tr>";
echo " <td><input type='text' name='description".$i."'></td>";
echo " <td><input type='text' name='type".$i."'></td>";
echo " <td><input type='text' name='input".$i."'></td>";
echo "</tr>";
}
?>
echo "<form action='verwerking.php' name='order' method='post'>";
echo "<table>";
$i = 0;
$t = 3;
while($i != $t)
{
echo "<tr>";
echo " <td><input type='text' name='description".$i."'></td>";
echo " <td><input type='text' name='type".$i."'></td>";
echo " <td><input type='text' name='input".$i."'></td>";
echo "</tr>";
}
?>
De bovenstaande code kan ik oproepen dmv een foreach waarbij ik dit probeerde om de waardes te sorteren:
Code (php)
waarbij ik de onderstaande output krijg. Tot zover ben ik dus, maar nu nog zorgen dat elke rij een plaats krijgt in een array, maar hoe :S
rij 1: Description1 - type1 - input1
rij 2: Description2 - type2 - input2
rij 3: Description3 - type2 - input3
Alvast bedankt voor het bovenstaande antwoord, deze hebben me aardig op weg geholpen ;)
Gewijzigd op 01/01/1970 01:00:00 door chris visser
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$rij=array();
$rij[1]['desc'] = 'omschrijving';
$rij[1]['type'] = 'type';
$rij[1]['input'] = 'input';
?>
$rij=array();
$rij[1]['desc'] = 'omschrijving';
$rij[1]['type'] = 'type';
$rij[1]['input'] = 'input';
?>
Als ik jou was zou ik je array als bovenstaande gaan opbouwen.
De uiteindelijke code voor de query staat hieronder, maar ik krijg er een foutmelding bij :( Ik kan blijven staren en kijken, maar misschien dat jullie snappen wat er mis is?
hieronder de maar al te bekende waarschuwing:
Notice: Fout in query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'On, CSLID ) VALUES ('replace', 'LH magneto', '3' )('replac' at line 4 in H:\modules\Database\Workorder.php on line 355
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
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
<?php
$sql = "
INSERT INTO d_workordertasks
(
CheckType,
On,
CSLID
)
VALUES
";
$i = 0;
foreach($record AS $key => $value)
{
$i++;
//$t is het aantal rijen
if($i != $t)
{
$sql.="('".$value['type']."', '".$value['on']."', '".$value['CSLID']."' ),";
}
else
{
$sql.="('".$value['type']."', '".$value['on']."', '".$value['CSLID']."' )";
}
}
if(!$Workorder = $mysqli->query($sql))
{
trigger_error('Fout in query: '.$mysqli->error);
}
else
{
echo "done";
}
?>
$sql = "
INSERT INTO d_workordertasks
(
CheckType,
On,
CSLID
)
VALUES
";
$i = 0;
foreach($record AS $key => $value)
{
$i++;
//$t is het aantal rijen
if($i != $t)
{
$sql.="('".$value['type']."', '".$value['on']."', '".$value['CSLID']."' ),";
}
else
{
$sql.="('".$value['type']."', '".$value['on']."', '".$value['CSLID']."' )";
}
}
if(!$Workorder = $mysqli->query($sql))
{
trigger_error('Fout in query: '.$mysqli->error);
}
else
{
echo "done";
}
?>
hieronder de maar al te bekende waarschuwing:
Notice: Fout in query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'On, CSLID ) VALUES ('replace', 'LH magneto', '3' )('replac' at line 4 in H:\modules\Database\Workorder.php on line 355
Gewijzigd op 01/01/1970 01:00:00 door chris visser



