foreach $_POST met twee values

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Eric T

Eric T

24/09/2014 19:28:19
Quote Anchor link
Hoop dat ik het goed uitleg...
Ik heb twee velden in m'n formulier:

<input name='".$inschrijfnr."' type='text' value='".$ploeg."'>
<input name='".$inschrijfnr."bus' type='text' value='".$busnr."'>

In het opslaan-/update bestand waarnaar het formulier verwijst, heb ik dit script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$inschrijfnr
= $_REQUEST['inschrijfnr'];
$ploeg       = $_REQUEST['ploeg'];
$busnr       = str_replace('bus','',$_REQUEST['bus']);

foreach ($_POST as $inschrijfnr => $ploeg) {
            if(is_numeric($inschrijfnr) ){
                    echo $inschrijfnr." - Ploeg:".$ploeg." - Bus:".$busnr."<br>";
            //doe iets in database
            }
}

?>


Wat ik echter op het scherm wil zien is:

Inschrijfnummer, bijbehorend ploegnummer, én bijbehorend busnummer.

In bovenstaand script wordt dus logischerwijs nog niet het busnummer afgebeeld behorende bij het inschrijfnummer. Wel het ploegnummer.
Maar wat moet ik doen om wél ook het busnummer er achter in beeld te krijgen?

Misschien ten overvloede, maar $inschrijfnummer in het ploegenveld wordt in een loop uit de database gehaald, dus er zijn meerdere ploeg-velden die de naam van het inschrijfnummer hebben...
Enige duw in de goede richting is uiteraard welkom...
Gewijzigd op 24/09/2014 20:10:08 door Eric T
 
PHP hulp

PHP hulp

29/04/2024 10:40:51
 
Eddy E

Eddy E

24/09/2014 21:24:09
Quote Anchor link
$_REQUEST kan je beter vervangen door $_POST.
of $_GET, net hoe je je formulier verzendt.

Want je gebruikt $_REQUEST voor je informatie, maar gaat $_POST af om te kijken wat er te doen is.
Om er vervolgens niets mee te doen.

Kijk daar eerst naar.
Daarnaast is het redelijk raar dat je de namen van je velden noemt naar een nummer.
Wordt dat automatisch in het formulier gezet? Zet het dan gewoon in een type="hidden" veld met name="inschrijfnummer" of zoiets.
 

24/09/2014 21:24:52
Quote Anchor link
In het formulier gebruik je php variabelen, hoezo?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<input name="inschrijfnummer" type='hidden' value="2">
<input name="ploeg" type='text' value="a1">
<input name="busnummer" type='text' value="14">


Dit is correcte HTML wat je kan uitlezen met php.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$inschrijfnummer
    = $_POST['inschrijfnummer']; // hier zal 2 uitkomen
$ploeg    = $_POST['ploeg']; // hier zal a1 uitkomen
$busnr    = $_POST['busnummer']; // hier zal 14 uitkomen
?>



EDIT:

Laten we zeggen dat je veldnamen die uit de DB komen allemaal 14 hebben.
je krijgt dan dit;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<input name="14[]" type='hidden' value="2">
<input name="14[]" type='text' value="a1">
<input name="14[]" type='text' value="14">


Deze velden kan je dan uitlezen als een array. Door er 2 haakjes achter te plaatsen[].

Met php kan je dit weer uitlezen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$postArray
    = $_POST['14'];
array
(
    '2',
    'a1',
    '14'
);
?>
Gewijzigd op 24/09/2014 21:32:21 door
 
Eric T

Eric T

24/09/2014 21:34:05
Quote Anchor link
Eddy, dank voor je berichtje...

Ik weet inmiddels hoe het zit (net voordat je postte)...
Ik was afgeleid door de regels die de velden ophalen $_REQUEST[] etc.
Deze regels blijken namelijk weggelaten te kunnen worden...

De foreach() haalt namelijk alle info op uit $_POST, en dat zijn telkens regels van alle inputvelden, submit knop en meer van dat soort dingen. Ik zag dus bijvoorbeeld ook keurig netjes 'submit' met waarde 'Opslaan' er tussen :-)
Kort gezegd: $_POST bevat dus alle form info.

De foreach ziet er nu zo uit, en dat gaat goed:

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
<?php
foreach ($_POST as $inschrijfnr => $gegevens) {
    if($inschrijfnr=="submit" || $inschrijfnr=="actie"){ continue; }

    if($inschrijfnr!='' && strpos($inschrijfnr,'bus')==false){
        echo $inschrijfnr." - Ploeg:".$gegevens;
        //update de database met ploegnummer
    }

    if(strpos($inschrijfnr,'bus')==true){
        echo " - Bus:".$gegevens."<br>";
        $inschrijfnr = str_replace('bus','',$inschrijfnr);
        //update database met busnummer
    }

}

?>


Ongetwijfeld dat het anders, mooier en/of korter kan...
Maar voor nu werkt het in elk geval :-)

Eric
 
Eddy E

Eddy E

24/09/2014 21:55:05
Quote Anchor link
Dat is al stukken beter.
Al vind ik het wel raar dat je het inschrijfnummer als naam gebruikt.
En dan later moet 'gissen' wat wat is.
Houd dat gescheiden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<input name="inschrijfnummer" type='hidden' value="2">
<input name="ploeg" type='text' value="a1">
<input name="busnummer" type='text' value="14">


is dus echt beter.
 
Eric T

Eric T

24/09/2014 22:04:28
Quote Anchor link
@Eddy Ik snap je punt, maar hoe weet ik dan welk ploegnummer (en busnummer) bij welk inschrijfnummer hoort na submitten? Er moet op een of andere manier toch iets unieks per veld bestaan... (er zijn 252 inschrijfnummers)

@Rick Dat is een uitgebreide uitleg :-) Zeer gewaardeerd! Als ik het zo lees, maakt dat het idd wat netter en korter... Ga daar toch nog even mee stoeien :-) Dank je!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/09/2014 01:28:22
Quote Anchor link
Eric Merk op dat de eerste <input> in Eddy zijn voorbeeld een verborgen input is. De gebruiker ziet deze input niet maar de waarde die in deze zit wordt wel mee verstuurd.

dus dit verborgen veld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input name="inschrijfnummer" type='hidden' value="2">


geeft na een submit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
['inschrijfnummer']; // hier zal 2 uitkomen!
?>
Gewijzigd op 25/09/2014 01:28:49 door Frank Nietbelangrijk
 
Eddy E

Eddy E

25/09/2014 09:01:58
Quote Anchor link
Als je echt 252 dingen tegelijkertijd gaat invoeren, dan kan het ook zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input name="data[<?php echo $inschrijfnummer; ?>][ploeg]" type='text' value="A1">
<input name="data[<?php echo $inschrijfnummer; ?>][busnummer]" type='text' value="1">


In je PHP kan je dan $_POST['data'][123]['ploeg'] gebruiken voor A1 bij inschrijfnummer 123.
En $_POST['data'][123]['busnummer'] dus voor het busnummer.

Maar waarom zijn de inschrijfnummers zo belangrijk?
 
Eric T

Eric T

25/09/2014 09:29:32
Quote Anchor link
Dat is inderdaad wat ik zocht Eddy...
Had em zelf bijna nu zo idd ook...
Dankje!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.