Hallo,
Ik ben bezig met een superklein projectje voor school.
En zit met een for lus namen onder elkaar te zetten die uit een ander formulier ingevoerd zijn.
Nu staat het niet vast hoeveel namen er ingevoerd kunnen worden omdat de gebruiker aangeeft hoeveel invoervelden hij wil hebben.
Maar ik moet wel weten hoeveel namen deze persoon heeft gekozen die dan weergeven moeten worden in een tabel.

Mijn 1e pagina:
<html>
<head/>
<body>
<form method="post" action="action.php">
Aantal velden
<input type="text" name="aantal" value=""/>
<input type="submit" value="Maak velden"/>
<br><br>
</body>
</html>

action.php:
<?php
$aantal = $_POST["aantal"];

echo "Namen: <br>";
echo "<html><head/><body><form method='get' action='tabel.php'>";
for($i = 0; $i < $aantal; $i++)
{
echo "<input type='text' size='10' value='' name='naam$i'><br>";
}
echo "<input type='submit' name='tabel' value='Maak tabel'>";
echo $aantal;
echo "</form></body></html>";


?>


Mijn laatste pagina, deze klopt nog niet maar ik kom er totaal niet meer uit, ik zal wel veeeeel te moeilijk denken maar ik kom er echt ff niet meer op.

<?php

echo "Namen: <br>";
echo "<html><head/><body><table>";
for($i = 0; $i < 10; $i++)
{
echo $_GET["naam$i"] . "<br>";
}
echo $namen;
echo "</table></body></html>";
?>

Ik hoop dat iemand me kan helpen.
Bedoel je dit?
<input type="text" name="aantal" value="<?php echo $_POST['aantal']; ?>"/>


edit:

<?php
echo "<input type='text' size='10' value='' name='naam$i' value=''><br>";
?>

Je hebt de $i er verkeerd in staan..


<?php
echo "<input type='text' size='10' value='' name='naam".$i."' value=''><br>";
?>
hey bedankt voor de hulp, maar value="<?php echo $_POST['aantal']; ?>" werkt bij mij niet, dan krijg ik een error. En eigenlijk weet ik niet of dat de oplossing is voor mijn probleem.
Ik moet gewoon het aantal velden tellen die ik in het eerste formulier aangeef maar dan moet ik dat weten in mijn laatste formulier.

<?php
echo "<input type='text' size='10' value='' name='naam$i' value=''><br>";
?>
die $i heb ik er direct achter gezet zodat hij dan elk invoerveld een andere naam geeft. zoals jij het gedaan had werkt ie bij mij niet zoals ik dat wil.

Volgens mij denk ik veel te moeilijk en kan het heel makkelijk opgelost worden maar ik kan er echt niet op komen :S
wat doet die naam$i ??
is dat de naam dat gebruikt moet worden??
is nogal vreemd
Matthias schreef op 29.09.2009 17:42
wat doet die naam$i ??
is dat de naam dat gebruikt moet worden??
is nogal vreemd

Dit wil hij bereiken:
naam1
naam2
naam3
ect..


Maar dat lukt zo niet. Hij zal $i toch echt buiten de haakjes moeten halen

edit:
Ik zou je script even opnieuw maken want er klopt geen zak van :
<?php
$aantal = $_GET[""];
?>
Matthias schreef op 29.09.2009 17:42
wat doet die naam$i ??
is dat de naam dat gebruikt moet worden??
is nogal vreemd

Omdat de gebruiker aangeeft in het eerste formulier hoeveel velden hij wil dan moet de "name" van elk veld toch een andere naam hebben? dus daarom telt ie dan op?
Dan krijg je naam1, naam2, naam3 etc
Of denk ik nou helemaal verkeerd.
Maar het gaat mij allemaal meer om het 3e formulier. hoe krijg ik de ingevulde namen in een tabel op formulier 3? De rest krijg ik wel werkend.

Ik zal even mijn 1e post editten van wat ik nu heb.

http://nibbor.hopto.org/php.php << kijk daar even dan snap je misschien wat ik precies bedoel.
Bedoel je zoiets Robbin ?


<script type="text/javascript">
	function maakVelden(obj) {
		var html = ''
		var aantal_velden = obj.value
		for (var teller = 1; teller <= aantal_velden; teller++) {
			html += '<br />Naam '+teller+': <input type="text" name="namen['+teller+']" />'
		}
		document.getElementById("nieuwe-velden").innerHTML = html
	}
</script>

<form>
	Aantal velden: <input type="text" name="aantal_velden" onkeyup="maakVelden(this)" />
	<div id="nieuwe-velden">
	
	</div>
</form>


EDIT:

In je verwerking krijg je dan;


<?

foreach ($_POST['namen'] as $sleutel => $waarde) {
  print 'Naam '.$sleutel.' = '.$waarde;
}

# ...

print '<pre>';
print_r($_POST['namen']);
print '</pre>';
?>
Op die link gaat nog een hoop fout.
Robbin: echo 'naam$i'; zal vast wel werken bij jou, maar is de foute manier.
echo 'naam'.$i; doet eigenlijk 't zelfde, maar is wel de goede manier.
Zie ook 't linkje van Yearupie na de beginners handleiding.

Wat je ook zou kunnen doen, maar misschien niet de mooiste oplossing, is gewoon $i in een session opslaan of mee laten sturen met de post/get door 'm in de action te zetten. Dan kan je 'm daarna gebruiken voor je for lus.


<?php
echo '<form method="POST" action="?a='.$_POST['aantal'].'">';
echo '</form>';

for($i=1;$i<=$_POST['a'];$i++)
{
    echo 'Naam'.$i.': '.htmlentities($_GET['naam'.$i]).'<br>';
}
?>
Ja ik zie namen 7, 8 en 9 te voorschijn komen.. en dan index fout.. Maar je moet er toch maar 6 hebben?

Reageren