Şimdi Ara

PHP Resim Upload ve Kayıt

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
5 Misafir (1 Mobil) - 4 Masaüstü1 Mobil
5 sn
6
Cevap
0
Favori
947
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Resim yukleme scripti yazdım. Hersey yolunda resim bilgilerini yazdırabiliyorum. Fakat bilgiler kaydolmuyor.

    Asagida form ve php sayfası kodlarını verdim. Zamani olan arkadaslarimiz, bir kontrol edebilir misiniz?

    div id="resim6">Fotograf</div></td> 
    <td><label>
    <input type="file" name="files[]" id="files[]" multiple="multiple" />





    <?php 
    include 'conn.php';
    if(isset($_FILES['files'])){ // dosya tanımlanmıs mı?
    $errors= array();
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
    $dosya_adi =$_FILES['files']['name'][$key]; // uzantiya beraber dosya adi
    $dosya_boyutu =$_FILES['files']['size'][$key]; // byte cinsinden dosya boyutu
    $dosya_gecici =$_FILES['files']['tmp_name'][$key]; //gecici dosya adresi
    $yenisim=md5(microtime()).'.'.'png'; //karmasik yeni isim.png
    if($dosya_boyutu > 20971520){
    $errors[]='Maksimum 20 Mb lık dosya yuklenebilir.';
    }
    $db="abc";
    mysql_select_db($db,$conn) or die("Veritabanina Baglanilamadi");
    $query="INSERT into upload_data ('FILE_NAME','FILE_SIZE') VALUES('$dosya_adi','$dosya_boyutu') "; //sorunvar.kayıtyok
    mysql_query("$query");

    $klasor="uploads"; // yuklenecek dosyalar icin yeni klasor
    if(empty($errors)==true){ //eger hata yoksa
    if(is_dir($klasor)==false){ // $klasor var mı?
    mkdir("$klasor", 0700); //klasor yoksa 0700 sayılı izinle olustur
    }
    if(is_dir("$klasor/".$yenisim)==false){ //olusturdugumuz isimde dosya var mı?
    move_uploaded_file($dosya_gecici,"$klasor/".$yenisim); //yoksa yeni ismiyle kaydet
    }else{ //eger varsa
    $new_dir="$klasor/".$yenisim.time(); //yeni ismin sonuna eklenme zamanını ekle
    rename($dosya_gecici,$new_dir) ;
    }
    }else{
    print_r($errors); //varsa hataları yazdır
    }
    }
    if(empty($error)){
    echo "Islem Basarili"; // isler yolunda gittiyse yazdır
    }
    }
    ?>

    <INPUT TYPE="button" VALUE="Onceki Sayfaya Don" onClick="history.back()">







  • Kodlar içine yazdığım yönlendirmeleri okumanı tavsiye ederim.


     

    <?php
    include 'conn.php';

    if(isset($_FILES['files'])){ // dosya tanımlanmıs mı?
    $errors= array();
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
    $dosya_adi =$_FILES['files']['name'][$key]; // uzantiya beraber dosya adi
    $dosya_boyutu =$_FILES['files']['size'][$key]; // byte cinsinden dosya boyutu
    $dosya_gecici =$_FILES['files']['tmp_name'][$key]; //gecici dosya adresi
    $yenisim=md5(microtime()).'.'.'png'; //karmasik yeni isim.png
    if($dosya_boyutu > 20971520){
    $errors[]='Maksimum 20 Mb lık dosya yuklenebilir.';
    }

    // Madem mysql_connect işlemini conn.php içinde yaptın "-" arasına aldığım kodları da oraya koy
    //--------------------------
    $db="abc";
    mysql_select_db($db,$conn) or die("Veritabanina Baglanilamadi");
    //--------------------------


    /* Öncelikle tablodaki sütünları tırkan içine almaman gerekir.
    "VALUES" dan sonra kullandığın değişkenleri aşağıda tanımladığım şekilde kullanman yararına olur.
    Ayarıca eğer yolladığın değişken integer ise ' tek tırnak kullanmaman gerekir.

    */
    /* Eski Hali
    $query="INSERT into upload_data ('FILE_NAME','FILE_SIZE') VALUES('$dosya_adi','$dosya_boyutu') ";
    */
    $query="INSERT into upload_data (FILE_NAME,FILE_SIZE) VALUES('".$dosya_adi."','".$dosya_boyutu."') ";

    /* Bir değişken asla "" içinde yazılmaz.
    Ayrıca mysql_query'i bir değişekene atman hata konusunda yardımcı olur.
    mysql_query("$query");

    Örneğin

    if($result) { } ifadesi eğer bilgiler veri tabanına doğru girildiyse { } tagları arasına
    aşağıdaki kopyalama işlemini yapar çünkü eğer yüklediğin verinin veri tabanına doğru eklenmemesi
    durumunda bile aşağıdaki resim dosyaya kopyalanacak.
    Kopyalama
    */
    $result = mysql_query($query);

    $klasor="uploads"; // yuklenecek dosyalar icin yeni klasor
    if(empty($errors)==true){ //eger hata yoksa
    if(is_dir($klasor)==false){ // $klasor var mı?
    mkdir("$klasor", 0700); //klasor yoksa 0700 sayılı izinle olustur
    }
    if(is_dir("$klasor/".$yenisim)==false){ //olusturdugumuz isimde dosya var mı?
    move_uploaded_file($dosya_gecici,"$klasor/".$yenisim); //yoksa yeni ismiyle kaydet
    }
    else
    { //eger varsa
    $new_dir="$klasor/".$yenisim.time(); //yeni ismin sonuna eklenme zamanını ekle
    rename($dosya_gecici,$new_dir) ;
    }
    }else{
    print_r($errors); //varsa hataları yazdır
    }
    }
    if(empty($error)){
    echo "Islem Basarili"; // isler yolunda gittiyse yazdır
    }
    }
    ?>

    <INPUT TYPE="button" VALUE="Onceki Sayfaya Don" onClick="history.back()">





  • Hataları bulduğun için teşekkür ederim arkadaşım.

    Yalnız bir önerine uymayacağım. O da veritabanı seçimini conn.php aktaramam.

    Çünkü foreach döngüsünden önce formdan gelen diğer verileri kaydetmek için, başka bir veritabanı daha seçmem gerekiyor.

    Bu konuda başka bir çözüm yolu var mıdır?
  • quote:

    Orijinalden alıntı: fefhit

    Hataları bulduğun için teşekkür ederim arkadaşım.

    Yalnız bir önerine uymayacağım. O da veritabanı seçimini conn.php aktaramam.

    Çünkü foreach döngüsünden önce formdan gelen diğer verileri kaydetmek için, başka bir veritabanı daha seçmem gerekiyor.

    Bu konuda başka bir çözüm yolu var mıdır?



    PHP.net'in kullanmanı tavsiye ettiği yöntemle kullanırsan onu da sağlayabilirsin aslında. Şuan kullandığın mysql komutları bütününe yakında desteği kaldırıyor php ve mysqli ye geçiyor. Eğer onları kullanırsan sorununa şu şekilde çözüm bulabilirsin.

     



    // A Database'ine bağlanılıyor
    $mysqli = new mysqli('localhost','root','','test');
    // B Database'ine bağlanılıyor
    $mysqli1 = new mysqli('localhost','root','','__gandalf');

    // A Database'ine Listeleme işlemi yaptırılıyor
    $result = $mysqli->query('SELECT * FROM tablo');
    // B Database'ine Listeleme işlemi yaptırılıyor
    $result1 = $mysqli1->query('SELECT * FROM _box');

    // A Database'ine deki veriler ekrana yansıtılıyor
    while($rows = $result->fetch_array(MYSQLI_ASSOC))
    {
    echo $rows['id']. ' ' . $rows['ad']. ' ' . $rows['soyad']."<br />";
    }
    // B Database'ine deki veriler ekrana yansıtılıyor
    while($rows = $result1->fetch_array(MYSQLI_ASSOC))
    {
    echo $rows['id']. ' ' . $rows['boxname']. ' ' . $rows['value']."<br />";
    }

    // A Database'inin bağlantısı kapatılıyor.
    $mysqli->close();
    // B Database'inin bağlantısı kapatılıyor.
    $mysqli1->close();





  • Bu harikaymış. Tekrar teşekkür ederim
  • 2 veri tabanı kullanman yanlış. tek tabanda iki hatta çok daha fazla tablo tutman daha mantıklıdır. burda genel bir hata var.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.