• 25-03-2008, 03:33:42
    #1
    Merhaba asagidaki gibi bir kod var elimde internette buldum. Bu sadece upload ediyor fakat benim bu resimlerin yollarini veritabanina kaydettirmem gerekiyor. Sadece resim yollarini kaydettirecegim.

    veritabanindaki resim alanlarim resim1, resim2, resim3 olarak ayarli burda upload ettigim bu resimlerin yollarini nasil veritabanina kaydedebilirim ?

    <form method="POST" enctype="multipart/form-data" action="">
      <p><br>
        Resim 1:
        <input type="file" name="resim1" size="50">
      </p>
      <p>Resim2:
        <input type="file" name="resim2" size="50">
      </p>
      <p>Resim3:
        <input type="file" name="resim3" size="50">
        <br>
        <input type="submit" name="gonder" value="resmi gonder">
          </p>
    </form>
    <?php
    if (isset($_POST['gonder']))
    {
    $i=1;
    while($i<=3)
    {
    $posted="resim".$i;
    $filename=$_FILES["$posted"]['name'];//resmin uzantısını alıyorum
    $efilename = explode('.', $filename);
    $uzanti = $efilename[count($efilename) - 1];
    
    $uzantilar=array('jpg','png','gif');//izin verdiğim uzantılar
    
    if(!in_array($uzanti,$uzantilar))//eğer uzantı geçersiz ise işlemi kesip hata uyarısı veriyorum
    {
    echo "Geçersiz Dosya Formatı Resim $i için.<br>";
    exit;
    }
    $isim=rand(0,9999);
    $yeniad = "".$isim.".".$uzanti."";
    
    if(move_uploaded_file($_FILES["$posted"]['tmp_name'],"upload/".$yeniad))
    {
    echo "Resim $i Gönderildi.<br>";
    }
    else
    {
    echo "Resim $i Taşınamadı.<br>";
    }
    $i++;
    }
    }
    ?>
  • 25-03-2008, 12:37:53
    #2
    if(move_uploaded_file($_FILES["$posted"]['tmp_name'],"upload/".$yeniad))
    {
    echo "Resim $i Gönderildi.<br>";
    }
    bu kısımı alttaki gibi deneyiniz.

    if(move_uploaded_file($_FILES["$posted"]['tmp_name'],"upload/".$yeniad))
    {
    echo "Resim $i Gönderildi.<br>";
    $yol = "upload/" . $yeniad;
    mysql_query("INSERT INTO tabloadi (resimyolu) VALUES ('$resimyolu')");
    }
  • 25-03-2008, 15:31:29
    #3
    Fakat benim 3 adet resmim var bir tane degil ve ayni anda 3 unude upload ettigimde veritabaninda 3 ayri alana kaydetmesi gerekiyor mesela resim1, resim2, resim3 alan adlari sanirim veritabanina kaydetmeden once butun upload edilen resimleri resim1, resim2, resim3 gibi degiskenlere atayip daha sonra veritabani kaydinda deger olarak yazmaliyim bu degiskenleri.

    Bunu yapamiyorum. Yani upload edilen resimleri degiskenlere atayamiyorum.
  • 25-03-2008, 16:44:32
    #4
    Zaten bir döngü içinde yaptığınız için resimleri yükleyip db ye ayrı ayrı yollarını kayıt edecektir.sonrada yine döngü içinde.

    Alıntı
    echo "Resim " . $i . "Linki:<br>http://www.ykdsoft.com/" . $yol . "<br>";
    yazarak 3 kayıtında linklerini ekrana basabilirsiniz.
  • 26-03-2008, 03:52:51
    #5
    Nasıl yazıcak halen anlamadım. resim1 resim2 resim 3 diye alan var bunların hangisine hangi resmi kaydedeceğini nasıl bilecek ? Asagidaki gibi degiskenlere atayim sonra veritabanina kaydettiremezmiyim ? Bu sekilde bir kod yapmak istersek olmazmi illaki while icindemi olmasi gerekiyor yada nedir bu isin mantigi tam olarak. Gercekten formdan gelen verileri nasil dogrudan hicbir deger tanitmadan direk olarak veritabanina kaydedecegiz anlayamadim. Burda soz konusu tek resim degil 3 adet farkli resim.

    if(move_uploaded_file($_FILES["$posted"]['tmp_name'],"upload/".$yeniad))
    { 
    $resimyolu1= .....;
    $resimyolu2= .....;
    $resimyolu3= .....;
    
    mysql_query("INSERT INTO tabloadi (resim1, resim2, resim3) VALUES ('$resimyolu1', '$resimyolu2', '$resimyolu3')"); 
    }
  • 26-03-2008, 15:51:31
    #6
    ister while ister for istersenizde tek tek 3 işlemide yaparak bunu yapabilirsiniz ama döngü kullanmak hem performans hemde kodların azalması bakımından daha iyi ve sağlıklıdır.
    orada zaten while döngüsünde döngü 3 kere dönüp resimleri kaydediyor benim yukarıda verdiğim örneklerde resimleri resim1 resim2 resim3 alanlarına değil bir resimlink alanına arka arkaya ekliyor yani 3 kayıt eklemiş oluyor.
     <form method="POST" enctype="multipart/form-data" action="">
      <p><br>
        Resim 1:
        <input type="file" name="resim1" size="50">
      </p>
      <p>Resim2:
        <input type="file" name="resim2" size="50">
      </p>
      <p>Resim3:
        <input type="file" name="resim3" size="50">
        <br>
        <input type="submit" name="gonder" value="resmi gonder">
          </p>
    </form>
    <?php
    if (isset($_POST['gonder']))
    {
    $i=1;
    while($i<=3)
    {
    $posted="resim".$i;
    $filename=$_FILES["$posted"]['name'];//resmin uzantısını alıyorum
    $efilename = explode('.', $filename);
    $uzanti = $efilename[count($efilename) - 1];
    $uzantilar=array('jpg','png','gif');//izin verdiğim uzantılar
    if(!in_array($uzanti,$uzantilar))//eğer uzantı geçersiz ise işlemi kesip hata uyarısı veriyorum
    {
    echo "Geçersiz Dosya Formatı Resim $i için.<br>";
    exit;
    }
    $isim=rand(0,9999);
    $yeniad = "".$isim.".".$uzanti."";
    if(move_uploaded_file($_FILES["$posted"]['tmp_name'],"upload/".$yeniad))
    {
    echo "Resim $i Gönderildi.<br>";
    $yol = "upload/" . $yeniad;
    mysql_query("INSERT INTO resimler (resimyolu) VALUES ('$resimyolu')");
    echo "Resim " . $i . "Linki:<br>http://www.ykdsoft.com/" . $yol . "<br>";
    }
    else
    {
    echo "Resim $i Taşınamadı.<br>";
    }
    $i++;
    }
    }
    ?>
    db de resimler diye tablo açın içinde 1 tane id alanı int , auto_increment, primary ve unique olsun.sonra resimyolu diye bir alan oluşturun oda text olsun.
    sonra yukarıdaki kodları bir deneyiniz.
  • 26-03-2008, 19:35:10
    #7
    Ben sanirim derdimi anlatamiyorum yada tam olarak yapmak istedigimi anlatamadim . Simdi kodlarimida altta vericem belki daha aciklayizi olur. Benim urun tablom var. Products adinda veritabani yapisi asagidaki gibi ;

    $products="CREATE TABLE products (
    productid int unsigned not null auto_increment primary key,
    productname varchar(255) NOT NULL,
    productdesc text NOT NULL,
    producthit int(11) NOT NULL,
    procatid int(11) NOT NULL,
    pro_author varchar(32) NOT NULL,
    add_date datetime NOT NULL,
    product_metakey text NOT NULL,
    product_metadesc text NOT NULL,
    productstatus enum('0','1') NOT NULL default '1',
    show_printp enum('0','1') NOT NULL default '1',
    show_sendp enum('0','1') NOT NULL default '1',
    product_img1 varchar(150) NOT NULL,
    product_img2 varchar(150) NOT NULL,
    product_img3 varchar(150) NOT NULL,
    product_img4 varchar(150) NOT NULL,
    product_img5 varchar(150) NOT NULL,
    product_img6 varchar(150) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
    Burada upload edecegim resimleri yani alti adet resmi asagidaki alanlara kaydedecegim. Yani ayri bir resimler tablom yok ve yaratmak istemiyorum resim yollari products tablosu icinde kayitli olsun urunlerin resimlerini yayinlarken iki farkli sorgu yapmak istemiyorum. Burdaki amacim urun girisi yapilirken urune ait resimlerde ayni anda ayni formda dosyaya yuklensin ve veritabanina da yolu kaydedilsin.

    product_img1, product_img2, product_img3, product_img4, product_img5, product_img6
  • 18-09-2021, 16:21:25
    #8
    Konuyu hortlatacağım sanırım, çözebildinizmi şuan banada lazımda sizin istediğiniz gibi bir durum