Archief - PHP: upload probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Sprits

Legacy Member
ik heb een pagina waarbij ik products toevoeg aan een database. als ik een product toevoeg, kan ik daar ook een logo voor uploaden.
products worde in database gezet en het logo wordt perfect geupload

nu moet ik deze products ook af en toe kunnen wijzigen.
het kan zelfs zijn da er een compleet nieuw logo moet worden geupload.

het probleem is niet dat het logo niet wordt geupload maar eerder dat de $_FILES['userfile'] ni werkt. dus hij krijgt het in product-edit3.php ni aan.

mijn form
PHP:
<form action="?q=product-edit3" method="post">
<?php
$sql = "SELECT * FROM products WHERE pID='$pID'";
$result = mysql_query($sql);  
while ($record = mysql_fetch_object($result)) { 

$name = htmlentities($record->name);
$sdesc = htmlentities($record->sdesc);
$ldesc = htmlentities($record->ldesc);
$logo = $record->logo;
?>


<input type="hidden" name="pID" value="<?php echo "$record->pID";?>" />

<b>productnaam:</b> <br/>  
<input type="text" name="pname" size="50" maxlength="255" value="<?php echo "$name";?>" />
<p></p>

<b>kleine omschrijving:</b><br/>

<textarea id="psdesc" name="psdesc" rows="5" cols="80" onfocus="getTarget('psdesc')" onselect="storeCursor(this)" onkeyup="storeCursor(this)" onclick="storeCursor(this)"><?php echo "$sdesc";?></textarea>
<p></p>

<b>omschrijving:</b><br/>

<textarea id="pldesc" name="pldesc" rows="20" cols="80" onfocus="getTarget('pldesc')" onselect="storeCursor(this)" onkeyup="storeCursor(this)" onclick="storeCursor(this)"><?php echo "$ldesc";?></textarea>
<p></p>

<?php

if ($logo) {
	echo "<b>huidig logo</b><br />
	<img src=\"" . $uploadrel . $logo . "\" border=\"1\" />
	<p></p>";
}
?>
<b>logo uploaden</b><br /><div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; color: #666666;">alleen .gif, .jpg en .png toegelaten<br />
bestand mag niet groter zijn dan 300kb</div><br />

<input type="file" name="userfile" size="50" />
<p></p>

<input type="submit" name="submit" value="product bewerken!" />
</form>

mijn upload pagina
PHP:
<h3>product bewerkt</h3>
<?php
ob_start();
session_start();
if (isset($_SESSION['user_id']))
{ 

function slash($input) {
    if (get_magic_quotes_gpc()) {
        return $input;
    } else {
        return addslashes($input);
    }  
}

$max_size = 307200;
if (isset($_FILES['userfile'])) {

				$query = mysql_query("SELECT * FROM products WHERE pID='$pID'");
				while($row = mysql_fetch_array( $query ))	{
					if ($row["logo"]) {
						$delete = $row["logo"];
					}
				}
				unlink($uploadpath . $delete);

	if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
	
		if ($_FILES['userfile']['size']>$max_size) { 
			echo "het bestand is te groot<br>\n"; 
			exit; 
		}
		
			if (($_FILES['userfile']['type']=="image/gif") || ($_FILES['userfile']['type']=="image/pjpeg") || ($_FILES['userfile']['type']=="image/jpeg") || ($_FILES['userfile']['type']=="image/png")) {
	
				if ($_FILES['userfile']['type']=="image/gif") {
					$ext = "gif";
				}
				elseif ($_FILES['userfile']['type']=="image/pjpeg") {
					$ext = "jpg";
				}
				elseif ($_FILES['userfile']['type']=="image/jpeg") {
					$ext = "jpeg";
				}
				elseif ($_FILES['userfile']['type']=="image/png") {
					$ext = "png";
				}
				else {
					echo "verkeerd bestandstype<br>\n"; 
					exit;
				}
			
			$pname = slash($pname);
			$plogo = preg_replace("/[^a-zA-Z0-9s]/", "", $pname);
			$upload = $plogo . '-logo.' . $ext;
			$res = copy($_FILES['userfile']['tmp_name'], $uploadpath . $upload);
			if (!$res) { 
				echo "upload mislukt!<br>\n"; 
				exit; 
			} 
			else { 
				echo "upload gelukt<br>\n"; 
			}
		} 
		else { 
			echo "verkeerd bestandstype<br>\n"; 
			exit; 
		}
	}
}

$pname = slash($pname);
$psdesc = slash($psdesc);
$pldesc = slash($pldesc);
$upload = slash($upload);
mysql_query ("UPDATE products SET name='$pname', sdesc='$psdesc', ldesc='$pldesc', logo='$upload' WHERE pID='$pID'");
?> 

product <b><? echo "$pname";?></b> is bewerkt.<p></p>


<p>&nbsp;</p>


<?php
} else {
echo "Niet ingelogd
klik <a href=\"?q=login\"> om door te gaan</a>";
}
ob_end_flush();
?>

dit is ook ongeveer (mits het uit de database halen stuff) hetzelfde als mijn gewoon upload form bij products-add.php en deze werkt wel perfect... ik zie echt de fout ni...

ik heb al geprobeert om is een extra tekstveld toe te voege en die te late ophale in products-edit3.php en da werkt wel.

gelieve geen commentaar te geven op de rest van de code die mss crap lijkt, maar dit is pure test code.

frenzal

Legacy Member
heel vluchtig bekeken en misschien is probleem dat uw formtag niet zo is:
<forml ... method="post" enctype="multipart/form-data">

Sprits

Legacy Member
frenzal zei:
heel vluchtig bekeken en misschien is probleem dat uw formtag niet zo is:
<forml ... method="post" enctype="multipart/form-data">

vreed vriendelijk bedankt :D

in mijn products-add.php staat het er wel in en er gewoon los over gekeken...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan