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))
Over het script Djemo: Dat heb ik niet zelf gemaakt hoor ;-). Dat heb ik gedownload, omdat ik zelf niet de kennis heb om het te bouwen.
En over de datum. Hoe zou ik dat anders kunnen doen? Want de gebruiker moet zelf een datum in kunnen voeren, want het gaat om een kalenderactiviteit, en dus geen timestamp ofzo.
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_FILES)) {
$locatie = "uploads/"; //of een andere map, vergeet niet de w-rechten
if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
$bestandsnaam = time() . "_" . $_FILES['afbeelding']['name'];
if ($_FILES['afbeelding']['size'] > 15000) { //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot.";
} elseif (!eregi("((.gif|.jpg|.png)$)", $_FILES['afbeelding']['name'])) { //kijk of de extensie aan de voorwaarde voldoet
echo "Het bestand is niet van het juiste type.";
} elseif (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $locatie . $bestandsnaam)) { // verplaats het bestand naar de server
echo "Het bestand kan niet worden verplaatst.";
} else {
$query = sprintf("INSERT INTO
kalender
(Afbeelding)
VALUES
('%s')", mysql_real_escape_string($bestandsnaam));
$result = mysql_query($query);
if ($result) {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is geupload.";
} else {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is niet geupload. Probeer het nogmaals.<br />";
echo "Error: ".mysql_error();
}
}
} else {
echo "Het uploaden is mislukt";
}
} else {
echo "U heeft niet alles ingevuld. Probeer het nogmaals.";
}
} 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
}
?>
'PHP code Beautifier' van phpDesigner 2008 doet wonderen :-)... Zo moet 'ie z'n werk doen ;-).
Alleen 1 laatste vraagje nog: In de code wordt nu aangegeven dat de afbeelding een maximale grootte kwa kb's mag hebben. Hoe kan ik aangeven dat hij ook maar een bepaald hoogte en breedte mag hebben?
Ik heb het volgende geprobeerd, alleen dat werkt niet:
if ($_FILES['afbeelding']['size'] > 15000 || ($_FILES['afbeelding']['width']> 200)) {
<?php
include('config.php');
$maxbreedte = 100; // maximum breedte
$maxhoogte = 100; // maximum hoogte
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_FILES)) {
$locatie = "uploads/"; //of een andere map, vergeet niet de w-rechten
$img = $_FILES['afbeelding']['name'];
$grotte = getimagesize($img);
$breedte = $groote[0];
$hoogte = $grootte[1];
if($breedte < $maxbreedte && $hoogte < $maxhoogte){
$size = $_FILES['afbeelding']['size'];
if($size < $maxsize){
if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
$bestandsnaam = time() . "_" . $_FILES['afbeelding']['name'];
if ($_FILES['afbeelding']['size'] > 15000) { //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot.";
} elseif (!eregi("((.gif|.jpg|.png)$)", $_FILES['afbeelding']['name'])) { //kijk of de extensie aan de voorwaarde voldoet
echo "Het bestand is niet van het juiste type.";
} elseif (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $locatie . $bestandsnaam)) { // verplaats het bestand naar de server
echo "Het bestand kan niet worden verplaatst.";
} else {
$query = sprintf("INSERT INTO
kalender
(ID, Titel, Datum_dag, Datum_maand, Datum_jaar, Omschrijving, Afbeelding)
VALUES
('', '$_POST[Titel]', '$_POST[Datum_dag]', '$_POST[Datum_maand]', '$_POST[Datum_jaar]', '$_POST[Omschrijving]', '%s')", mysql_real_escape_string($bestandsnaam));
$result = mysql_query($query);
if ($result) {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is geupload.";
} else {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is niet geupload. Probeer het nogmaals.<br />";
echo "Error: ".mysql_error();
}
}
} else {
echo "Het uploaden is mislukt";
}
} else {
echo "U heeft niet alles ingevuld. Probeer het nogmaals.";
}
} else {
?>
De variabelen heb ik aangepast. Was idd stom typfoutje van die "grootte" ;-).
Maxsize is nu ook gedefinieert en de ifjes zijn afgesloten. Alleen nu krijg ik een lege pagina na het uploaden.
<?php
include('config.php');
$maxbreedte = 100; // maximum breedte
$maxhoogte = 100; // maximum hoogte
$maxsize = 10000; // maximum grootte
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_FILES)) {
$locatie = "uploads/"; //of een andere map, vergeet niet de w-rechten
$img = $_FILES['afbeelding']['name'];
$grootte = getimagesize($img);
$breedte = $grootte[0];
$hoogte = $grootte[1];
if($breedte < $maxbreedte && $hoogte < $maxhoogte){
$size = $_FILES['afbeelding']['size'];
if($size < $maxsize){
if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
$bestandsnaam = time() . "_" . $_FILES['afbeelding']['name'];
if ($_FILES['afbeelding']['size'] > 15000) { //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot.";
} elseif (!eregi("((.gif|.jpg|.png)$)", $_FILES['afbeelding']['name'])) { //kijk of de extensie aan de voorwaarde voldoet
echo "Het bestand is niet van het juiste type.";
} elseif (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $locatie . $bestandsnaam)) { // verplaats het bestand naar de server
echo "Het bestand kan niet worden verplaatst.";
} else {
$query = sprintf("INSERT INTO
kalender
(ID, Titel, Datum_dag, Datum_maand, Datum_jaar, Omschrijving, Afbeelding)
VALUES
('', '$_POST[Titel]', '$_POST[Datum_dag]', '$_POST[Datum_maand]', '$_POST[Datum_jaar]', '$_POST[Omschrijving]', '%s')", mysql_real_escape_string($bestandsnaam));
$result = mysql_query($query);
if ($result) {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is geupload.";
} else {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is niet geupload. Probeer het nogmaals.<br />";
echo "Error: ".mysql_error();
}
}
}
}
} else {
echo "Het uploaden is mislukt";
}
} else {
echo "U heeft niet alles ingevuld. Probeer het nogmaals.";
}
} else {
?>
Volgens mij ligt het aan de afsluiting van de ifjes. Ik heb er al mee geexperimenteerd, maar steeds krijg ik een lege pagina...
if($datum != false) {
if($breedte <= $maxbreedte && $hoogte <= $maxhoogte){
if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
$bestandsnaam = time() . "_" . $_FILES['afbeelding']['name'];
if ($_FILES['afbeelding']['size'] > $maxsize) { //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot.";
} elseif (!eregi("((.gif|.jpg|.png)$)", $_FILES['afbeelding']['name'])) { //kijk of de extensie aan de voorwaarde voldoet
echo "Het bestand is niet van het juiste type.";
} elseif (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $locatie . $bestandsnaam)) { // verplaats het bestand naar de server
echo "Het bestand kan niet worden verplaatst.";
} else {
$query = sprintf("INSERT INTO
kalender
(Titel, Datum, Omschrijving, Afbeelding)
VALUES
('%s', '%s', '%s', '%s')",
$_POST['Titel'],
$datum,
$_POST['Omschrijving'],
mysql_real_escape_string($bestandsnaam));
$result = mysql_query($query);
if ($result) {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is geupload.";
} else {
echo "Uw bestand " . $_FILES['afbeelding']['name'] . " is niet geupload. Probeer het nogmaals.<br />";
echo "Error: ".mysql_error();
}
}
} else {
echo "Het uploaden is mislukt";
}
} else {
echo "Uw bestand is te breed of te hoog. De maximale afmetingen zijn: ".$maxbreedte."x".$maxhoogte." (breedte x hoogte).";
}
} else {
echo "Opgegeven datum is geen geldige datum. Probeer het nogmaals.";
}
} else {
echo "U heeft niet alles ingevuld. Probeer het nogmaals.";
}
} else {
?>
En nu niet klakkeloos overnemen, kijken wat ik heb veranderd en wat jij dus nog dient aan te passen ;-).
Ok thnx. Met de lege velden(controle) heb ik zelf ook al veel dingen geprobeerd. Ik had het namelijk eerst zo aangeroepen:
$error = '';
//Validate form
if(!$_POST['Titel']) {
$ok = false;
$error .= '- Vul een titel in<br />';
}
Maar dat werkte niet. Bedankt dus voor de toevoeging. ;-). Ik snap alleen de checkdate niet, want het zijn toch keuzemenu's(select)? Dus dan kan de datum toch nooit verkeerd zijn?
Ik heb de code helemaal doorgenomen(Datum aangepast, want die klopte niet helemaal), alleen ik zou zelf niet weten hoe ik de code af moet ronden zodat hij helemaal 100% werkt. Ik ben namelijk al een paar dagen met deze code bezig(eerste paar dagen zonder hulp), maar kom er niet uit. Ik knip en plak de code dus niet zomaar, maar neem het echt door en leer er van. Alleen op dit punt zit ik gewoon vast kwa kennis...