Versio

Een lijst doorsturen en deze opvragen met php

Overzicht Reageren

Danny van Kempen

Danny van Kempen

13/01/2012 13:59:01
Quote Anchor link
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:

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
$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%'>€&nbsp;".$row['prijs']."&nbsp;".$row['eenheid']."</td>
                <td style='width:15%'>".$DAG."-".$MAAND."-".$JAAR."&nbsp;|&nbsp;".$UREN.":".$MINUTEN.":".$SECONDEN."</td>
                <td style='width:17%'><input name='aantal[]' size='10'></td>
            </tr>
            </table>";
        }
    }







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
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%'>€&nbsp;".$row['prijs']."&nbsp;".$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
 
PHP hulp

PHP hulp

24/05/2012 13:25:32
Gesponsorde koppelingen:
 
Jaron T

Jaron T

13/01/2012 14:40:15
Quote Anchor link
$_POST['aantal'] vervangen door $_POST['aantal'][$i]
 
Danny van Kempen

Danny van Kempen

13/01/2012 14:42:38
Quote Anchor link
Als ik dat doe komt er helemaal geen waarde uit bij aantal? heel vreemd.
 
Erwin H

Erwin H

13/01/2012 14:44:49
Quote Anchor link
Wat is het type en value van deze input:
<input name='aantal[]' size='10'>
 
Danny van Kempen

Danny van Kempen

13/01/2012 14:46:24
Quote Anchor link
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
 
Erwin H

Erwin H

13/01/2012 14:53:27
Quote Anchor link
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
 
Danny van Kempen

Danny van Kempen

13/01/2012 15:00:15
Quote Anchor link
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
 
Erwin H

Erwin H

13/01/2012 15:03:40
Quote Anchor link
Zie je wat er mis gaat?
 
Danny van Kempen

Danny van Kempen

13/01/2012 15:05:05
Quote Anchor link
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
 
Erwin H

Erwin H

13/01/2012 15:09:16
Quote Anchor link
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]]
 
Danny van Kempen

Danny van Kempen

13/01/2012 15:14:58
Quote Anchor link
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
 
Erwin H

Erwin H

13/01/2012 15:18:24
Quote Anchor link
Dat laatste zegt mij weinig omdat ik niet kan zien wat er ingevuld was. Wat stond er in het form dan?
 
Danny van Kempen

Danny van Kempen

13/01/2012 15:26:07
Quote Anchor link
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.......
 
Erwin H

Erwin H

13/01/2012 15:29:10
Quote Anchor link
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.
 
Danny van Kempen

Danny van Kempen

13/01/2012 18:04:58
Quote Anchor link
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:

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


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)
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
$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>";
            }
        }
    }
Gewijzigd op 13/01/2012 18:09:34 door Danny van Kempen
 
Danny van Kempen

Danny van Kempen

15/01/2012 17:21:40
Quote Anchor link
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.
 



Overzicht Reageren

Get Adobe Flash player