Id behouden bij file post

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Hey,

Ik heb een pagina met daarop een lijst met afbeeldingen. Deze lijst word opgebouwd uit een tabel in een mySql db die info bevat over waa de bestanden staan op mn server. Onder elke afbeelding heb ik een <input type='file'>, om die afbeelding te heruploaden.

Ik heb al een upload pagina en de functies om te uploaden of te updaten, maar heb geen idee hoe ik de ID van de afbeelding meegeef zodat mn script weet welke record in de db er geupdate moet worden :confused:

Ik heb nu deze code die na de submit word uitgevoerd
Code:
	foreach ($_FILES as $file)
		{
		if ($file != $_FILES["file_new"]) updateImage($file);		
		}
In functie updateImage heb ik dus ook de ID nodig. Iemand een idee hoe ik die ook kan meegeven?
 
Je kan een attribuut "name = 'HIER_JE_ID_' in het input veld zetten. Volgens mij kun je deze dan weer uitlezen in je $_FILES-array.
 
Nope, heb ik al geprobeert. $file['name'] bevat de bestandsnaam van het bestand dat je upload :(
 
name="image[id]"

Nu staat er als het goed is name="image[]", als het meerdere bestanden zijn. Nu vul je dus die vierkante haken met het id.
 
Het probleem is niet dat ik niet weet hoe ik de afbeelding moet selecteren, maar hoe ik aan de id kom die ik daarvoor nodig heb.

Met de volgende code genereer ik de html van de pagina waar je op submit kan klikken
Code:
		$picNr = 0;
		$db->query("SELECT pic_name, pic_id FROM `fwp_bikes_pics` WHERE `bike_id` = '$id'");
		while ($bikePic = $db->fetch_row())
			{
			$image = $bikePic['pic_name']; $picId = $bikePic['pic_id'];
			echo "<img src='../images/bikepics/sthumb/$image' /><br />\n";
			echo "Herupload: <input id='multifile' type='file' name='file_$picId' /><br />\n";
			$picNr++;
			}

Ik heb dus na de submit, in de code van mn eerste post, de variabele $picId nodig.
 
Wat dacht je van een
PHP:
echo '<input type="hidden" name="picId" value="'. $picId .'" />';
 
Dat zou perfect gaan als ik slechts 1 afbeelding had, maar aangezien ik er meerdere heb en mn pc (spijtig genoeg) niet kan ruiken welke <input type='hidden'> er bij welke <input type='file'> hoord heb ik er niet echt veel aan :(
 
Hoezo? Ik haal uit je code dat al die afbeeldingen bij één ID horen.
 
Ja, dat is idd zo.

Maar hoe stel jij dan voor dat ik na de submit in die foreach loop van me achter de value van de correcte input kom?
 
Je voert toch een UPDATE query uit?

Kwestie van die $_POST['picId'] aanroepen in je WHERE
 
$_POST['picId'] kan maar de id van 1 afbeelding bevatten he, ik heb voor elke afbeelding de id nodig...
 
Dan zou je met een array-structuur moeten werken.

Wanneer je dit doet
PHP:
echo '<input type="hidden" name="picId[]" value="'. $picId .'" />';
Dan krijg je dacht ik een $_POST['picId'][0] t/m de laatste dus bijvoorbeeld $_POST['picId'][6]
Het werkt met checkboxes wel, dus ik ga er van uit dat het nu ook wel moet werken.

Wellicht kun je het ook toepassen op je uploads dan kun je in 1 FOR-lus de boel bijwerken.
 
Dit kan ook:
PHP:
<form action='url.php?id=<?php echo "$id"; ?>' method='POST'>

en dan in url.php:

$id= $_GET[id];
 
en dan?

Dan moet je voor elk formuliergedeelte een aparte submitknop maken.

Deze simpele test wijst het uit.
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
	print_r($_POST);
}
?>
<form method="post">
<input type="hidden" name="test2" value="123" />
</form>
<form method="post">
<input type="hidden" name="test1" value="456" />
<input type="submit" value="Stuur" />
</form>
</body>
</html>
 
Gaat het er dan niet om dat er steeds 1 afbeelding opnieuw geupload wordt? Dan zou je inderdaad voor elke afbeelding een submit-knop kunnen / moeten maken... Ik zie het probleem daarvan niet.
 
De bedoeling is dat meerdere foto's tegelijk moeten worden aangepast.
 
Als je de naam van je inputfields van files als array maakt, en dan een hidden field met alle id's, gescheiden door komma's bvb, kan je er met een FOR-lus waarschijnlijk wel aan uit?

Formulier:
HTML:
<form method="post" action="">
<img src="img_34.jpg" alt="" />
<input type="file" name="afb[]" />
<img src="img_77.jpg" alt="" />
<input type="file" name="afb[]" />
<img src="img_2.png" alt="" />
<input type="file" name="afb[]" />
<input type="hidden" name="ids" value="34,77,2" />
<input type="submit" value="verzenden" />
</form>

Verwerken:
PHP:
$ids = split(",", $_POST['ids']);
for ($i = 0; $i < count($ids); $i++) {
    if (!empty($_FILES[afb][$i])) {    //zou ook isset() kunnen zijn
        $image_id = $ids[$i];
        //process file
    }
}

De code is conceptueel en ongetest net uit mijn duim gezogen. Ik heb er dus ook geen idee van of het op deze manier doorlopen van $_FILES werkt, maar ik zie zo direct geen reden waarom dat niet zo zou zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan