Formulier verwerken met php
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
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.
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
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
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
?>
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.
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