hoe na implode elementen in input formulier zetten?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan West

Johan West

25/09/2015 20:34:39
Quote Anchor link
Hebben jullie een idee hoe je een reeks ( max. 5 elementen) vanuit $_POST kunt imploderen tot een aantal afzonderlijke elementen en deze elementen vervolgens in een (readonly) input form kunt zetten?

Tot en met het imploden lukt het wel, maar daarna wil ik t/m 5 invoer velden zien en daar de waarden inzetten.
Gewijzigd op 26/09/2015 14:07:37 door Johan West
 
PHP hulp

PHP hulp

23/04/2024 14:24:40
 
Johan K

Johan K

25/09/2015 20:46:15
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
 foreach(array_slice($_POST, ($c = count($_POST)) < 5 ? $c : 5)) as $key => $value){
  echo '<input type="text" name="'.$key.'" value="'.$value.'" readonly>';
 }

?>


Zoiets? Dit voorbeeld is alleen niet echt veilig gebruik het dus niet in jouw code maar als dit is wat je bedoelt escape dan de waarde "$value".
Gewijzigd op 25/09/2015 20:48:50 door Johan K
 
Marthijn Buijs

Marthijn Buijs

26/09/2015 09:09:56
Quote Anchor link
Just be sure, je kan ook nog $key escapen.
 
Johan K

Johan K

26/09/2015 11:49:33
Quote Anchor link
PHP Maarten op 26/09/2015 09:09:56:
Just be sure, je kan ook nog $key escapen.

$key zou je eigenlijk moeten whitelisten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
  $keys
= ['name', 'password', 'email', 'etc'];

  foreach($_POST as $k => $v){
    if(!array_key_exists($k, $keys)){
      die('someone has been messing with the html code..');
    }
  }


?>
 
Thomas van den Heuvel

Thomas van den Heuvel

26/09/2015 12:24:08
Quote Anchor link
Je hebt de waarden al binnen, blijkbaar is er de wens om deze -tijdelijk- te onthouden (worden readonly velden gePOST trouwens? volgens mij niet?) waarom zet je deze niet in $_SESSION (na controle op correctheid en volledigheid, uiteraard)?
 
Johan West

Johan West

26/09/2015 14:18:55
Quote Anchor link
Ik heb de titel van dit topic gewijzigd ik heb per abuis dit titelvak voor een tag input veld aangezien.

Terug naar wat de intentie is van het script.

nadat de gebruiker inputvelden invult (dit is 1 t/m 5 naar keuze) wordt dit gevalideerd. (daarna gaat het naar de database)
De validatie gebeurt op een validatie pagina die de input velden opnieuw laat zien, maar dan read only.

Het lukt me wel om dit met 1 input veld te doen en dan door te zenden, maar de gebruiker heeft de keuze uit tot 5 invoervelden (x2 dus linknaam en webadres).

Wat de gebruiker de 1e keer invult is gewoon handmatige invoer, maar in dit validatie script wordt de invoer uit het vorige script gehaald dit is nu met $_POST ik zie niet 1 waarom ik dit moet aanpassen naar $_SESSION. Kan dat worden toegelicht?

In ieder geval nu is de situatie zo dat ik met var_dump een reeks krijg, maar deze reeks gaat niet vanzelf in een input veld staan. Dan moet ik op de plaats van value of een ander html attribute bepaalde php code plaatsen maar de manier waarop is me onbekend.

Kan iemand die hiermee bekend is bepaalde voorbeelden geven waardoor het duidelijker wordt?
 
Thomas van den Heuvel

Thomas van den Heuvel

26/09/2015 14:58:12
Quote Anchor link
Sorry maar hoeveel topics heb je inmiddels geopend over wat in feite over hetzelfde stuk code gaat en hoe lang lopen deze intussen al?

We zijn hier al een hele tijd aan het mijmeren over mogelijke aanpakken maar het lijkt mij gewoon een stuk handiger als je je relevante code hier (weer eens) plaatst.

De hoeveelheid moeite die het jou en ons op deze manier kost om hier voortgang in te boeken staat niet in verhouding tot de complexiteit van dit probleem (een formulier met een aantal velden met linkjes, really?).

Ergo: doe eens praktisch en wees een concreet. Dit zet zo geen zoden aan de dijk.
 
Johan West

Johan West

26/09/2015 17:56:48
Quote Anchor link
Deel van het script:

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
36
37
38
39
40
41
42
43
44
45
46
<html>

<?php
$linkadd
= implode(" " , $_POST['linkadd']);
$linkoms = implode (" ", $_POST['linkoms']);

// $num = $_POST['aantal']; // kies tussen 1 en 5 links invoeren

$num = $_SESSION['aantal'];
$linkoms = $_POST['linkoms'];
$linkadd = $_POST['linkadd'];

echo "<center>";
echo "voer de volgende " . $num . " waarden in";
echo "</center>";

for ($i=0; $i < $num ; $i++) {
    ?>


<p><center>
        
        <label for="linkoms_<?php echo $i ?>">
        Omschrijving: <?php echo ($i + 1)  ?>
        </label>
        
        <input type="text" name="linkoms[]"
        id="linkoms_<?php echo $i ?>" value = "<?php echo $linkoms; ?>" readonly/> <br> <br>
        
        
        <label for="linkadd_<?php echo $i ?>">
        Het webadres <?php echo ($i + 1) ?>
        </label>
        
         <input type="text" name="linkadd[]"
        id="linkadd_<?php echo $i ?>" value = "<?php $linkadd; ?>" readonly/><br><br>
    </center>
    </p>
    
    
    <?php
    
}

?>


</html>


De output is op dit moment als volgt:

Afbeelding
Gewijzigd op 26/09/2015 17:59:33 door Johan West
 
- SanThe -

- SanThe -

26/09/2015 18:12:38
Quote Anchor link
Je hebt o.a. deze twee regels vlak na elkaar:

$linkadd = implode(" " , $_POST['linkadd']);
$linkadd = $_POST['linkadd'];

De tweede overschrijft uiteraard de eerste regel.

Welke wil je nou gebruiken?
Haal die andere dan ook weg.
 
Johan West

Johan West

26/09/2015 18:23:03
Quote Anchor link
Verder heb ik heb een test script en een uiteindelijk script, de output van de image is van het uiteindelijke script.





Toevoeging op 26/09/2015 18:36:30:

na zoeken kom ik bij list() uit, maar weet niet of dit op een array of string toegepast mag/moet worden. Kan iemand dat vertellen?
Gewijzigd op 26/09/2015 18:24:13 door Johan West
 
- SanThe -

- SanThe -

26/09/2015 20:49:11
 
Johan West

Johan West

26/09/2015 23:02:23
Quote Anchor link
- SanThe - op 26/09/2015 20:49:11:


Dat is te summier.

Het vertelt niet veel over wat je kunt met list().

Voor beginners is het niet direct duidelijk.

PHP ziet arrays anders dan strings, maar een string kan een reeks waarden bevatten.

List() is (kennelijk) een methode om een reeks waarden als afzonderlijke elementen te behandelen, maar het aantal elementen kan variëren is dit niet eenvoudig. Variabele variabelen !

Ik vermoed dat list() zou kunnen werken maar wil het aantal waarden ook kunnen instellen. Is er iemand die dat vaker heeft gedaan en deze methode wil uitleggen middels een script? (tenzij jullie denken dat dit niet de goede methode is voor mijn probleemstelling)
Gewijzigd op 26/09/2015 23:07:34 door Johan West
 
- SanThe -

- SanThe -

26/09/2015 23:25:46
Quote Anchor link
Ik zie het probleem niet.

$_POST['linkadd'] is blijkbaar een array().
Dan kan je toch elk element apart gebruiken.

Bijvoorbeeld het eerste element uit het array().
echo $_POST['linkadd'][0];

De derde: echo $_POST['linkadd'][2];
Gewijzigd op 26/09/2015 23:26:07 door - SanThe -
 
Johan West

Johan West

27/09/2015 12:37:14
Quote Anchor link
ok goede tip TheSan
 



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.