Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[php] e-mail formulier met meerkeuze vinkjes[opgelost]

The_Ultimate
5 antwoorden
  • Ik loop tegen een klein probleempje aan met de processing van mijn e-mail formulier.
    In het formulier zitten naast standaard zaken als naam en adres ook enkele keuzemogelijkheden.

    Het probleem is dat het php script enkel de laatst aangevinkte naar mijn e-mail stuurt. Niet alle aangevinkten.

    Voor degene die herkennen: het gaat om een offerteformulier voor een voegbedrijf.

    Dit is de html code voor de vinkjes:

    [code:1:a152bdf3d3]
    <div id="form_table"><input type="checkbox" name="voeg" value="knip/snij" />Knip/Snij
    <input type="checkbox" name="voeg" value="bolgeklopt" />Bol Geklopt
    <input type="checkbox" name="voeg" value="hol" />Hol
    <input type="checkbox" name="voeg" value="platgekamd" />Plat Gekamd
    <input type="checkbox" name="voeg" value="teruggetrokken" />Teruggetrokken
    <input type="checkbox" name="voeg" value="verdiept" />Verdiept
    </div>[/code:1:a152bdf3d3]

    De php code om de vinkjes naar een e-mail adres te sturen is beknopt dit:

    [code:1:a152bdf3d3]
    $_message .= "Voegsoort voorkeur: ".$_POST['voeg']."
    ";[/code:1:a152bdf3d3]

    Nu heb ik op google gezocht. Maar ik kom enkel uit op formuliertoepassingen die of de inhoud van het formulier naar een e-mail programma sturen (mailto:test@test.nl bijvoorbeeld) Of waarbij het formulier als een soort eindresultaat wordt weergegeven op een volgende pagina.

    Ik wil dit dus simpel verzenden naar het e-mail adres. De andere velden zoals naam en e-mail worden wel normaal verzonden op de gebruikte manier.

    bedoeling is dat er dus achter: "Voegsoort voorkeur:" de aangevinkte soorten komen te staan in de e-mail.

    Ik kom er dus even niet uit. Zeer vervelend want dit is het enigste wat nog niet werkt aan het formulier. Voor de rest is het af. Website is dan ook klaar.

    Iemand die me een handje op weg kan helpen?
  • Je moet vierkante haken toevoegen als je verschillende checkboxes onder dezelfde naam gebruikt. In PHP krijg je dan een array gevuld met de keuzes. Het is een tijdje geleden voor mij, maar als het goed is zou het volgende moeten doen wat je wil. (Niet getest.)[code:1:aa064fd7e5]
    <div id="form_table">
    <input type="checkbox" name="voeg[]" value="knip/snij">Knip/Snij</input>
    <input type="checkbox" name="voeg[]" value="bolgeklopt">Bol Geklopt</input>
    <input type="checkbox" name="voeg[]" value="hol">Hol</input>
    <input type="checkbox" name="voeg[]" value="platgekamd">Plat Gekamd</input>
    <input type="checkbox" name="voeg[]" value="teruggetrokken">Teruggetrokken</input>
    <input type="checkbox" name="voeg[]" value="verdiept">Verdiept</input>
    </div>[/code:1:aa064fd7e5]
    - Bas
  • Wat Bas zegt.
    Nu ziet je PHP script de variabel 'voeg' namelijk als een enkele variabele die in je HTML formulier enkele keren van een andere waarde wordt voorzien. En op het moment van versturen wordt de laatst toegekende waarde met de variabele meegestuurd naar het script.

    Als je [] toevoegd, zoals Bas aangeeft, dan wordt de boel als array verstuurd. Een array kan je zien als een uitgebreide variabele die meerdere waardes kan bevatten. Een soort pakketje met waardes zeg maar.

    Dat pakketje moet dan in je PHP script wel weer eerst worden "uitgepakt", voordat je het toevoegd aan $_message, anders gaat het niet werken. M.a.w. simpelweg
    [code:1:85064f0d5e]$_message .= "Voegsoort voorkeur: ".$_POST['voeg']."
    ";[/code:1:85064f0d5e]
    gaat dan niet werken.

    Gelukkig is dat 'uitpakken' niet zo moeilijk. Daar heeft PHP diverse opties voor.
    In dit geval lijkt me dit een goeie optie;
    [code:1:85064f0d5e]$voeg = $_POST['voeg'];
    // maak van de array een enkele variabele met een komma als scheidingsteken
    $voegvoorkeuren = implode(",",$voeg);
    // Voeg de kommagescheiden lijst toe aan variabele $_message
    $_message .= "Voegsoort voorkeur: " . $voegvoorkeuren;[/code:1:85064f0d5e]
    De regels achter dubbele slashes zijn comment regels die verklaren wat er gebeurt en die kunnen dus gewoon weggelaten worden.

    In dit geval plaatst het script komma's tussen de waardes, maar dat kun je wijzigen door de volgemnde regel aan te passen:
    [code:1:85064f0d5e]$voegvoorkeuren = implode(",",$voeg);[/code:1:85064f0d5e]
    achter 'implode' en tussen de aanhalingstekens staat een komma, die kun je aanpassen naar b.v. een spatie
    Voorbeeld:
    [code:1:85064f0d5e]$voegvoorkeuren .= implode(" ",$voeg);[/code:1:85064f0d5e]
  • Ik ga hiermee eens aan de slag.

    deze coderingen:

    [code:1:e150726b33]
    $voeg = $_POST['voeg'];
    $voegvoorkeuren = implode(",",$voeg);
    [/code:1:e150726b33]

    Moeten deze tussen de $_message. delen of kunnen deze ook bij de datumgeneratoren die elders in het formulier zitten worden verwerkt?

    Ik heb namelijk voor aanvang van het topic geprobeert om dergelijke code in te brengen. Echter werd deze simpelweg genegeerd en er kwam op die manier helemaal geen output in de mail van de voegvoorkeuren. (waarschijnlijk ook wat foutjes in de code)

    Maargoed ik probeer het even op beide manieren. Kijken wat het doet

    In elk geval alvast dank!
  • In feite zijn het drie regels.
    Ik zou die eerste twee regels bovenaan in je script doen, en de derde dus op de plek waar je het toegevoegd wilt hebben aan $_message

    Als dat niet werkt, post dan het hele script even, dan kan ik kijken of ik kan zien waar het fout gaat.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.