• 08-09-2009, 00:02:51
    #1
    arkadaşlar insert into problemi yaşıyorum. admin panelden ürün ekle modulünden ürün ekle post dediğimde veriyi islem.php ye post ediyor ve ordan urun listele ye tekrar dönmesi gerekiyor.

    islem.php de ürün ekle ile ilgili bölüm
    if($islem == "urun_ekle" )
    {
           $urun_aciklama=addslashes($urun_aciklama);
            $array['urun_kodu']=$urun_kodu;
      $array['stok_durumu']=$stok_durumu;
            $array['kdvsiz_fiyat']=convertNumberForDB($kdvsiz_fiyat);
            $array['kdv']=$kdv;
            $array['kategori_id']=$kategori_id;
            $array['urun_aciklama']=$urun_aciklama;
      $array['urun_isim']=$urun_isim;
            $array['resim_isim']=$resim_isim;
            $array['secenek']=$secenek;
            $array['iskonto_altin']=$altin_uye_iskontosu;
            $array['iskonto_gumus']=$gumus_uye_iskontosu;
            $array['iskonto_bronz']=$bronz_uye_iskontosu;
            $array['prim_katki_orani']=$prim_katki_orani;
            $calistir=insertTable($array,"urun");
     if($calistir){$admin_page ="index.php?link=urun_listele";
     }
     else{echo $sorgu; exit;}
    burada instertTable function u library.php den çekiyor

    library.php de insertTable ile ilgili bölüm şöyle
    function insertTable($array, $tableName)
    {
        // foreach( $array as $k=> $v)   $array[$k]=addslashes($v);
        $keys="";       $vals="";       $c =false;
        foreach ($array as $key => $val ){
            if($val!=NULL && $val!=""){
                 if($c){ $keys.=","; $vals.=",";}
                 $keys.=" `$key`";
                 $vals.=" '$val'";
            }
            else{
                 if($c){ $keys.=","; $vals.=",";}
                 $keys.=" `$key`";
                 $vals.=" null";
            }
            if(!$c) $c=true;
        }
        $sorgu = " INSERT INTO `$tableName` ($keys) VALUES ($vals);";
        yaz($sorgu);
    
        $sonuc=mysql_query($sorgu);
        if($sonuc==NULL)//throw new MySQLException($sorgu);
       { echo $sorgu; exit;}
        return $sonuc;
    }
    fakat ürün ekleme yapmaya çalıştığımda bana şu şekilde bir sonuç veriyor
    INSERT INTO `urun` ( `urun_kodu`, `stok_durumu`, `kdvsiz_fiyat`, `kdv`, `kategori_id`, `urun_aciklama`, `urun_isim`, `resim_isim`, `secenek`, `iskonto_altin`, `iskonto_gumus`, `iskonto_bronz`, `prim_katki_orani`) VALUES ( null, 'Mevcut', null, null, '5', null, null, null, null, null, null, null, null);
    tablo oluşturmuyor ve bu şekilde bir sayfa ile karşı karşıya geliyorum. yardımcı olabilirmisiniz
  • 08-09-2009, 00:57:19
    #2
    O ekran şuradaki funksiyondan dolayı çıkabilir;

    Alıntı
    yaz($sorgu);
    Yani sorgu kodunu ekrana basıyor sadece, debug için, istiyorsan önüne çift slaş koy.

    Tablo oluşturmuyor derken galiba kayıt girmiyor demek istedin, eğer sorguda syntax hatası yoksa değerler boş olsa bile kayıt girilir, sorguda hata olup olmadığını anlamak için şu kısmı

    Alıntı
    $sonuc=mysql_query($sorgu);
    şununla değiştirip bi dene

    Alıntı
    $sonuc=mysql_query($sorgu) or die (mysql_error());
  • 08-09-2009, 01:04:14
    #3
    çok teşekkür ederim verdiğin bilgiler için

    dediğin değişikliği yaptım

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'Mevcut',,, '5',,,,,,,,)' at line 1
    şeklinde bir hata aldım.sanırım syntax sorunu var.ne yapmam gerekir
  • 08-09-2009, 01:17:39
    #4
    $sorgu = " INSERT INTO $tableName ($keys) VALUES ($vals)";

    Bunu denemek lazım.syntax sorunu vardı burda.Yine de çalışmazsa keys ve vals değerlerinde sorun vardır.
  • 08-09-2009, 01:25:12
    #5
    Şu kısmı

    Alıntı
    $sorgu = " INSERT INTO `$tableName` ($keys) VALUES ($vals);";
    şununla değiştirip denermisin

    Alıntı
    $sorgu = " INSERT INTO `$tableName` ($keys) VALUES ($vals)";
  • 08-09-2009, 01:31:33
    #6
    $sorgu = " INSERT INTO `$tableName` ($keys) VALUES ($vals)";
    şeklinde denedim fakat sorun aynen devam ediyor
  • 08-09-2009, 01:38:45
    #7
    Şu kodun hemen üstüne

    Alıntı
    $calistir=insertTable($array,"urun");
    Şunu koyarak bi denermisiniz,

    Alıntı
    addslashes($array);
    olmazsa, ayrıca bir üst mesajdaki satırı eski haline getirip yeniden deneyin.

    Muhtemelen girilen verilerden biri düzgün olan sorgunun sytax yapısını bozuyor gibi.
  • 08-09-2009, 01:43:23
    #8
    addslashes($array);
    kodu koyarak her iki türlüde denedim fakat sonuç değişmedi. sql ile ilgili bir sorun olabilirmi

    sql deki urun tablosunun içeriği şu şekilde

    `urun` (
      `urun_id` int(11) NOT NULL AUTO_INCREMENT,
      `urun_kodu` varchar(30) CHARACTER SET latin5 NOT NULL,
      `stok_durumu` enum('Mevcut','Mevcut degil') CHARACTER SET latin5 NOT NULL DEFAULT 'Mevcut',
      `kdvsiz_fiyat` double(16,2) NOT NULL DEFAULT '0.00',
      `kdv` int(2) NOT NULL DEFAULT '18',
      `kategori_id` int(11) NOT NULL,
      `urun_aciklama` blob,
      `aktif` int(1) DEFAULT NULL,
      `urun_isim` varchar(255) CHARACTER SET latin5 NOT NULL,
      `resim_isim` varchar(200) CHARACTER SET latin5 NOT NULL,
      `secenek` blob,
      `iskonto_altin` int(3) NOT NULL DEFAULT '45',
      `iskonto_gumus` int(3) NOT NULL DEFAULT '35',
      `iskonto_bronz` int(3) NOT NULL DEFAULT '25',
      `prim_katki_orani` int(3) NOT NULL DEFAULT '10',
      PRIMARY KEY (`urun_id`),
      KEY `urun_kodu` (`urun_kodu`),
      KEY `kategori_id` (`kategori_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=92 ;
  • 08-09-2009, 01:52:30
    #9
    $keys.=" `$key`"; içindeki tek tırnaklar fazlalık.Bu da hata verdirecektir.
    sorgu satırını da aşağıdaki gibi değiştirerek dener misin
    $sorgu = " INSERT INTO $tableName ($keys) VALUES ($vals)";