samenvoegen variabelen in for - next lus
$ant_1 = $_POST['vraag1'];$ant_2 = $_POST['vraag2'];
$ant_3 = $_POST['vraag3'];$ant_4 = $_POST['vraag4'];
$ant_5 = $_POST['vraag5']
Verderop worden deze variabelen zo naar de afzender verzonden:
Antwoord 1 = $ant_1
Antwoord 2 = $ant_2
Antwoord 3 = $ant_3
Antwoord 4 = $ant_4
Antwoord 5 = $ant_5
Natuurlijk is het fraaier dat met twee for lussen te doen.
Maar ik weet niet hoe.
Graag jullie hulp!
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// een teller instellen; als teller kleiner is als 20; teller + 1
// dus als teller kleiner is als 20 wordt de lus ingezet
for ( $teller = 10; $teller < 20; $teller++){
code;
}
?>
// een teller instellen; als teller kleiner is als 20; teller + 1
// dus als teller kleiner is als 20 wordt de lus ingezet
for ( $teller = 10; $teller < 20; $teller++){
code;
}
?>
als je wilt controleren of antwoord 1 is ingevoerd
kan je beter een if-statement gebruiken
Jou controle is niet betrouwbaar en je hebt ook wat foutjes gemaakt (onderandere in de 2e if, geen $ voor de variabele naam)
Maar je controleert of die bestaat en Buiten die controle ga je controleren of het antwoord ongelijk is aan null (niet leeg is). Dat zou je beter binnen de isset kunnen (eigenlijk moeten) doen.
@Taeke Dikkema
Wat je kan doen is zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//aantal vragen
$questions = 5;
//hier de standaard inhoud van de mail, voor de antwoorden die zijn gegeven
$mailbody = '';
for($i=1; $i <= $questions; $i++)
{
if( empty( $_POST['ant'.$i] ) )
{
$_POST['ant'.$i] = 'Niet gegeven';
}
$mailbody .= 'Antwoord ' . $i . ' = ' . $_POST['ant' . $i] . "\n"; // \n means new line
}
?>
//aantal vragen
$questions = 5;
//hier de standaard inhoud van de mail, voor de antwoorden die zijn gegeven
$mailbody = '';
for($i=1; $i <= $questions; $i++)
{
if( empty( $_POST['ant'.$i] ) )
{
$_POST['ant'.$i] = 'Niet gegeven';
}
$mailbody .= 'Antwoord ' . $i . ' = ' . $_POST['ant' . $i] . "\n"; // \n means new line
}
?>
Overigens heb ik hier 0,0 aan controle (of er is verzonden, of een variabele bestaat e.d. ingevoerd. Dat mag je zelf doen. Wel geeft dit in de verzonden e-mail aan of een antwoord was ingevuld of niet.
Wat ik graag wil, is de syntax inkorten:
Nu staat er in de mailbody:
Vraag 1 = $ant_1
Vraag 2 = $ant_2
Vraag 3 = $ant_3
Vraag 4 = $ant_4
Vraag 5 = $ant_5
mijn vraag is, hoe ik dat moet vervangen door een for - next lus, zoiets:
for ($i=1;$i<=20;$i++)
{
'Vraag '.$i = $ant_.$i] . "\n";
}
Ik denk dat het probleem in de aanhalingstekens en de punten zit......
Robert Deiman op 05/10/2010 09:37:55:
@Karizma
Jou controle is niet betrouwbaar en je hebt ook wat foutjes gemaakt (onderandere in de 2e if, geen $ voor de variabele naam)
Maar je controleert of die bestaat en Buiten die controle ga je controleren of het antwoord ongelijk is aan null (niet leeg is). Dat zou je beter binnen de isset kunnen (eigenlijk moeten) doen.
mijn antwoord was ook niet zijn oplossing, ik had alleen paar mogelijkheden voorgesteld. en je hoort niet beiden de if-statements uit te voeren. er staat duidelijk //OF :/ en empty is niet echt een betrouwbare methode
Jou controle is niet betrouwbaar en je hebt ook wat foutjes gemaakt (onderandere in de 2e if, geen $ voor de variabele naam)
Maar je controleert of die bestaat en Buiten die controle ga je controleren of het antwoord ongelijk is aan null (niet leeg is). Dat zou je beter binnen de isset kunnen (eigenlijk moeten) doen.
mijn antwoord was ook niet zijn oplossing, ik had alleen paar mogelijkheden voorgesteld. en je hoort niet beiden de if-statements uit te voeren. er staat duidelijk //OF :/ en empty is niet echt een betrouwbare methode
@Taeke dit is niet mogelijk
je kan geen $var een nr geven met een ander $var, waardoor er een nieuw variabel ontstaat, dit is wel mogelijk met een $_POST variabelen
Gewijzigd op 05/10/2010 13:35:57 door Karizma Yusuf
Taeke Dikkema op 05/10/2010 12:49:57:
Waarschijnlijk is mijn vraag te simpel, want ik wil de antwoorden niet controleren....
Wat ik graag wil, is de syntax inkorten:
Nu staat er in de mailbody:
Vraag 1 = $ant_1
Vraag 2 = $ant_2
Vraag 3 = $ant_3
Vraag 4 = $ant_4
Vraag 5 = $ant_5
mijn vraag is, hoe ik dat moet vervangen door een for - next lus, zoiets:
for ($i=1;$i<=20;$i++)
{
'Vraag '.$i = $ant_.$i] . "\n";
}
Ik denk dat het probleem in de aanhalingstekens en de punten zit......
Wat ik graag wil, is de syntax inkorten:
Nu staat er in de mailbody:
Vraag 1 = $ant_1
Vraag 2 = $ant_2
Vraag 3 = $ant_3
Vraag 4 = $ant_4
Vraag 5 = $ant_5
mijn vraag is, hoe ik dat moet vervangen door een for - next lus, zoiets:
for ($i=1;$i<=20;$i++)
{
'Vraag '.$i = $ant_.$i] . "\n";
}
Ik denk dat het probleem in de aanhalingstekens en de punten zit......
Pak mijn code eens en gooi aan het einde "echo $mailbody;". Je zult zien dat het wel is wat je bedoelde.
Dat houdt dus in:
<input name="vraag[1]" .......... />
En dan is $_POST['vraag'] een array die je met php veel makkelijker / directer kan verwerken
1.) Zoals Noppes aangeeft.
2.)
@Pieter van Linschoten: En wat nou als de nummering doorloopt tot 10 of 100? Dan werkt dat van jou niet. Noppes geeft de juiste oplossing.
Wat substr(argument 1,argument 2) doet, is: Return alle tekens van [argument 1], behalve de eerste [argument 2].
Gewijzigd op 05/10/2010 17:41:50 door Pieter van Linschoten
Pieter van Linschoten op 05/10/2010 17:40:28:
Dan werkt het nog steeds. ;)
Wat substr(argument 1,argument 2) doet, is: Return alle tekens van [argument 1], behalve de eerste [argument 2].
Wat substr(argument 1,argument 2) doet, is: Return alle tekens van [argument 1], behalve de eerste [argument 2].
Je hebt inderdaad gelijk. Maar toch is het geen nette manier.
Inderdaad. Zoals Noppes al aangaf, is een POST array met de antwoorden veel netter. Maar als je geen zin hebt, om het formulier aan te passen, dan kan je de verwerking aanpassen ;)