PDO ile resim ve video yükleme
header('Content-Type: application/json');
$dsn = "mysql:host=localhost;dbname=pukkymukky;charset=utf8mb4";
$user = "root";
$pass = "1256";
try {
$db = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
} catch (Exception $e) {
echo json_encode(['status'=>'error','message'=>'DB_CONNECTION_ERROR']);
exit;
}
function createFolder($path){
if(!is_dir($path)) mkdir($path, 0777, true);
}
// ALANLAR
$name = trim($_POST['name'] ?? '');
$breed = trim($_POST['breed'] ?? '');
$type = trim($_POST['type'] ?? '');
$age = trim($_POST['age'] ?? '');
$desc = trim($_POST['description'] ?? '');
$folder = $_POST['folder'] ?? '';
$care4 = isset($_POST['care4life']) ? 1 : 0;
// DOSYA VAR MI?
$hasFile = false;
if(isset($_FILES['media']) && !empty($_FILES['media']['name'][0])){
foreach($_FILES['media']['name'] as $i => $filename){
if($_FILES['media']['error'][$i] === 0 && !empty($filename)){
$hasFile = true;
break;
}
}
}
// GEREKLİ ALANLAR KONTROL
if(empty($name) || empty($folder) || !$hasFile){
echo json_encode(['status'=>'error','message'=>'Lütfen gerekli alanları doldurun (Ad, Kategori, Resim/Video)']);
exit;
}
// KLASÖR YOLU
$basePath = ($folder === "galeri") ? "images/galeri/" : "images/barinak/";
$basePath .= strtolower(str_replace(' ', '_', $name));
createFolder($basePath);
// KABUL EDİLEN UZANTILAR
$allowedImage = ['jpg','jpeg','png','gif','webp'];
$allowedVideo = ['mp4','webm','mov','avi','mkv'];
$uploadedFiles = [];
foreach($_FILES['media']['name'] as $i => $filename){
if($_FILES['media']['error'][$i] === 0 && !empty($filename)){
$tmp = $_FILES['media']['tmp_name'][$i];
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// Dosya tipi kontrol
if(!in_array($ext, array_merge($allowedImage, $allowedVideo))){
continue; // geçersiz uzantıyı atla
}
$newName = date('Ymd_His_') . rand(1000,9999) . '.' . $ext;
$dest = $basePath . '/' . $newName;
if(move_uploaded_file($tmp, $dest)){
$uploadedFiles[] = $newName;
}
}
}
if(empty($uploadedFiles)){
echo json_encode(['status'=>'error','message'=>'Geçerli bir resim veya video yüklemediniz.']);
exit;
}
// JSON ENCODE
$filesJson = json_encode($uploadedFiles, JSON_UNESCAPED_UNICODE);
// VERİTABANINA EKLE
$sql = "INSERT INTO kopekler (name, breed, type, age, description, folder, care4life, media) VALUES (?,?,?,?,?,?,?,?)";
$stmt = $db->prepare($sql);
try {
$stmt->execute([$name, $breed, $type, $age, $desc, $folder, $care4, $filesJson]);
echo json_encode(['status'=>'success','message'=>'İşlem tamamlandı']);
} catch (Exception $e) {
echo json_encode(['status'=>'error','message'=>'SQL Hatası: '.$e->getMessage()]);
}
Arkadaşlar böyle bir yapım var. Bir barınak sitesi için fotoğraf ve video yükleme scripti.
Ancak sorunum şu: Resim ve video aynı anda yüklenmiyor Hata veriyor. Tüm alanları doldurun diye.
Çözemedim, yardımcı olur musunuz ? Nerede hata yapıyorum.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!