Hallo,

Ik ben bezig met een fotogalerij. Nou heb ik een upload scriptje dat alle foto's verkleint naar een nieuw origineel en een thumb. Vervolgens is het de bedoeling dat er een overzichtspagina komt die alle thumbs laat zien met daarnaast een veld om commentaar in te voegen bij de foto's.

Ik laat alle foto's zien via een while lus met daarnaast dus een tekstvlak om commentaar in te vullen. Nou heb ik de name van het invul vakje al om dezelfde naam gehouden en zoals hieronder staat iedere keer een andere name gegenereerd.


<form method="post" enctype="text/plain" action="verwerk_foto_overzicht.php">
	<table cellpadding="0" cellspacing="0" border="0" align="center">
		<tr>
        	<td colspan="3">&nbsp;</td>
        </tr>
<?
ini_set('display_errors', 'On');
error_reporting(E_ALL);

$query = mysql_query("SELECT * FROM fotoalbum WHERE map = '$gallerij'");
$i = 1;
while($uitkomst = mysql_fetch_array($query)){ 
	$id				= $uitkomst["id"];
	$map			= $uitkomst["map"];
	$naam			= $uitkomst["naam"];
	$omschrijving	= $uitkomst["omschrijving"];
		?>

    	<tr>
			<td class="normal">
        		<input type="hidden" size="5" value="<? echo $id; ?>" name="id" />
        		<img src="../fotoalbum/<? echo $map; ?>/<? echo $naam; ?>-thumb.jpg" /></td>
        	<td width="25">&nbsp;</td>
        	<td class="normal">
        		<input type="text" name="omschrijving" size="100" maxlength="200" value="<? echo $omschrijving; ?>" />
        	</td>
    	</tr>
    	<tr>
        	<td colspan="3" align="right">
    			<input name="Submit" type="submit" value="Opslaan" style="border: 1px solid #535353; background-color: #FFFFFF; color:#535353;" />
    		</td>
		</tr>
    	<tr>
        	<td colspan="3" align="right">&nbsp;</td>
        </tr>
<?
    $i++;

}   ?>
	</table>
</form>


Daarna heb ik geprobeerd met een for lus het in de database te doen en ook zonder.


for($i=1; $i<300; $i++){

$omschrijving = $_POST['omschrijving'.$i.''];

$query = mysql_query("UPDATE fotoalbum SET 

omschrijving 			= '$omschrijving'

WHERE id = '$_POST[id]'"); 

}



Ik denk zelf dat ik toch eigenlijk aardig verkeert zit om dit werkend te krijgen met die lussen. Misschien dat dit al heel erg lelijk is en jullie denken van hoe kan hij dat doen !!! Maar ik ben nog niet zo lang bezig met PHP en wilde eerst zelf even klooien voordat ik hier dan maar eens om directies ging vragen.

Bij deze dus de vraag of jullie wat betere ideeën hebben om dit werkend te krijgen :)
Ik ga niet het helemaal uitwerken, maar even om je gedachten op gang te helpen

Stel je pagina heeft nu 5 foto's.

Dan krijg je 5x

<input type="hidden" name="id" /> met alleen een oplopende value

Wanneer je nu $_POST['id'] opvraagt, zul je merken dat je de value van het laatste input veld krijgt.

Om dit te voorkomen moet je de name unique maken. Dus bijvoorbeeld met een id als: "id_1", "id_2" etc

Dan kun je met $_POST['id_1']; de waarde van de eerste input halen.

Aangezien je met meerdere input fields werkt zou je ook voor een array kunnen gaan

Dan zou ik gaan voor een algemene inputs array. Deze noemen we even 'result'

$i is de waarde uit je while lus

<input type="hidden" name="result['$id']['id'] value="" />

Op deze manier kun je dan ook je omschrijving bijvoorbeeld toevoegen

<input type="text" name="result['$id']['description']" value="" />

Dit heeft als voordeel dat je daarna alle omschrijvingen in $_POST['result'] krijgt

Dan kun je hier doorheenlopen met
foreach(from=$_POST['result'] item=$row)
{
echo $row['id'];
echo $row['description'];
}

Bedankt.

Ga ik weer even verder knutselen. Ik wil ook inderdaad niet een kant en klaar script, want ik wil het zelf leren. Even een richting was inderdaad de bedoeling.
de submit hoef je niet aan te passen. Eigenlijk hoef je die ook maar 1x te printen.

Dan maakt het namelijk niet uit als ze eerst alle velden aanpassen voor ze op opslaan drukken :)
Je kunt de 'name' van alle hidden velden veranderen naar:
id[], dus:
<input type="hidden" name="id[]" value="<hier het oploden id>" />

En vervolgens krijg je in $_POST['id'] een array met alle hidden velden met id[] (de value's daar van).
Want doe maar eens print_r($_POST['id'].
ja maar als je daar met een loop doorheen gaat, dan zit je weer met het probleem om daar de juiste omschrijving bij te krijgen
@ Spike

Als ik jou foreach voorbeeld gebruik krijg ik als foutmelding: Parse error: syntax error, unexpected '='

Als ik ook naar allerlei andere foreach voorbeelden kijk (na te google en tutorial hier) dan zie ik iedere keer foreach zo omschreven:

foreach($variabele as $anderevar => $derdevar){
echo of wat dan ook ;}

Nou is het me ook nog zeker niet precies duidelijk hoe de foreach precies werkt hoor, daar ben ik ook nog mee bezig. Zo zie ik ook dat er vaak eerst nog explode() gebruikt wordt. Maar ik heb nog geen 1 keer gegevens kunnen echoën of iets. Iedere keer zegt hij dat de foreach lus niet goed is ;(

Warning: Invalid argument supplied for foreach()

Michael

Reageren