PHP PHP ile çoklu resim yükleme nasıl yapılır?

kesincx

Centipat
Katılım
12 Mayıs 2022
Mesajlar
22
Daha fazla  
Cinsiyet
Erkek
Merhaba, bir emlak sitesi yapmaktayım fakat çoklu resim konusuna hiç değinmemişim. İlan için çoklu fotoğraf yükleme nasıl yaparım? Halihazırda bir sistem yaptım fakat ilan ID = resimlerin ID olacak şekilde. Bilen yardımcı olabilir mi?

1690469552174.png
 
Konu biraz eskide kalmış, belki sorun çözülmüştür ama sonradan başkalarına da ihtiyaç olur diye konuyu boş bırakmamış olalım :)

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Videoda gösterdiğim şekilde işine yarıyorsa, kendine göre düzenleyip kullanabilirsin.
Proje klasöründe fotoğraflar "images" klasörüne kaydolacağı için projeyi yayınlayacağın yerde aynı isimde klasör açmalısın.

SQL Dosyası: cokluresim.sql

index.php
PHP:
<?php
include ("conn.php");
error_reporting(0);
?>
<!doctype html>
<html lang="tr">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet">
    <title>!</title>
  </head>
  <body>
    <div class="container">
        <div class="row">
            <div class="col-md-6 mx-auto py-5">
                <h3 class="text-center">İlan Ekle</h3>
                <form action="" method="POST" enctype="multipart/form-data">
                    <div class="form-group">
                        <label>İlan Başlığı</label>
                        <input type="text" class="form-control" name="baslik">
                    </div>
                    <div class="form-group">
                        <label>İlan Açıklaması</label>
                        <input type="text" class="form-control" name="aciklama">
                    </div>
                  <div class="form-group">
                    <label>İlan Fotoğrafları</label>
                        <input id="foto" type="file" class="form-control" name="foto[]" multiple required>
                  </div>
                  <div class="form-group mt-2">
                    <input type="submit" class="btn btn-primary" name="ilanekle" value="İlan Ekle"/>
                  </div>
                </form>

                <?php
                if(@$_POST['ilanekle']) {
                    $baslik = $_POST['baslik'];
                    $aciklama = $_POST['aciklama'];

                    if ($baslik<>"" && $aciklama<>"") {
                                $db->query("INSERT INTO ilanlar (baslik,aciklama) VALUES ('$baslik', '$aciklama')");
                                $son_id = $db->lastInsertId();

                                for($i=0; $i<count($_FILES["foto"]["name"]); $i++) {
                                   
                                    $dosyaYukle=$_FILES["foto"]["tmp_name"][$i];
                                    $foto=$_FILES["foto"]["name"][$i];
                                    $klasor="images/";
                                    move_uploaded_file($dosyaYukle,"$klasor".$_FILES["foto"]["name"][$i]);
                                    $db->query("INSERT INTO fotolar (ilan_id,foto) VALUES ('$son_id', '$foto')");

                                }

                                echo '<div class="alert alert-success" role="alert">Başarılı, ilan eklendi</div>';

                            } else {
                                echo '<div class="alert alert-danger" role="alert">Başarısız, lütfen tüm alanları doldurun</div>';
                               
                            }

                   
                }
                ?>
            </div>
            <div class="col-md-6 mx-auto py-5">
                <h3 class="text-center">İlanlar</h3>
           
                <?php

                     $k = $db->prepare("SELECT * FROM ilanlar");
                     $k->execute();
               
                     while ($cek = $k->fetch(PDO::FETCH_OBJ)) {?>
                <p class="text-center"><a href="detay.php?id=<?=$cek->id?>"> <?=$cek->baslik?> </a> -
                    <a class="text-danger" href="sil.php?id=<?=$cek->id?>"><i class="fas fa-trash"></i></a></p>
            <?php } ?>
            </div>
        </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
 
  </body>
</html>

detay.php
PHP:
<?php
include("conn.php");
$id = $_GET['id'];
$q = $db->prepare("SELECT * FROM ilanlar WHERE id = ?");
$q->bindParam(1, $id, PDO::PARAM_INT);
$q->execute();
$Ilan = $q->fetch(PDO::FETCH_OBJ);

$ilanid = $Ilan->id;

?>
<!doctype html>
<html lang="tr">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <title>!</title>
  </head>
  <body>
    <div class="container">
        <div class="row">
            <div class="col-md-6 mx-auto py-5">
                <h3 class="text-center">Başlık: <?=$Ilan->baslik?></h3>
           
                <p class="text-center">Açıklama: <?=$Ilan->aciklama?></p>
                <p class="text-center">Fotoğraflar</p>
                <?php

                     $k = $db->prepare("SELECT * FROM fotolar WHERE ilan_id = '$ilanid'");
                     $k->execute();
               
                     while ($cek = $k->fetch(PDO::FETCH_OBJ)) {?>
                <img src="images/<?=$cek->foto?>" height="100" width="133">
            <?php } ?>

                <div class="text-center mt-5"><a href="index.php" class="btn btn-warning">Anasayfa</a></div>
            </div>
        </div>
    </div>
   
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
 
  </body>
</html>

sil.php
PHP:
<?php
session_start();
include ("conn.php");
if($_GET['id']) {
    $id = $_GET['id'];
    $sorgu = $db->prepare("DELETE FROM ilanlar WHERE id = ?");
    $sorgu->bindParam(1, $id, PDO::PARAM_INT);
    $sorgu->execute();


    $k = $db->prepare("SELECT * FROM fotolar WHERE ilan_id = ?");
    $k->bindParam(1, $id, PDO::PARAM_INT);
    $k->execute();

    while ($cek = $k->fetch(PDO::FETCH_OBJ)) {
        unlink("images/".$cek->foto);
    }

    $srg = $db->prepare("DELETE FROM fotolar WHERE ilan_id = ?");
    $srg->bindParam(1, $id, PDO::PARAM_INT);
    $srg->execute();



    header("Location:index.php");
}


?>

conn.php
PHP:
<?php

$__DBHOST = "localhost";
$__DBUSER = "root";
$__DBPASS = "";
$__DBNAME = "cokluresim";

try {
    $db = new PDO("mysql:host=$__DBHOST;dbname=$__DBNAME;charset=utf8", $__DBUSER, $__DBPASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
catch(PDOException $e)
    {
    echo "Bağlantı hatası: " . $e->getMessage();
    exit;
    }
?>
 
Konu biraz eskide kalmış, belki sorun çözülmüştür ama sonradan başkalarına da ihtiyaç olur diye konuyu boş bırakmamış olalım :)

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Videoda gösterdiğim şekilde işine yarıyorsa, kendine göre düzenleyip kullanabilirsin.
Proje klasöründe fotoğraflar "images" klasörüne kaydolacağı için projeyi yayınlayacağın yerde aynı isimde klasör açmalısın.

SQL dosyası: cokluresim.sql

index.php
PHP:
<?php
include ("conn.php");
error_reporting(0);
?>
<!doctype html>
<html lang="tr">
 <head>
 <!-- Required meta tags -->
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet">
 <title>!</title>
 </head>
 <body>
 <div class="container">
 <div class="row">
 <div class="col-md-6 mx-auto py-5">
 <h3 class="text-center">İlan Ekle</h3>
 <form action="" method="POST" enctype="multipart/form-data">
 <div class="form-group">
 <label>İlan Başlığı</label>
 <input type="text" class="form-control" name="baslik">
 </div>
 <div class="form-group">
 <label>İlan Açıklaması</label>
 <input type="text" class="form-control" name="aciklama">
 </div>
 <div class="form-group">
 <label>İlan Fotoğrafları</label>
 <input id="foto" type="file" class="form-control" name="foto[]" multiple required>
 </div>
 <div class="form-group mt-2">
 <input type="submit" class="btn btn-primary" name="ilanekle" value="İlan Ekle"/>
 </div>
 </form>

 <?php
 if(@$_POST['ilanekle']) {
 $baslik = $_POST['baslik'];
 $aciklama = $_POST['aciklama'];

 if ($baslik<>"" && $aciklama<>"") {
 $db->query("INSERT INTO ilanlar (baslik,aciklama) VALUES ('$baslik', '$aciklama')");
 $son_id = $db->lastInsertId();

 for($i=0; $i<count($_FILES["foto"]["name"]); $i++) {

 $dosyaYukle=$_FILES["foto"]["tmp_name"][$i];
 $foto=$_FILES["foto"]["name"][$i];
 $klasor="images/";
 move_uploaded_file($dosyaYukle,"$klasor".$_FILES["foto"]["name"][$i]);
 $db->query("INSERT INTO fotolar (ilan_id,foto) VALUES ('$son_id', '$foto')");

 }

 echo '<div class="alert alert-success" role="alert">Başarılı, ilan eklendi</div>';

 } else {
 echo '<div class="alert alert-danger" role="alert">Başarısız, lütfen tüm alanları doldurun</div>';

 }

 }
 ?>
 </div>
 <div class="col-md-6 mx-auto py-5">
 <h3 class="text-center">İlanlar</h3>

 <?php

 $k = $db->prepare("SELECT * FROM ilanlar");
 $k->execute();

 while ($cek = $k->fetch(PDO::FETCH_OBJ)) {?>
 <p class="text-center"><a href="detay.php?id=<?=$cek->id?>"> <?=$cek->baslik?> </a> -
 <a class="text-danger" href="sil.php?id=<?=$cek->id?>"><i class="fas fa-trash"></i></a></p>
 <?php } ?>
 </div>
 </div>
 </div>
 <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
 <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

 </body>
</html>

detay.php
PHP:
<?php
include("conn.php");
$id = $_GET['id'];
$q = $db->prepare("SELECT * FROM ilanlar WHERE id = ?");
$q->bindParam(1, $id, PDO::PARAM_INT);
$q->execute();
$Ilan = $q->fetch(PDO::FETCH_OBJ);

$ilanid = $Ilan->id;

?>
<!doctype html>
<html lang="tr">
 <head>
 <!-- Required meta tags -->
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
 <title>!</title>
 </head>
 <body>
 <div class="container">
 <div class="row">
 <div class="col-md-6 mx-auto py-5">
 <h3 class="text-center">Başlık: <?=$Ilan->baslik?></h3>

 <p class="text-center">Açıklama: <?=$Ilan->aciklama?></p>
 <p class="text-center">Fotoğraflar</p>
 <?php

 $k = $db->prepare("SELECT * FROM fotolar WHERE ilan_id = '$ilanid'");
 $k->execute();

 while ($cek = $k->fetch(PDO::FETCH_OBJ)) {?>
 <img src="images/<?=$cek->foto?>" height="100" width="133">
 <?php } ?>

 <div class="text-center mt-5"><a href="index.php" class="btn btn-warning">Anasayfa</a></div>
 </div>
 </div>
 </div>

 <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

 </body>
</html>

sil.php
PHP:
<?php
session_start();
include ("conn.php");
if($_GET['id']) {
 $id = $_GET['id'];
 $sorgu = $db->prepare("DELETE FROM ilanlar WHERE id = ?");
 $sorgu->bindParam(1, $id, PDO::PARAM_INT);
 $sorgu->execute();

 $k = $db->prepare("SELECT * FROM fotolar WHERE ilan_id = ?");
 $k->bindParam(1, $id, PDO::PARAM_INT);
 $k->execute();

 while ($cek = $k->fetch(PDO::FETCH_OBJ)) {
 unlink("images/".$cek->foto);
 }

 $srg = $db->prepare("DELETE FROM fotolar WHERE ilan_id = ?");
 $srg->bindParam(1, $id, PDO::PARAM_INT);
 $srg->execute();

 header("Location:index.php");
}

?>

conn.php
PHP:
<?php

$__DBHOST = "localhost";
$__DBUSER = "root";
$__DBPASS = "";
$__DBNAME = "cokluresim";

try {
 $db = new PDO("mysql:host=$__DBHOST;dbname=$__DBNAME;charset=utf8", $__DBUSER, $__DBPASS);
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 }
catch(PDOException $e)
 {
 echo "Bağlantı hatası: " . $e->getMessage();
 exit;
 }
?>

Merak ediyordum öğrenmiş oldum teşekkürler.
 

Geri
Yukarı