Şimdi Ara

PHP VERİTABANINA RESİM YOLU KAYDETME

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
13
Cevap
2
Favori
8.875
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar veritabanına makale ekleyeceğim..Fakat resim yolunu ekleyemiyorum bunu nasıl yapabilirm...

    SQL Dosyam :

    CREATE TABLE IF NOT EXISTS `makaleler` ( 
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `kategori_id` int(11) NOT NULL,
    `makale_adi` varchar(250) COLLATE utf8_turkish_ci NOT NULL,
    `makale_ozet` varchar(500) COLLATE utf8_turkish_ci NOT NULL,
    `makale_metni` longtext COLLATE utf8_turkish_ci NOT NULL,
    `resim_url` varchar(255) COLLATE utf8_turkish_ci NOT NULL,
    `etiket` varchar(250) COLLATE utf8_turkish_ci NOT NULL,
    `makale_onay` int(1) NOT NULL DEFAULT '0',
    `makale_okunma` int(11) NOT NULL,
    `tarih` date NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=3 ;


    Makale yi Yolladığım Form'um :

    <form action="islemler/ekle.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <table width="798" class="kayit-tablom">
    <tr valign="baseline">
    <td width="149" align="left" nowrap="nowrap">Makale Adı</td>
    <td width="10">:</td>
    <td width="623"><input type="text" name="makale_adi" value="" size="50" /></td>
    </tr>
    <tr valign="baseline">
    <td align="left" valign="top" nowrap="nowrap">Kategori</td>
    <td valign="top">:</td>
    <td><label for="kategori_id"></label>
    <select name="kategori_id" id="kategori_id">
    <option value="1">ActionScript</option>
    <option value="2">Ajax</option>
    <option value="3">Asp</option>
    <option value="4">Css/xHtml/W3C</option>
    <option value="5">JavaScript</option>
    <option value="6">Php</option>
    <option value="7">Seo</option>
    <option value="8">SQL/MySQL</option>
    <option value="9">vBulletin</option>
    <option value="10">WordPress</option>
    <option value="11">Yazılım</option>
    </select></td>
    </tr>
    <tr valign="baseline">
    <td align="left" valign="top" nowrap="nowrap">Makale Özeti</td>
    <td valign="top">:</td>
    <td><textarea name="makale_ozet" cols="50" rows="8"></textarea></td>
    </tr>
    <tr valign="baseline">
    <td align="left" valign="top" nowrap="nowrap">Makale Yazısı</td>
    <td valign="top">:</td>
    <td><textarea name="makale_metni" cols="50" rows="15"></textarea></td>
    </tr>
    <tr valign="baseline">
    <td height="25" align="left" nowrap="nowrap">Makale Onay</td>
    <td>:</td>
    <td><input name="makale_onay" type="checkbox" id="makale_onay" value="1" /></td>
    </tr>
    <tr valign="baseline">
    <td height="35" align="left" valign="middle" nowrap="nowrap">Etiketler</td>
    <td align="center" valign="middle">:</td>
    <td valign="middle"><label for="resim_url">
    <input name="etiket" type="text" id="etiket" size="50" />
    </label></td>
    </tr>
    <tr valign="baseline">
    <td nowrap="nowrap" align="left">Resim Ekle</td>
    <td>:</td>
    <td><label for="makale_onay">
    <input name="resim_url" type="file" id="resim_url" size="30" />
    </label></td>
    </tr>
    <tr valign="baseline">
    <td nowrap="nowrap" align="right"> </td>
    <td> </td>
    <td> </td>
    </tr>
    <tr valign="baseline">
    <td nowrap="nowrap" align="right"> </td>
    <td> </td>
    <td><input type="submit" value="Makale Ekle" /></td>
    </tr>
    </table>

    </form>


    Bu da ekle.php Dosyam :

    <?php  
    include("../../../includes/baglan.php");
    $kategori_id = $_POST["kategori_id"];
    $makale_adi = strip_tags ($_POST["makale_adi"]);
    $makale_ozet = strip_tags ($_POST["makale_ozet"]);
    $makale_metni = strip_tags ($_POST["makale_metni"]);
    $etiket = strip_tags ($_POST["etiket"]);
    $makale_onay = strip_tags ($_POST["makale_onay"]);
    $tarih = date("d-m-y");
    $resim_url = $_POST["resim_url"];


    $yenikayit = "INSERT INTO makaleler (kategori_id, makale_adi, makale_ozet, makale_metni, etiket, makale_onay, resim_url, tarih)values('".$kategori_id."', '".$makale_adi."', '".$makale_ozet."', '".$makale_metni."', '".$etiket."', '".$makale_onay."', '".$resim_url."', '$tarih')";
    $sorgu = mysql_query($yenikayit);
    $kayit = "Mesaj kaydedildi" ;
    echo $kayit;
    ?>


    Böyle yaptığımda normal olarak kayıt ekliyor. Fakat resim_url kısmını eklemiyor.. Yardımlarınızı bekliyorum..







  • PHP'de resim işlemleri biraz sıkıntılıdır. Yani direk yüklediğin dosyayı aynı şekilde kullanamazsın. Önce parçalayıp sonra taşıman gerek..
    Aşağıdaki betik işini görecektir.

    Ayrıca bu betik sayesinde mesela kalem.png varsa tekrar kalem.png yüklemek istersen farklı resimler olmasına rağmen üzerine yazmak yerine her resime o zamanın md5'ini alıp eklediği için bi' daha aynı isime denk gelme şansın olmaz, böylece isimlerle uğraşmak zorunda kalmazsın.


    $posted = "resim1";

    if ($_FILES["resim1"]['name']){
    $filename=$_FILES["$posted"]['name'];
    $efilename = explode('.', $filename);
    $uzanti = $efilename[count($efilename) - 1];
    $isim = md5(microtime());
    $yeniad = "".$isim.".".$uzanti."";
    $hedef1 = "resimler/".$yeniad;
    move_uploaded_file($_FILES["$posted"]['tmp_name'],"resimler/".$yeniad);

    }

    veritabanına eklerken de $hedef1 'i ekletir, daha sonra çekerken <img src="<?php echo $veritabanındançekilenresimsatırı; ?>"> şeklinde çekersin.




  • mrtAkdeniz resim işlemlerinde hiç bir sıkıntı yok, he derseniz gd kütüphanesi ile resim işleme işlemleri sıkıntılı :) o zaman belki anlayabilirim,PHP öğrenmeye çalışanları soğutacak sözlerden sakınalım lütfen.

    Ufak bir örnek hazırladım az önce,
    index.php
     
    <form action="upload.php" method="post">
    <table style="border:1px black solid;">
    <tr>
    <td>Urun Adı</td>
    <td style="width:5px;">:</td>
    <td><input type="text" name="urunad"/></td>
    </tr>
    <tr>
    <td>Dosya Seçin</td>
    <td style="width:5px;">:</td>
    <td><input type="file" name="dosya" /></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td><input type="button" value="Yükle" /></td>
    </tr>
    </table>
    </form>


    upload.php
     
    <?php
    include 'baglan.php';
    include 'function.php';
    $urunadi = XssClean($_POST['urunadi']);
    $resimadi = isimdegistir($_FILES['dosya']['name'], $urunadi);

    yukle('dosya', 'images', $urunadi);
    $ekle = mysql_query("INSERT INTO tablo(urunadi,dosyaismi)values('{$urunadi}','{$resimadi}')");
    if( $ekle ){
    yonlen('Başarıyla Eklendi.','index.php');
    }else{
    yonlen('Eklenemedi.','index.php');
    }
    ?>


    goruntule.php
     
    <?php
    include 'baglan.php';
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body>
    <table>
    <tr>
    <td>Ürün Adı</td>
    <td>Resim</td>
    </tr>
    <?php
    $cek = mysql_query("select * from tablo");
    while($yaz = mysql_fetch_assoc($cek)){
    ?>
    <tr>
    <td><?php echo $yaz['urunadi']; ?></td>
    <td><img src="images/<?php echo $yaz['dosyaismi']; ?>" /></td>
    </tr>
    <?php
    }
    ?>
    </table>
    <?php
    // put your code here
    ?>
    </body>
    </html>


    function.php

     
    <?php
    function XssClean( $value ){
    return preg_replace('/[^a-zA-Z0-9IĞÜŞİÖÇığüşiöç]/i', '', $value);
    }
    function seo($str){
    $str=str_replace("Ş","S",$str);
    $str=str_replace("ş","s",$str);
    $str=str_replace("Ç","C",$str);
    $str=str_replace("ç","c",$str);
    $str=str_replace("Ö","O",$str);
    $str=str_replace("ö","o",$str);
    $str=str_replace("Ğ","G",$str);
    $str=str_replace("ğ","g",$str);
    $str=str_replace("Ü","U",$str);
    $str=str_replace("ü","u",$str);
    $str=str_replace("ı","i",$str);
    $str=str_replace("İ","i",$str);
    $str=str_replace("I","i",$str);
    $str=str_replace("?","-",$str);
    $str=str_replace("'","-",$str);
    $str=str_replace(" ","-",trim($str));
    $str=preg_replace('/([-]+)/','-',$str);
    $str=strtolower($str);
    return $str;
    }
    function isimdegistir($veri,$urunismi){
    $c=end(explode('.',$veri));// Dosya Uzantısı
    $b=seo($urunismi);
    $yad=$b.".".$c;
    return $yad;
    }
    function yukle($value,$hedef,$urunad){
    $dosyakaynagi=$_FILES[$value]["tmp_name"];
    $dosyaismi=isimdegistir($_FILES[$value]["name"],$urunad);
    $dosyatype=$_FILES[$value]["type"];
    $dosyaboyut=$_FILES[$value]["size"];
    $dosyahedef=$hedef;
    $dosyayukle=move_uploaded_file($dosyakaynagi,$dosyahedef.'/'.$dosyaismi);
    }
    function yonlen($mesaj,$link){
    ?>
    <script type="text/javascript">
    <?php if($mesaj != "") { ?>alert(<?php echo $mesaj; ?>); <?php } ?>
    <?php if($link != "") { ?>window.location="<?php echo $link; ?>" <?php } ?>
    </script>
    <?
    }
    ?


    baglan.php

     
    <?php
    mysql_connect('localhost','root','');
    mysql_select_db('upload');
    mysql_query('SET NAMES UTF8');

    ?>


    NOT: veritabanını oluşturmadım sql sorguları kaale almayınız.




  • @KemalBALABAN amacım muhalefet olmak değil de gördüğün gibi yine fonksiyonda parçalayıp taşıma işlemleri yaptın, yani insan ilk mantıkta direk bu upload edilen veriyi kullanabileceğini düşünüyor, bende başlarken öyle başlamıştım, o yüzden mevzuya öyle girdim :D

    Ayrıca isim temizlemektense md5'le random değer atamak daha kolay, aynı dosya isminde sıkıntı çekmezsiniz.
  • Yok yok est. beni yanlış anlama :) ürtükmemek lazım :d türkiye de php yazılımcıya şı sıralar bir hayli ihtiyaç var o anlamda söyledim :)
  • Ayrıca siz saydığım değer verdiğim yazılımcı üstatlarımızdansınız, blogunuzu her fırsatta takip ediyorum, siz de beni yanlış anlamayın lütfen.
  • Tüm yorumları okuyamadım, ancak resimleri veritabanında tutmak sağlıklı olmaz. Resimleri bir klasöre upload edip resim yolunu veritabanında tutun.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • @Aristona_ üşengeçliğine kurban :D Resmi veritabanında tutturmadık zaten veritabanı yolunu tutturduk :D Kaldı ki adam 5 MB'lık bi resim upload etti, hatta arşiv yapıyo ve bundan 100 tane yükledi. 500 MB + standart veritabanı dosyalarından oluşan yaklaşık 510 MB'lık veritabanında işlem yapmanın standart yollarla akıl işi olmadığının farkında olan insanlardır bence buradaki yardım eden kişiler.

    Kaldı ki ceviz'de de yazar olduğunuzu biliyorum, böyle bi üşengeçlik ve böyle bi' şey yapacağımızı düşünmeniz ilginç.
  • Kardeşim konu başlığını okursan sevinirim..




    Kemal hocam teşekkür ederim. Şimdi deneyeceğim..
    quote:

    mrtAkdeniz resim işlemlerinde hiç bir sıkıntı yok, he derseniz gd kütüphanesi ile resim işleme işlemleri sıkıntılı :) o zaman belki anlayabilirim,PHP öğrenmeye çalışanları soğutacak sözlerden sakınalım lütfen.

    Ufak bir örnek hazırladım az önce,
    index.php
    <form action="upload.php" method="post"> 
    <table style="border:1px black solid;">
    <tr>
    <td>Urun Adı</td>
    <td style="width:5px;">:</td>
    <td><input type="text" name="urunad"/></td>
    </tr>
    <tr>
    <td>Dosya Seçin</td>
    <td style="width:5px;">:</td>
    <td><input type="file" name="dosya" /></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td><input type="button" value="Yükle" /></td>
    </tr>
    </table>
    </form>




    upload.php
    <?php 
    include 'baglan.php';
    include 'function.php';
    $urunadi = XssClean($_POST['urunadi']);
    $resimadi = isimdegistir($_FILES['dosya']['name'], $urunadi);

    yukle('dosya', 'images', $urunadi);
    $ekle = mysql_query("INSERT INTO tablo(urunadi,dosyaismi)values('{$urunadi}','{$resimadi}')");
    if( $ekle ){
    yonlen('Başarıyla Eklendi.','index.php');
    }else{
    yonlen('Eklenemedi.','index.php');
    }
    ?>




    goruntule.php
    <?php 
    include 'baglan.php';
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body>
    <table>
    <tr>
    <td>Ürün Adı</td>
    <td>Resim</td>
    </tr>
    <?php
    $cek = mysql_query("select * from tablo");
    while($yaz = mysql_fetch_assoc($cek)){
    ?>
    <tr>
    <td><?php echo $yaz['urunadi']; ?></td>
    <td><img src="images/<?php echo $yaz['dosyaismi']; ?>" /></td>
    </tr>
    <?php
    }
    ?>
    </table>
    <?php
    // put your code here
    ?>
    </body>
    </html>




    function.php

    <?php 
    function XssClean( $value ){
    return preg_replace('/[^a-zA-Z0-9IĞÜŞİÖÇığüşiöç]/i', '', $value);
    }
    function seo($str){
    $str=str_replace("Ş","S",$str);
    $str=str_replace("ş","s",$str);
    $str=str_replace("Ç","C",$str);
    $str=str_replace("ç","c",$str);
    $str=str_replace("Ö","O",$str);
    $str=str_replace("ö","o",$str);
    $str=str_replace("Ğ","G",$str);
    $str=str_replace("ğ","g",$str);
    $str=str_replace("Ü","U",$str);
    $str=str_replace("ü","u",$str);
    $str=str_replace("ı","i",$str);
    $str=str_replace("İ","i",$str);
    $str=str_replace("I","i",$str);
    $str=str_replace("?","-",$str);
    $str=str_replace("'","-",$str);
    $str=str_replace(" ","-",trim($str));
    $str=preg_replace('/([-]+)/','-',$str);
    $str=strtolower($str);
    return $str;
    }
    function isimdegistir($veri,$urunismi){
    $c=end(explode('.',$veri));// Dosya Uzantısı
    $b=seo($urunismi);
    $yad=$b.".".$c;
    return $yad;
    }
    function yukle($value,$hedef,$urunad){
    $dosyakaynagi=$_FILES[$value]["tmp_name"];
    $dosyaismi=isimdegistir($_FILES[$value]["name"],$urunad);
    $dosyatype=$_FILES[$value]["type"];
    $dosyaboyut=$_FILES[$value]["size"];
    $dosyahedef=$hedef;
    $dosyayukle=move_uploaded_file($dosyakaynagi,$dosyahedef.'/'.$dosyaismi);
    }
    function yonlen($mesaj,$link){
    ?>
    <script type="text/javascript">
    <?php if($mesaj != "") { ?>alert(<?php echo $mesaj; ?>); <?php } ?>
    <?php if($link != "") { ?>window.location="<?php echo $link; ?>" <?php } ?>
    </script>
    <?
    }
    ?




    baglan.php  

    <?php
    mysql_connect('localhost','root','');
    mysql_select_db('upload');
    mysql_query('SET NAMES UTF8');

    ?>



    NOT: veritabanını oluşturmadım sql sorguları kaale almayınız.

    Yorum atanlara teşekkürler..




  • ekle.php yi aşağıdaki gibi düzenlersen çalışacaktır.
     
    <?php
    include("../../../includes/baglan.php"); # DÜZENLE
    include("function.php"); # aynı dizine ekle
    $kategori_id = $_POST["kategori_id"];
    $makale_adi = strip_tags ($_POST["makale_adi"]);
    $makale_ozet = strip_tags ($_POST["makale_ozet"]);
    $makale_metni = strip_tags ($_POST["makale_metni"]);
    $etiket = strip_tags ($_POST["etiket"]);
    $makale_onay = strip_tags ($_POST["makale_onay"]);
    $tarih = date("d-m-y");
    $resim_url = isimdegistir($_FILES['resim_url']['name'], $makale_adi); # DÜZENLE
    yukle('resim_url', '../../../images', $makale_adi); # DÜZENLE

    $yenikayit = "INSERT INTO makaleler (kategori_id, makale_adi, makale_ozet, makale_metni, etiket, makale_onay, resim_url, tarih)values('".$kategori_id."', '".$makale_adi."', '".$makale_ozet."', '".$makale_metni."', '".$etiket."', '".$makale_onay."', '".$resim_url."', '$tarih')";
    $sorgu = mysql_query($yenikayit);
    if($sorgu){
    yonlen('Başarıyla Eklendi', 'index.php');
    }else{
    yonlen('Eklenemedi','index.php');
    }
    ?>




  • Allah razı olsun hocam :)
  • bence resim yolunu eklemeden ziyade, resimlerin hepsinin içerisinde bulunduğu örnek:images klasörünün yolunu direk kodun içine yaz. yani mesela haber 1 için resmin adı hbr1.jpg ve images klaösürün içerisinde. sen veritabanına sadece haber1 i kaydet yani resmin adını daha sonra çekerkende

    veri tabanından img alanındaki resim dını çek, örnek:hbr1.jpg

    src="http://www.siten.com/images/".$veri_tabanindan_cektigin_resim_adi.".jpg."" gibi.

    eğer resimlerin yollarını tamamen veritabanına kaydedersen bunun bir açık olacağı kannatindeyim. şimdi diyeceksiniz ki kodun içerisine path yazdığında açık olmazmı ? bence olmaz. çünkü yazılan pathle alakalı bir sıkıntı kolayca aşılabilir. ama veritabanına girebilen bir sıkıntı tehlikelidir.

    benim sana kişisel tavsiyem. veritabanına path kaydetme. iyi çalışmalar.
  • Kardeşim yorumun için sağol.. Fakat sorun çözüldü..

    Senin .htaccess ile dizinlemeyi kapatırım. Güvenlik açığı olur mu sanmıyorumm..
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.