Mysqli og Billede upload + database
Hej EksperterNu må jeg kaste håndklædet i ringen.
Jeg har forsøgt at få min kode til at afvise et billede hvis den har en med samme navn.
Men den vil simpelhen ikke.
Her er koden:
<?php
$tempfile = $_FILES['filnavn']['tmp_name'];
//$destination = "billederodder/{$_FILES['filnavn']['name']} ";
$destination = "../uploads/{$_FILES['filnavn']['name']}";
function Upload_billede($con, $tempfile){
/* Upload billede */
if ($stmt = $con->prepare('INSERT INTO `tbl_brugerbilleder` (`id`, `medlem`, `adgangskode`, `billedenavn`, `datetime`) VALUES (?, ?, ?, ?, ?)')) {
/* Bind parametre */
$stmt->bind_param('issss', $id, $medlem, $adgangskode, $billedenavn, $datetime);
/* Sæt værdier på parametrene */
$id = $_POST['id'];
$medlem = $_SESSION['brugernavn'];
$adgangskode = $_SESSION['adgangskode'];
$billedenavn = $_FILES['filnavn']['name'];
$datetime = date('Y-m-d H:i:s');
/* Eksekver forespørgslen */
$stmt->execute();
/* Luk statement */
$stmt->close();
} else {
/* Der er opstået en fejl */
echo 'Der opstod en fejl i erklæringen: ' . $con->error;
}
}
// Access the $_FILES global variable for this specific file being uploaded
// and create local PHP variables from the $_FILES array of information
$fileName = $_FILES["filnavn"]["name"]; // The file name
$fileTmpLoc = $_FILES["filnavn"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["filnavn"]["type"]; // The type of file it is
$fileSize = $_FILES["filnavn"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["filnavn"]["error"]; // 0 for false... and 1 for true
$kaboom = explode(".", $fileName); // Split file name into an array using the dot
$fileExt = end($kaboom); // Now target the last array element to get the file extension<?php
/* billede */
if ($stmt = $con->prepare('SELECT `id`, `billedenavn` FROM `tbl_brugerbilleder` WHERE billedenavn = ?' )) {
/* Bind parametre */
$stmt->bind_param('s', $B_billedenavn);
/* Sæt værdier på parametrene */
$B_billedenavn = $_FILES["filnavn"]["name"];
/* Eksekver forespørgslen */
$stmt->execute();
/* Bind resultatet */
$stmt->bind_result($B_id, $B_billedenavn);
}
while ($stmt->fetch()) {
;}
// START PHP Image Upload Error Handling --------------------------------------------------
if (!$fileTmpLoc) { // if file not chosen
echo "Tryk på Vælg fil for at uploade billede";
} else if($fileSize > 1242880) { // if file size is larger than 1 Megabytes
echo "Fejl må ikke være mere end 1 Megabytes";
unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
}
else if (!preg_match("/.(gif|jpg|png)$/i", $fileName) ) {
// This condition is only if you wish to allow uploading of specific file types
echo "Fejl må kun være .gif, .jpg, eller .png.";
unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
}
else if ($B_billedenavn == 0) { // Hvis billedenavn er der afvis billede
echo "Der er en fil der hedder det samme, vær venlig at omdøbe billedet";
}
else if ($fileErrorMsg == 1) { // if file upload error key is equal to 1
echo "Prøv igen";
exit();
} else
{
Upload_billede($con, $tempfile);
copy($tempfile, $destination);
echo "Billede er uploadet";}
?>
Alt andet virker den kommer fint ind på serveren i databasen.
På nær nu som det står, så bliver den ved med at skrive:
Der er en fil der hedder det samme, vær venlig at omdøbe billedet
Det er også fint men den skal kun sige det når der er et billede på databasen der hedder det samme.
Håber i forstår hvad jeg mener eller så sig endelig til.
Med venlig hilsen
Morten