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;
}

$bestandsnaam = time()."_".$_FILES['afbeelding']['name'];
if(!move_uploaded_file($_FILES['afbeelding']['tmp_name'],
$locatie.$bestandsnaam))

{
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))
mysql_query("INSERT INTO tabelnaam (naam,url) values ('".$locatie."','".$locatie.$bestandsnaam."')");


op regel 23 toevoegen
@ 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.
Ja je hebt helemaal gelijk..

dus dan wordt het

mysql_query("INSERT INTO tabelnaam (naam) values ('".$bestandsnaam."')");


Alleen de naam in de database zetten..
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...
zet je code tussen [ignore]
[/ignore], dan wordt je html ook in zo'n wit vakje gezet
Hoe ziet je database structuur eruit, waar je de naam van het bestand in wilt zetten?
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`)
}

Ik heb de query aangepast naar:

mysql_query("INSERT INTO kalender (ID, Titel, Datum_dag, Datum_maand, Datum_jaar, Omschrijving, Afbeelding) values ('', '', '', '', '', '', '".$bestandsnaam."')"); 


Maar ook dit werkt niet.
even over je db structuur, je gebruikt varchar(500) maar een varchar heeft een max lengte van 255

Link

en maak van
mysql_query("INSERT INTO tabelnaam (naam) values ('".$bestandsnaam."')");


eens

mysql_query("INSERT INTO tabelnaam (naam) values ('".$bestandsnaam."')") or die(mysql_error());


krijg je dan errors?
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();
}
?>
:P ik wist dat er iemand wat van zou zeggen.. Maar opzich je hebt gelijk.. Zal het volgende keer niet weer gebruiken ;)

Reageren