Hoi,
Wie weet hoe dit op te lossen?
Ik heb een form met wat tekstvelden. Ik laat de waarden hiervan uitlezen uit mysql middels een for-lus, zodat deze waarden dus standaard in de velden komen te staan.
Eenmaal de pagina geladen, wil ik deze tekstvelden onafhankelijk van elkaar kunnen wijzigen.
Echter... zoals ik het nu heb gedaan is het nodig dat elke bundel tekstvelden z'n eigen unieke code heeft.
Ik zoek natuurlijk naar een oplossing waarbij ik dus zowel de waarden kan ophalen uit de db, als dat ik elk veldje kan wijzigen....

PS 'k heb geexperimenteerd met "thuis" en dat werkt dus niet;
Wat ik nu heb:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>WK2006</title>
</head>

<body>
<table width="801" border="0">
<tr>
<td width="59"><div align="center">Datum</div></td>
<td width="178"><div align="center">Thuis</div></td>
<td width="261"><div align="center">Uit</div></td>
<td width="88"><div align="center">Uitslag</div></td>
<td width="82"><div align="center">Toto</div></td>
<td width="67"><div align="center"></div></td>
<td width="36"><div align="center"></div></td>
</tr>
</table>

<?php
for ($j = 1; $j <= 2;$j++ ) {

<?php
#=================================== GET FORM FROM TABLE ==================================
$queryDatum = mysql_query("SELECT datum FROM wedstrijden WHERE nummer=$j ");$valueDatum=mysql_result($queryDatum,0);
$queryThuis = mysql_query("SELECT thuis FROM wedstrijden WHERE nummer=$j ");$valueThuis=mysql_result($queryThuis,0);
$queryUit = mysql_query("SELECT uit FROM wedstrijden WHERE nummer=$j ");$valueUit=mysql_result($queryUit,0);
$queryVoor = mysql_query("SELECT voor FROM wedstrijden WHERE nummer=$j ");$valueVoor=mysql_result($queryVoor,0);
$queryTegen = mysql_query("SELECT tegen FROM wedstrijden WHERE nummer=$j ");$valueTegen=mysql_result($queryTegen,0);
$queryToto = mysql_query("SELECT toto FROM wedstrijden WHERE nummer=$j ");$valueToto=mysql_result($queryToto,0);
$nthuis="thuis$j";
?>
<form name="putintable" method="POST" action="fills.php">
<table width="801" border="0">
<tr>
<td width="48"><input name="datum" type="text" size="8" maxlength="8" value="<?= $valueDatum ?>"></td>
<td width="180"><input name="<?= $nthuis ?>" type="text" size="30" maxlength="20" value="<?= $valueThuis ?>" ></td>
<td width="224"><input name="uit" type="text" size="30" maxlength="20" value="<?= $valueUit ?>"></td>
<td width="33"><input name="voor" type="text" size="2" maxlength="2" value="<?= $valueVoor ?>"></td>
<td width="64"><input name="tegen" type="text" size="2" maxlength="2" value="<?= $valueTegen ?>"></td>
<td width="132"><input name="toto" type="text" size="2" maxlength="1" value="<?= $valueToto ?>"></td>
<td width="90">&nbsp;</td>
</tr>
</table>
<p>&nbsp;</p>
</form>
?>
<?php
echo $nthuis;

#declare
$datum=$_POST['datum'];
$thuis=$_POST['$nthuis'];
$uit=$_POST['uit'];
$voor=$_POST['voor'];
$tegen=$_POST['tegen'];
$toto=$_POST['toto'];
echo $thuis;
$aktie=$_POST['aktie'];
if (isset($aktie)){
echo "Thanks for submitting!";
$query3 = "UPDATE wedstrijden SET datum='$datum',thuis='$thuis',uit='$uit',voor='$voor',tegen='$tegen',toto='$toto' WHERE nummer=$j ";
mysql_query($query3);
#header("Refresh: 0; URL=fills.php");
}
}
?>
<form name="submitform" method="POST" action="fills.php">
<input type="submit" value="opslaan">
<input type="hidden" name="aktie" value="opslaan">
</form>
</body>
</html>
Ter aanvulling, er staat in de db ook een eerste kolom met de naam "nummer". Deze moet dus niet zichtbaar zijn in de form maar is er dus wel...
Met "code" bedoel ik "naam" van het tekstveld.
<td width="180"><input name="<?= $nthuis ?>" type="text" size="30" maxlength="20" value="<?= $valueThuis ?>" >

gaat inderdaad niet werken.
moet met <?php echo() ?> anders schrijft PHP niks naar het scherm, en dat is wat je nodig hebt als je HTML gebruikt. Moet dus worden

<td width="180"><input name="<?php echo $nthuis; ?>" type="text" size="30" maxlength="20" value="<?php echo $valueThuis; ?>" >
en je kunt btw beter met while($rij=mysql_fetch_array()){

}
werken als je met mysql werkt. Zie nl.php.net
@Armorad
Dat van die while hoeft niet Armorad, er wordt maar 1 record geselecteerd met de WHERE voorwaarde. Beetje onzinnig dan om een While te maken ;)

@ Eric
Wat ik me wel afvraag, waarom zoveel query's? maak er 1 van:

<?
$query = mysql_query("SELECT datum,thuis,uit,voor,tegen,toto FROM wedstrijden WHERE nummer=$j ");
$gegevens = mysql_fetch_array($query);
// daarna gegevens uitlezen
$naam=$gegevens['naam'];
// dus $var = $gegevens['kolomnaam']
?>
Waarom twee forms? Eén met data zonder submit en een zonder data met submit?
@ Armorad.

als je een input hebt als:

<input type='text' name='var' value='<?=$var ?>'>

en je zet bovenaan je script het volgende:
<?
$var = $_POST['var'];
?>

dan gaat <?=$var ?> prima werken hoor.

language construct "echo()"
@Amorad Dat van die <?php echo $nthuis; ?> ga ik gelijk even proberen. Eens kijken of dat het is...

@Robert Wholy f%$k, nooit aan gedacht! Dat ga ik gelijk aanpassen. Super!

@San the Crazy Nou, één voor ophalen van gegevens uit database, en één voor verzenden naar database.
Dat wil ik liefst gescheiden houden....

@Erik Kennelijk niet dus... :-) Maar ga toch nog even wel uitproberen zoals jij het hebt genoteerd. Kzie wel een verschilletje...

Ik laat later even weten of het wilde werken. Alvast dank voor de hulp zover ;-)
Wel, ik heb er nogmaals naar gekeken en aangepast.
Toch boden voorstellen geen optie.
Zoals ik het hierboven heb neergezet is het misschien toch wel wat onduidelijk...
Waar het kort gezegd op neerkomt:

Elk tekstveld heeft een eigen 'name' nodig. Anders weet het php-document immers niet welke waarden van welk veld waar in de databse moeten worden gezet.
Ter info: In mijn php-doc is het niet te zien, maar het aantal velden is niet van te voren vastgelegd. Deze worden door een voorgaande form bepaald door de gebruiker.

Het probleem ligt dus in het maken van die unieke veldnaam en het uitlezen van de waarde van dat specifieke veld.

<?php echo $nthuis; ?> geeft exact dezelfde waarde als <?= $nthuis ?> Dat even tussendoor.
Maar als je dat dus laat echo-en, dan heeft de 'name' dus wel degelijk deze waarde ook gekregen, zo lijkt en blijkt het.
Echter... $thuis=$_POST['$nthuis']; daar gaat het mis... $thuis krijgt NIET de waarde/inhoud van het veld!

En da's nou net wat ik juist nodig heb...
Tot dusver nog steeds geen oplossing gevonden.
Dus als er iemand nog iets weet... ik hou me van harte aanbevolen.
Dus als ik het goed begrijp weet je nooit van tevoren hoeveel tekstvelden je form zal hebben?

Reageren