PHP MySQL ile resim yüklemek, veritabanına eklemek ve bu resimleri görüntülemek için basit bir uygulama geliştireceğiz. Bu yazıda, PDO kullanarak PHP ile resim yükleme işlemi nasıl yapılır, adım adım açıklayacağız.
1. Veritabanı ve Tablo Oluşturma
Başlangıç olarak, PHP ve MySQL ile resim eklemek için veritabanı oluşturmanız gerekiyor. Bu işlem için phpMyAdmin
veya MySQL komut satırını kullanabilirsiniz.
Öncelikle, blog
adında bir veritabanı oluşturun. Ardından, tbl_resim
adlı bir tablo oluşturacağız. Bu tablo, resimlerin ve kullanıcı bilgilerini tutacaktır.
Aşağıdaki SQL sorgusunu kullanarak tabloyu oluşturabilirsiniz:
1 2 3 4 5 6 7 8 | CREATE TABLE `tbl_resim` ( `tbl_resim_id` INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, `ad` VARCHAR(100) NOT NULL, `soyad` VARCHAR(100) NOT NULL, `resim_konum` VARCHAR(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
Bu tabloda, tbl_resim_id
her kaydı benzersiz şekilde tanımlayan anahtar, ad
ve soyad
kullanıcı bilgileri, resim_konum
ise yüklenen resmin dosya yoludur.
2. HTML Formu
Resim yüklemek için basit bir HTML formu oluşturmanız gerekiyor. Kullanıcıdan ad, soyad ve resim seçmesini isteyen bir form hazırlanır. Aşağıda bu formu bulabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>TasarimKodlama.com</title> </head> <body> <form method="post" action="upload.php" enctype="multipart/form-data"> <table class="table1"> <tr> <td><label style="color:#3a87ad; font-size:18px;">İsim</label></td> <td width="30"></td> <td><input type="text" name="ad" placeholder="Adınız" required /></td> </tr> <tr> <td><label style="color:#3a87ad; font-size:18px;">Soyisim</label></td> <td width="30"></td> <td><input type="text" name="soyad" placeholder="Soyadınız" required /></td> </tr> <tr> <td><label style="color:#3a87ad; font-size:18px;">Resim Seçin</label></td> <td width="30"></td> <td><input type="file" name="resim"></td> </tr> </table> <button type="submit" name="Submit" >Yükle</button> </form> </body> </html> |
Bu form, upload.php
dosyasına veri gönderecek ve kullanıcıdan alınan resmin veritabanına kaydedilmesini sağlayacaktır.
3. Veritabanı Bağlantısı
Veritabanına bağlantı kurmak için aşağıdaki baglanti.php
dosyasını kullanabilirsiniz. Bu dosya, PDO ile MySQL veritabanına bağlanacaktır:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $sunucuadi = "localhost"; $kadi = "root"; //local kadi:root $sifre = "";//local şifre:"" $vtadi = "blog"; // bağlantı oluşturma try { $conn = new PDO("mysql:host=$sunucuadi;dbname=$vtadi", $kadi, $sifre); // Hata modunu etkinleştirme $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } ?> |
Bu bağlantı, veritabanına veri eklerken veya sorgu yaparken kullanılacaktır.
4. Resim Yükleme ve Veritabanına Ekleme
upload.php
dosyasını, formdan gönderilen verileri alıp, resim dosyasını sunucuya yüklemek ve veritabanına eklemek için şu şekilde oluşturabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php require_once ('baglanti.php'); if (isset($_POST['Submit'])) { move_uploaded_file($_FILES["resim"]["tmp_name"], "dosyalar/" . $_FILES["resim"]["name"]); $dosya = $_FILES["resim"]["name"]; $ad = $_POST['ad']; $soyad = $_POST['soyad']; $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO tbl_resim (ad, soyad, resim_konum) VALUES ('$ad', '$soyad', '$dosya')"; $conn->exec($sql); echo "<script>alert('Kayıt başarıyla yapıldı!!!');</script>"; } ?> |
Burada, formdan gönderilen resim dosyasını “dosyalar” klasörüne yükleyip, ardından ad, soyad ve resim yolunu veritabanına kaydediyoruz.
5. Verileri Görüntüleme
Yüklenen resimleri ve kullanıcı bilgilerini görüntülemek için aşağıdaki gibi bir listeleme sayfası oluşturabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Tasarım Kodlama</title> </head> <body> <table cellpadding="0" cellspacing="0" width="50%"> <thead> <tr> <th>Ad</th> <th>Soyad</th> <th>Resim</th> </tr> </thead> <tbody> <?php require_once('baglanti.php'); $result = $conn->prepare("SELECT * FROM tbl_resim ORDER BY tbl_resim_id ASC"); $result->execute(); for($i=0; $row = $result->fetch(); $i++){ $id = $row['tbl_resim_id']; ?> <tr> <td> <?php if($row['resim_konum'] != ""): ?> <img src="dosyalar/<?php echo $row['resim_konum']; ?>" width="100px" style="border:1px solid #333333;"> <?php else: ?> <img src="dosyalar/default.png" width="100px" height="100px" style="border:1px solid #333333;"> <?php endif; ?> </td> <td> <?php echo $row['ad']; ?></td> <td> <?php echo $row['soyad']; ?></td> </tr> <?php } ?> </tbody> </table> </body> </html> |
Bu sayfa, veritabanındaki tüm kayıtları ve yüklenen resimleri listeleyecektir.
Yorum Yap