aan de hand van opgegeven getal aantal text velden weergeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danielle

Danielle

17/01/2006 17:17:00
Quote Anchor link
Ik heb een text veld en daar geeft de gebruiker aan met hoeveel personen hij/zij wilt komen. En aan de hand van die variabele moet er een lijst met text velden aangemaakt worden. Waarin diegene de naam van iedere persoon in zet.

Maar hoe doe ik dat? Ik ken wel de while loop die je gebruikt bij een sql query om een tabel te vullen. Maar zou niet weten hoe ik dat hierbij moet doen.

Lijkt me dat ik hiervan gebruik moet maken
www.php.net/for

Maar de uitleg daar is minimaal (iig voor mij) en kom er niet echt uit.

Ook moet ieder veld een unieke naam hebben want daarna moeten ze in een database geplaatst worden.

Ik heb het idee, weet alleen niet precies hoe ik het moet uitvoeren :D
 
PHP hulp

PHP hulp

26/04/2024 23:47:09
 
Eric Cartman

Eric Cartman

17/01/2006 17:33:00
Quote Anchor link
Een for-lus is de ingewikkeldste lus die er is... Maar ook de meest functionele (vind ik)...
Deze for-lus betekent het volgende:
variabale $i is 0; totdat $i lager is dan $a; 1 bij $i optellen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$a
= 10;
for($i = 0; $i < $a; $i++) {
  echo 'We zijn nu bij nummer: <b>' .$i. '</b><br />';
}

?>


Met een for-lus kun je dus maken wat jij wilit, door de echo in het voorbeeld te vervangen door een <input tag, en $a door het cijfer wat is ingevuld in het formulier.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$a
= $_POST['wij_komen_met_zoveel_mensen'];
echo '<form action="file.php"  method="post">';
for ($i = 0; $i < $a; $i ++) {
  echo '<input type="text" name="naam' .$i. '" /><br />';
}

echo '</form>';
?>


Ik hoop dat je er wat aan hebt,
veel succes!


-- edit --
typo
Gewijzigd op 17/01/2006 17:38:00 door Eric Cartman
 
Woopie100

Woopie100

17/01/2006 17:35:00
Quote Anchor link
Jip je was me net voor :P
 
Eric Cartman

Eric Cartman

17/01/2006 17:36:00
Quote Anchor link
Haha, ik dacht juist dat iemand mij voor was toen ik bezig was met typen :)
 
Danielle

Danielle

17/01/2006 17:40:00
Quote Anchor link
OK bedankt, ik ga eens proberen. Meld we wel weer als ik vast loop
 
Danielle

Danielle

17/01/2006 18:38:00
Quote Anchor link
En hoe stop ik deze informatie nu zo efficient mogelijk in de database? Zou die for loop kunnen gebruiken. Maar bij 50 personen wordt die query 50x herhaald. Lijkt me niet bevordelijk voor de load op de server.
 
Eric Cartman

Eric Cartman

17/01/2006 18:50:00
Quote Anchor link
Hoe heb je de database ingedeeld? Per persoon die komt, of via de persoon die het heeft opgegeven..?
 
Danielle

Danielle

17/01/2006 18:54:00
Quote Anchor link
Via de persoon die het heeft opgegeven.

Om precies te zijn.

De 1e pagina moet er een contactpersoon opgegeven worden met alle benodigde gegevens. Dan onderaan die pagina moet diegene opgeven met hoeveel personen hij komt.

Op de volgende pagina worden dan die velden berekend en hij moet hij hier alle namen opgeven.

Eerst wilde we alleen gegevens contactpersoon + aantal. Maar hulpdiensten adviseren om van iedereen de naam te hebben in geval van nood/calamiteiten.
 
Danielle

Danielle

17/01/2006 18:58:00
Quote Anchor link
En dan heb ik de database zo ingedeeld misschien stom, ik zou het niet weten.

Een tabel met een auto increment id waar de contactgegevens worden ingevoerd.

Dan een select query om dat id op te vragen (want die moet gemaild worden naar diegen want aan de hand daarvan kunnen we zien of er betaald wordt)

En dan met dat id en de naam worden die gegevens in een 2e tabel gezet waar de namen van de personen in komen te staan.
 
Eric Cartman

Eric Cartman

17/01/2006 19:01:00
Quote Anchor link
Dan hoef je de query dus niet 50 keer te herhalen, maar alleen de personen die meekomen in de query te zetten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$sql
  = "INSERT INTO tabel (veld1, veld2, gasten) ";
$sql .= "VALUES ";
$sql .= "('waarde1', 'waarde2', '";

$a = $_POST['aantal_mensen'];
for ($i = 0; $i < $a; $i++) {
  $sql .= $sql. $persoon[$i]. "', '";
}

?>
 
Danielle

Danielle

17/01/2006 19:05:00
Quote Anchor link
Maar de namen krijgen niet ieder een eigen veld. Maar een eigen rij. Dus iets als dit

id | Naampers
1 | jantje
1 | Pietje
1 | klaasje


En dan met een select query kan ik iedereen met id 1 opvragen. Dit omdat mensen wijzigingen kunnen doorgeven. En dat ze dan aangepast kunnen worden.
 
Eric Cartman

Eric Cartman

18/01/2006 16:20:00
Quote Anchor link
Dus je hebt drie dezelfde rijen, die allemaal 1 heten..?
 
Danielle

Danielle

18/01/2006 20:41:00
Quote Anchor link
Die worden ingevoegd. In 1 tabel komt de contactpersoon en in een andere komen de naam van de personen. En daar wordt die unieke id gekoppeld die ook de contactpersoon heeft.


Maar ik laat hem nu iedere een nieuwe regel in de database toevoegen. Werkt goed. Wil alleen nu controleren of alle velden zijn ingevuld.

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
if (isset($_POST["submit"])) {
    echo '<div class="ok">';        

    if (empty($_POST["scoutingnaam"])) { echo "Je hebt de naam van je scoutingvereniging niet ingevuld!<br>
    Klik <a href=\"javascript:history.back(1)\">hier</a> om terug tegaan.</div><br>";
    }

    $a = $_POST['aantpers'];
    for ($i = 0; $i < $a; $i ++) {
    elseif (empty($_POST["persoonnaam$i"])) { echo "Je hebt niet alle namen van je groep opgegeven!<br>
    Klik <a href=\"javascript:history.back(1)\">hier</a> om terug tegaan.</div><br>";
    }
    }

    else {


Eerst een if statement, dan een elseif in die for statement

Daarna een else statement waarna de code wordt uitgevoerd als alle gegevens kloppen.

Zonder die for statement werkt het. Maar nu krijg ik de volgende error.


Parse error: parse error, unexpected T_ELSEIF
 



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.