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))
ik wist dat er iemand wat van zou zeggen..

Waarom post je het dan? Je geeft dus een stuk code, waarvan je weet dat het afgekeurd wordt. Dan ben je ook niet slim bezig...

Boris
`Datum_dag` text NOT NULL,
`Datum_maand` text NOT NULL,
`Datum_jaar` text NOT NULL,

Boris, leer SQL ;-)...
Hij geeft nog steeds dezelfde error.

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 ;-).
Hij werkt, geweldig. Echt super bedankt!

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]getimagesize[/php]() geloof ik.

Voorbeeld PHP.net:
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>
Ik heb nu het volgende geprobeerd mbv van de tutorial:
http://www.phphulp.nl/php/tutorials/4/175/326/


<?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 {
?>


Alleen het werkt nog niet...
Je definieert $maxsize nergens, daarnaast moeten de zelf erin gezette ifjes ook nog gesloten worden.

Edit: én je gebruikt 3x een verschillende variabele ($grotte, $groote, $grootte) waar je één en dezelfde moet gebruiken.
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...
<?php
include('config.php');

$maxbreedte = 100; // maximum breedte
$maxhoogte = 100; // maximum hoogte
$maxsize = 10000; // maximum grootte

if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_FILES)
&& !empty($_POST['Titel'])
&& !empty($_POST['Datum_dag'])
&& !empty($_POST['Datum_maand'])
&& !empty($_POST['Datum_jaar'])
&& !empty($_POST['Omschrijving'])) {
foreach($_POST as $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}

$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(checkdate($_POST['Datum_maand'], $_POST['Datum_dag'], $_POST['Datum_jaar'])) {
$datum = $_POST['Datum_jaar'].$_POST['Datum_maand'].$_POST['Datum_dag'];
} else {
$datum = false;
}

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...

Reageren