samenvoegen variabelen in for - next lus

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Taeke Dikkema

Taeke Dikkema

04/10/2010 22:34:58
Quote Anchor link
vanuit een Flash swf laad ik de volgende variabelen in een php-script (om in een email te verwerken):
$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!
 
PHP hulp

PHP hulp

23/04/2024 22:38:26
 
Karizma Yusuf

Karizma Yusuf

05/10/2010 05:23:39
Quote Anchor link
zo werkt een for loop

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>


als je wilt controleren of antwoord 1 is ingevoerd

kan je beter een if-statement gebruiken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if(isset($ant_1))
{

  code;
}

// of
if(ant_1 != null)
{

  code;
}

?>
 
SilverWolf NL

SilverWolf NL

05/10/2010 09:16:43
Quote Anchor link
En ik zou ook even kijken naar arrays. Uiteraard in combinatie met foreach()
 
Robert Deiman

Robert Deiman

05/10/2010 09:37:55
Quote Anchor link
@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.

@Taeke Dikkema

Wat je kan doen is zoiets:
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
<?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
}
?>


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.
 
Taeke Dikkema

Taeke Dikkema

05/10/2010 12:49:57
Quote Anchor link
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......
 
Karizma Yusuf

Karizma Yusuf

05/10/2010 13:25:52
Quote Anchor link
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



@Taeke dit is niet mogelijk
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
'Vraag '.$i = $ant_.$i] . "\n";
?>

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
['ant'.$x.'']
?>
Gewijzigd op 05/10/2010 13:35:57 door Karizma Yusuf
 
Robert Deiman

Robert Deiman

05/10/2010 14:18:52
Quote Anchor link
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......


Pak mijn code eens en gooi aan het einde "echo $mailbody;". Je zult zien dat het wel is wat je bedoelde.
 
Noppes Homeland

Noppes Homeland

05/10/2010 17:25:00
Quote Anchor link
Een form met genummerde namen is een foutieve opzet!! Gebruik form array definitie.

Dat houdt dus in:
<input name="vraag[1]" .......... />

En dan is $_POST['vraag'] een array die je met php veel makkelijker / directer kan verwerken
 
Pieter van Linschoten

Pieter van Linschoten

05/10/2010 17:33:13
Quote Anchor link
2 manieren:

1.) Zoals Noppes aangeeft.

2.)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
foreach($_POST as $key => $val){
   if(substr($key,0,5) == 'vraag' && is_numeric(substr($key,5))){
       $i = substr($key,5);
       print 'Vraag '.$i.' = '.$val;
   }
}

?>
 
- SanThe -

- SanThe -

05/10/2010 17:35:58
Quote Anchor link
@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.
 
Pieter van Linschoten

Pieter van Linschoten

05/10/2010 17:40:28
Quote Anchor link
Dan werkt het nog steeds. ;)
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
 
- SanThe -

- SanThe -

05/10/2010 17:43:56
Quote Anchor link
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].


Je hebt inderdaad gelijk. Maar toch is het geen nette manier.
 
Pieter van Linschoten

Pieter van Linschoten

05/10/2010 17:45:43
Quote Anchor link
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 ;)
 



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.