Ik heb nu dus een form gemaakt in html, met daarbij een php scriptje om de resultaten uit dat form te mailen. In dat form zitten ook checkboxes, en dat werkte allemaal, maar nu niet meer. Ik weet om eerlijk te zijn niet meer wat ik verandert heb, waardoor het niet meer werkt
Hier is de php:
PHP Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $aan = $_POST['to']; $onderwerp = "Bestelling"; $naam = $_POST['naam']; $email = $_POST['email']; $message = "Producten:"; foreach($_POST['check'] as $value) { $check_msg .= "$value\n"; } $body = "From: $naam\n E-Mail: $email\n Message:\n $message\n $check_msg"; echo "Uw bestelling is succesvol verstuurd."; mail($aan, $onderwerp, $body);
Ik begrijp om eerlijk te zijn totaal niet wat er fout aan is, en ook overal op internet staat dat dit zou moeten werken, maar ik krijg een "Warning: Invalid argument supplied for foreach() in /home/u513566323/public_html/test/mailer.php on line 8" melding, en geen mailtje.
Alvast bedankt voor de hulp,
Jan Thiemen
Hoe ziet je formulier eruit? De foutmelding die je krijgt betekent dat $_POST['check'] geen array is.
Born to be root.
Dit is mijn form (beperkt tot het checkbox gedeelte):
Javascript Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","dehoek.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; x=xmlDoc.getElementsByTagName("product"); for (var i=0;i<x.length;i++) { document.write('<input name="check[]" id="checkbox'+i+'" type="checkbox" value="'+(x[i].getElementsByTagName("naam")[0].childNodes[0].nodeValue)+'" /><label for="checkbox'+i+'">'+(x[i].getElementsByTagName("naam")[0].childNodes[0].nodeValue)+' €'+(x[i].getElementsByTagName("prijs")[0].childNodes[0].nodeValue)+' </label>'); }
Zoals je ziet staat het in javascript en haalt het de info voor de checkboxes uit een xml bestand.
Dat is raar. $_POST['check'] zou zo een array moeten zijn (als er minimaal een checkbox op de pagina verschijnt). Zet eens ergens in je PHP-scriptDan kan je zien wat er allemaal in de $_POST-array zit.PHP Code:
1 print_r($_POST);
Born to be root.
Bedankt voor je hulp, ik heb het antwoord gevonden. In plaats van POST had ik GET moeten gebruiken, omdat ik in het aanroepen van het xml bestand ook GET gebruik. Ik heb alle POST's vervangen door GET's en het werkt. Dus in elk geval heel erg bedankt voor je hulp.
ik zou ook wel ff controleren of $_GET['check'] verzonden is
en of het ook een array is.
vooral nu je met $_GET werkt, want een beetje computergebruiker kan makkelijk de url aanpassen en zorgen dat je script in de soep loopt!
Kennis is Power en je kennis begint op Google!