Ik heb een bestelformulier, daar kan een persoon kiezen uit meer dan 50 producten. Nu wil ik, nadat de persoon de bestelling geplaatst heeft een mail versturen met de producten die hij besteld heeft.

B.v

Uw gegevens:
Voornaam: Jan jaap
Achternaam: Sloot
Adres: Laan 12
Email: [email protected]

Uw artikelen:

kaas: 1 keer
boter: 1 keer

Nu zijn er natuurlijk 30 velden niet ingevuld, want een persoon besteld nooit alle artikelen op je website, nu is de vraag hoe kan ik ervoor zorgen dat alleen de velden die hij ingevuld heeft worden weergegeven?

<?php if($melk == "") {} ?>


Zou ik zeggen, maarja dat zou een erg lange code maken.. Mh..
Ja precies, ik kan wel voor elk veld een check maken om te kijken of hij gevuld is, maar dan ben ik een 3 uur bezig ofzo. Als het makkelijker kan, de persoon krijgt namelijk ook een id meegestuurd misschien kan je op 1 of andere manier alle waarden checken voor dat id, die ongelijk zijn aan NULL, maar ik weet dus niet hoe dat moet -.-
zoiets? niet getest hoor:


<?php
    foreach($_POST as $key => $value){
        $value = trim($value);
        
        if(!empty($value)){
            echo $key.' => '. $value.'<br />';
        }
    }
?>


@Mitchell: controleren met "" is natuurlijk echt waardeloos...
Je kiest toch producten met checkboxes? Of hoe heb je dat gedaan?

Want dan kun je gewoon die lijst doorgaan en kijken of ze gezet zijn of niet.
Uh Crispijn zou je je code kunnen uitleggen?
Ik snap niet helemaal wat dat trim doet en wat de laatste if doet. Die laatste if checked of de $value niet leeg is en dan echo je de $_POST met de waarde?
Gerben Jacobs schreef op 26.05.2008 13:31
Je kiest toch producten met checkboxes? Of hoe heb je dat gedaan?

Want dan kun je gewoon die lijst doorgaan en kijken of ze gezet zijn of niet.

Ik neem aan dat hij gewoon input gebruikt aangezien je toch wel wilt kunnen instellen hoeveel pakjes boter je wilt. ;]
Crispijn schreef op 26.05.2008 13:31
zoiets? niet getest hoor:


<?php
    foreach($_POST as $key => $value){
        $value = trim($value);
        
        if(!empty($value)){
            echo $key.' => '. $value.'<br />';
        }
    }
?>


@Mitchell: controleren met "" is natuurlijk echt waardeloos...

Ben een WebDesigner, geen code monkey. ;]
Edit: Stom dat ik vergeten was dat je hier foreach() voor kon gebruiken.. *schaamt* ;]

2de Edit:
Dennis schreef op 26.05.2008 13:34
Uh Crispijn zou je je code kunnen uitleggen?
Ik snap niet helemaal wat dat trim doet en wat de laatste if doet. Die laatste if checked of de $value niet leeg is en dan echo je de $_POST met de waarde?

Hij gaat je hele $_POST na op $key als je product. Gebruikt trim ervoor om eventuele spatie's te verwijderen en checkt of er wel iets is ingevult met empty(). (Tenminste, zover zie ik het.)
Volgens mij ga ik het wel werkend krijgen met die foreach, ik moet het alleen nog even verwerken in de $mail->Body (phphmailer script)
Juist, indd

Wat ik doe is de post array uit elkaar trekken. Voor elke variabele binnen dit array ga je kijken of er inhoud is. Dus in jou geval een aantal.

Trim zorgt ervoor dat spaties ook weggehaald worden, en ook een 0 is niet mogelijk... handig ofnie :D

[edit]En zo'n code monkey ben ik nou ook weer niet hoor... Maar ervaring leert... [/edit]

Reageren