Ik gebruik de volgende code om afbeeldingen te uploaden naar mijn server. Alleen nu is mijn vraag, hoe kan ik de link waar de afbeelding wordt geplaatst, in mijn database invoegen? Want ik wil de afbeeldingen graag gebruiken in nieuwsberichten, etc.
<?PHP
if(!empty($_POST)){
$locatie="uploads/"; //of een andere map, vergeet niet de w-rechten
if(is_uploaded_file($_FILES['afbeelding']['tmp_name']))
{
//controleer grootte
if($_FILES['afbeelding']['size']>15000)
{ //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot";
exit;
}
//controleer extensie, voeg maar andere toe
if(!eregi("((.gif|.jpg|.png)$)", $_FILES['afbeelding']['name']))
{
echo "het bestand is niet van het juiste type";
exit;
}
{
echo" het bestand kan niet worden verplaatst";
exit;
}
echo "Uw bestand ".$_FILES['afbeelding']['name']." is geupload";
}
else
{
echo "Het uploaden is mislukt";
}
}
else{
?>
Ik neem aan onder deze regel code, maar hoe?
$bestandsnaam = time()."_".$_FILES['afbeelding']['name'];
if(!move_uploaded_file($_FILES['afbeelding']['tmp_name'],
$locatie.$bestandsnaam))
@ Thom: Die $locatie zou ik niet invoegen. Gewoon alleen de bestandsnaam opslaan. Je kunt vanuit elk script een relatief pad opgeven om het kloppend te krijgen. Een pad uit een databasewaarde filteren is veel moeilijker.
Ik krijg dan de error: "het bestand kan niet worden geplaatst"...
Dit is de volledige code:
<?PHP
if(!empty($_POST)){
$locatie="uploads/"; //of een andere map, vergeet niet de w-rechten
if(is_uploaded_file($_FILES['afbeelding']['tmp_name']))
{
//controleer grootte
if($_FILES['afbeelding']['size']>15000)
{ //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot";
exit;
}
//controleer extensie, voeg maar andere toe
if(!eregi("((.gif|.jpg|.png)$)", $_FILES['afbeelding']['name']))
{
echo "het bestand is niet van het juiste type";
exit;
}
$bestandsnaam = time()."_".$_FILES['afbeelding']['name'];
if(!move_uploaded_file($_FILES['afbeelding']['tmp_name'],
$locatie.$bestandsnaam))
mysql_query("INSERT INTO kalender (Afbeelding) values ('".$bestandsnaam."')");
{
echo" het bestand kan niet worden verplaatst";
exit;
}
echo "Uw bestand ".$_FILES['afbeelding']['name']." is geupload";
}
else
{
echo "Het uploaden is mislukt";
}
}
else{
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<table border="0">
<tr><td><b>Afbeelding:</b></td>
<td>
<input type="file" name="afbeelding"></td></tr></table><br>
<input type="submit" name="submit" value="uploaden">
</form>
<?php
}
?>
Correctie: Hij wordt WEL in de map uploads geupload, dus op de server, maar NIET in de database...
CREATE TABLE `kalender` (
`ID` int(10) NOT NULL auto_increment,
`Titel` varchar(500) NOT NULL,
`Datum_dag` text NOT NULL,
`Datum_maand` text NOT NULL,
`Datum_jaar` text NOT NULL,
`Omschrijving` varchar(1000) NOT NULL,
`Afbeelding` varchar(50) default NULL,
PRIMARY KEY (`ID`)
}
Je checkt ook nergens of je query is uitgevoerd. Je echo't ook geen error of iets dergelijks, dus dan blijft er maar een oplossing over: gissen naar het antwoord.
Doe dus iets aan foutafhandeling, daar kunnen we meer mee ;-).
@Thom: ga heen met or die()! Dat hij al exit in z'n script gebruikt is nog ten daarentoe, maar ga hem dan niet nóg meer lelijke functies aanleren! Geef een goede foutafhandeling waarbij gewoon gewerkt wordt met echo en geen dodelijke functies als die() of exit().
<?php
$query = "SELECT * FROM tabel";
$result = mysql_query($query);
if($result) {
// query goed uitgevoerd
} else {
echo "Query niet goed uitgevoerd: ".$query."<br />";
echo mysql_error();
}
?>