Een lijst doorsturen en deze opvragen met php
Hallo,
In het bovenste stuk code vul ik bijvoorbeeld de volgende gegevens in
ik selecteer via een checkbox de gegevens die ik wil doorsturen en bij aantal vul ik een waarde in. Deze gegevens worden door verzonden naar het onderste script. Hier moeten vervolgens alleen de gegevens komen te staan die ik geselecteerd heb + de aantallen die ik heb ingevuld.
ik heb deze code:
maar mijn aantallen komen niet in beeld. Bij aantal komt nu ARRAY te staan??
Kan iemand mij hiermee helpen?
In het bovenste stuk code vul ik bijvoorbeeld de volgende gegevens in
ik selecteer via een checkbox de gegevens die ik wil doorsturen en bij aantal vul ik een waarde in. Deze gegevens worden door verzonden naar het onderste script. Hier moeten vervolgens alleen de gegevens komen te staan die ik geselecteerd heb + de aantallen die ik heb ingevuld.
ik heb deze code:
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
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
$query = " SELECT * FROM catalogus WHERE categorie = 'diensten'";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1 )
{
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:3%'></td>
<td style='width:10%'>#Code</td>
<td style='width:40%'>Omschrijving</td>
<td style='width:15%'>Prijs excl. BTW</td>
<td style='width:15%'>Laatste update</td>
<td style='width:17%'>Aantal</td>
</tr>
</table>";
while ($row = mysql_fetch_array ($res))
{
list($JAAR, $MAAND, $DAG) = split("-", $row['datum_aangepast']);
list($UREN, $MINUTEN, $SECONDEN) = split(":", $row['tijd_aangepast']);
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:3%'><input type='checkbox' name='id_catalogus[]' value='".$row['id']."'></td>
<td style='width:10%'>".$row['id']."</td>
<td style='width:40%'>".$row['omschrijving']."</td>
<td style='width:15%'>€ ".$row['prijs']." ".$row['eenheid']."</td>
<td style='width:15%'>".$DAG."-".$MAAND."-".$JAAR." | ".$UREN.":".$MINUTEN.":".$SECONDEN."</td>
<td style='width:17%'><input name='aantal[]' size='10'></td>
</tr>
</table>";
}
}
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1 )
{
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:3%'></td>
<td style='width:10%'>#Code</td>
<td style='width:40%'>Omschrijving</td>
<td style='width:15%'>Prijs excl. BTW</td>
<td style='width:15%'>Laatste update</td>
<td style='width:17%'>Aantal</td>
</tr>
</table>";
while ($row = mysql_fetch_array ($res))
{
list($JAAR, $MAAND, $DAG) = split("-", $row['datum_aangepast']);
list($UREN, $MINUTEN, $SECONDEN) = split(":", $row['tijd_aangepast']);
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:3%'><input type='checkbox' name='id_catalogus[]' value='".$row['id']."'></td>
<td style='width:10%'>".$row['id']."</td>
<td style='width:40%'>".$row['omschrijving']."</td>
<td style='width:15%'>€ ".$row['prijs']." ".$row['eenheid']."</td>
<td style='width:15%'>".$DAG."-".$MAAND."-".$JAAR." | ".$UREN.":".$MINUTEN.":".$SECONDEN."</td>
<td style='width:17%'><input name='aantal[]' size='10'></td>
</tr>
</table>";
}
}
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
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
if (isset($_POST['id_catalogus']))
{
$selectie = $_POST['id_catalogus'];
$S = count($selectie);
for($i=0; $i < $S; $i++)
{
$query = " SELECT * FROM catalogus WHERE id = '".$selectie[$i]."'";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1 )
{
while ($row = mysql_fetch_array ($res))
{
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:10%'>".$row['id']."</td>
<td style='width:45%'>".$row['omschrijving']."</td>
<td style='width:15%'>€ ".$row['prijs']." ".$row['eenheid']."</td>
<td style='width:15%'>".$_POST['aantal']."</td>
<td style='width:15%'><b>Bedrag</b></td>
</tr>
</table>";
}
}
}
}
{
$selectie = $_POST['id_catalogus'];
$S = count($selectie);
for($i=0; $i < $S; $i++)
{
$query = " SELECT * FROM catalogus WHERE id = '".$selectie[$i]."'";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1 )
{
while ($row = mysql_fetch_array ($res))
{
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:10%'>".$row['id']."</td>
<td style='width:45%'>".$row['omschrijving']."</td>
<td style='width:15%'>€ ".$row['prijs']." ".$row['eenheid']."</td>
<td style='width:15%'>".$_POST['aantal']."</td>
<td style='width:15%'><b>Bedrag</b></td>
</tr>
</table>";
}
}
}
}
maar mijn aantallen komen niet in beeld. Bij aantal komt nu ARRAY te staan??
Kan iemand mij hiermee helpen?
Gewijzigd op 13/01/2012 14:36:37 door Danny van Kempen
Gesponsorde koppelingen:
$_POST['aantal'] vervangen door $_POST['aantal'][$i]
Als ik dat doe komt er helemaal geen waarde uit bij aantal? heel vreemd.
Wat is het type en value van deze input:
<input name='aantal[]' size='10'>
<input name='aantal[]' size='10'>
Dit is een INT met een onafhankelijke waarde. Dit veld is echter nooit leeg.
Gewijzigd op 13/01/2012 14:51:01 door Danny van Kempen
En als je dan eens een print_r($_POST) aan het begin van je script zet, wat zie je dan?
Gewijzigd op 13/01/2012 14:53:47 door Erwin H
Array dit is van $_POST['aantal'];
wanneer ik print_r($_POST) doe uitvoeren krijg ik de volgende gegevens te zien:
( [aantal] => Array ( [0] => [1] => [2] => [3] => 33 ) [id_catalogus] => Array ( [0] => 3 ) ) 1Array
wanneer ik print_r($_POST) doe uitvoeren krijg ik de volgende gegevens te zien:
( [aantal] => Array ( [0] => [1] => [2] => [3] => 33 ) [id_catalogus] => Array ( [0] => 3 ) ) 1Array
Zie je wat er mis gaat?
ja er staan geen waardes in de array op plaats 0 t/m 2? Zijn echter wel ingevuld.
Gewijzigd op 13/01/2012 15:05:27 door Danny van Kempen
Nee, dat is het probleem niet. Het probleem zit 'm in de indexen van de arrays. De array van je catalogus is zo lang als het aantal checkboxen dat is aangevinkt en begint altijd bij index 0.
De array van de aantallen is echter zo lang als alle inputs, ongeacht of ze een waarde hebben.
Daardoor loop je mis in je loop, want als catalogus 3 is aangevinkt krijgt die $i=0. Maar aantal[0] is niet ingevuld.
Om het juiste aantal te krijgen heb je dus niet i nodig, maar de waarde van de catalogus array met index i. Dus:
$_POST['aantal'][$_POST['id_catalogus'][$i]]
De array van de aantallen is echter zo lang als alle inputs, ongeacht of ze een waarde hebben.
Daardoor loop je mis in je loop, want als catalogus 3 is aangevinkt krijgt die $i=0. Maar aantal[0] is niet ingevuld.
Om het juiste aantal te krijgen heb je dus niet i nodig, maar de waarde van de catalogus array met index i. Dus:
$_POST['aantal'][$_POST['id_catalogus'][$i]]
Ja nu snap ik het idd. Maar krijg nog niet de juiste waarden omdat de index nog niet overeen loopt wanneer ik deze code toevoeg:
$_POST['aantal'][$_POST['id_catalogus'][$i]]
Nu krijg ik de volgende output:
Array ( [aantal] => Array ( [0] => [1] => [2] => 222 [3] => 333 ) [id_catalogus] => Array ( [0] => 2 [1] => 3 ) ) 1
$_POST['aantal'][$_POST['id_catalogus'][$i]]
Nu krijg ik de volgende output:
Array ( [aantal] => Array ( [0] => [1] => [2] => 222 [3] => 333 ) [id_catalogus] => Array ( [0] => 2 [1] => 3 ) ) 1
Dat laatste zegt mij weinig omdat ik niet kan zien wat er ingevuld was. Wat stond er in het form dan?
wanneer ik de volgende gegevens selecteer komt er dit in te staan:
id_catalogus = 1,4,2,3
aantal = 111,444,222,333
dit geeft hij dan als uitkomst:
Array ( [id_catalogus] => Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 3 ) [aantal] => Array ( [0] => [1] => [2] => [3] => ) ) 1
met de volgende foutmelding:
Notice: Undefined index: 4 in.......
id_catalogus = 1,4,2,3
aantal = 111,444,222,333
dit geeft hij dan als uitkomst:
Array ( [id_catalogus] => Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 3 ) [aantal] => Array ( [0] => [1] => [2] => [3] => ) ) 1
met de volgende foutmelding:
Notice: Undefined index: 4 in.......
Je id's lopen dus niet synchroon. Je zal dus de manier waarop je die inputs opbouwt moeten veranderen. Op deze manier kan je nooit een eenduidige link maken tussen welke catalogus is geselecteerd en het juiste aantal dat is ingevuld.
Hoe kan ik een veld dat wel is ingevuld mee laten tellen met count en een veld dat niet is ingevuld niet?
Kan iemand mij dat vertellen?
Ik moet gewoon het totaal aantal ingevulde velden weten. Bijvoorbeeld 4
Alvast heel hartelijk dank
Toevoeging op 13/01/2012 19:23:21:
Wanneer ik deze code gebruik telt hij wanneer er geen waarde is wel een punt bij in de index van de array. Dat zou die niet moeten doen. Kan iemand mij vertellen hoe dat moet?
Toevoeging op 13/01/2012 22:23:34:
Ik heb nu de juiste gegevens maar wanneer ik 2 artikelen geselecteerd heb komen die allebei in 1 query bij aantal te staan bijvoorbeeld
ingevoerd:
artikel omschrijving aantal
1 blabla 100400
3 blabla 100400
eigenlijk moet er 100 bij artikel 1 staan en 400 bij artikel 3.
dit is mijn code:
Kan iemand mij dat vertellen?
Ik moet gewoon het totaal aantal ingevulde velden weten. Bijvoorbeeld 4
Alvast heel hartelijk dank
Toevoeging op 13/01/2012 19:23:21:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$aantal = $_POST['aantal'];
$som_aan = count($aantal);
for($i=0; $i < $som_aan; $i++)
{
if ($_POST['aantal'][$i] != '')
{
echo $_POST['aantal'][$i];
}
}
$som_aan = count($aantal);
for($i=0; $i < $som_aan; $i++)
{
if ($_POST['aantal'][$i] != '')
{
echo $_POST['aantal'][$i];
}
}
Wanneer ik deze code gebruik telt hij wanneer er geen waarde is wel een punt bij in de index van de array. Dat zou die niet moeten doen. Kan iemand mij vertellen hoe dat moet?
Toevoeging op 13/01/2012 22:23:34:
Ik heb nu de juiste gegevens maar wanneer ik 2 artikelen geselecteerd heb komen die allebei in 1 query bij aantal te staan bijvoorbeeld
ingevoerd:
artikel omschrijving aantal
1 blabla 100400
3 blabla 100400
eigenlijk moet er 100 bij artikel 1 staan en 400 bij artikel 3.
dit is mijn code:
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
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
$totaalrijen = 0;
$catalogus = $_POST['id'];
$N = count($catalogus);
for($i=0; $i < $N; $i++)
{
$query = " SELECT * FROM catalogus WHERE id = '".$catalogus[$i]."'";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1 )
{
$totaalrijen = $totaalrijen + mysql_num_rows($res);
//echo $totaalrijen;
while ($row = mysql_fetch_array ($res))
{
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:10%'>".$row['id']."</td>
<td style='width:45%'>".$row['omschrijving']."</td>
<td style='width:15%'>".$row['prijs']."</td>
<td style='width:15%'>";
foreach($_POST['aantal'] AS $key => $_POST['id'])
{
echo $_POST['id'];
}
echo "</td>
<td style='width:15%'><b>Bedrag</b></td>
</tr>
</table>";
}
}
}
$catalogus = $_POST['id'];
$N = count($catalogus);
for($i=0; $i < $N; $i++)
{
$query = " SELECT * FROM catalogus WHERE id = '".$catalogus[$i]."'";
$res = mysql_query($query);
if (mysql_num_rows($res) >= 1 )
{
$totaalrijen = $totaalrijen + mysql_num_rows($res);
//echo $totaalrijen;
while ($row = mysql_fetch_array ($res))
{
echo "
<table border='1' cellpadding='0' cellspacing='0' style='width:100%'>
<tr>
<td style='width:10%'>".$row['id']."</td>
<td style='width:45%'>".$row['omschrijving']."</td>
<td style='width:15%'>".$row['prijs']."</td>
<td style='width:15%'>";
foreach($_POST['aantal'] AS $key => $_POST['id'])
{
echo $_POST['id'];
}
echo "</td>
<td style='width:15%'><b>Bedrag</b></td>
</tr>
</table>";
}
}
}
Gewijzigd op 13/01/2012 18:09:34 door Danny van Kempen
Kan ik niet iets doen met foreach?
Toevoeging op 15/01/2012 17:50:51:
Kan iemand mij helpen? Ik wil een formulier verzenden met hierin de geselecteerde gegevens uit een database met een checkbox en een input veld met de naam aantal. Het lukt me niet om de index goed te krijgen? Kan iemand een simpel voorbeeld geven. Dit zou ik zeer waarderen.
Toevoeging op 15/01/2012 17:50:51:
Kan iemand mij helpen? Ik wil een formulier verzenden met hierin de geselecteerde gegevens uit een database met een checkbox en een input veld met de naam aantal. Het lukt me niet om de index goed te krijgen? Kan iemand een simpel voorbeeld geven. Dit zou ik zeer waarderen.



