• 18-08-2014, 14:46:57
    #1
    Bir form yaptım formu şu şekilde açıklayayım sizlere;

    bir checkbox (yanında açıklaması) ve bir input(text) olarak 2 seçenek var.

    Yapmak istediğim şey şu; checkbox'ı seçip inputa değer girildiğinde.
    sadece seçili inputun değerini okumasını istiyorum.

    Bende olan şey şu checkbox kısmında sıkıntı yok neyi işaretlersem onu alıyorum ama;

    Seçili olan checkbox'a girdiğim değeri alıyor seçmediğim checkboxlardaki değerleride boş olarak alıyor. Ben bu boş olanları istemiyorum. yardım edin lütfen.



    tablom şu şekilde:
    yemek_id | adet | ...


    Şimdi buradaki veriler while döngüsü ile geliyor yani inputlarımın name kısımları aynı. Ben burada 1 ve 2. seçenekleri işaretleyip yandaki adet kısmına keşkül için 1 kavun için 2 yazıp gönder butonuna bastığımda keşkül ve kavunu alıyor (burda sorun yok) ama adet kısımlarında 1,2 ve diğer iki adet kısmındaki alanlarıda boş olarak alıyor.

    tabloya listelerken ise şöyle oluyor:
    yemek_id | adet |
    72,73 1,2,,

    Buradaki 72 ile 73 keşkül ile kavunun idleri , adetteki yerde ise adetten gelen veriler.Boş verileride aldığı için 2 tane daha virgül koyuyor ben bu boş olan adet kısımlarını almasını istemiyorum.

    <?php 
    include "script/vt.php";
    if(isset($_POST["yemek_idcek"])){
        $box = $_POST["yemek_idcek"];
        foreach($box as $idler){
            $list = @$list.$idler.",";
            }
            $list = substr($list,0,-1);
            
        $boxa = $_POST["adet"];
        foreach($boxa as $adetler){
            $lista = @$lista.$adetler.",";
            }
            $lista = substr($lista,0,-1);
            $isim = mysql_real_escape_string(trim($_POST["isim"]));
            $adres = mysql_real_escape_string(trim($_POST["adres"]));
            $tel = mysql_real_escape_string(trim($_POST["tel"]));
            $message = mysql_real_escape_string(trim($_POST["mesaj"]));
            $siparisekle = mysql_query("INSERT INTO siparisler (yemek_id, adet, isim, adres, telefon, aciklama, tarih) VALUES ('$list', '$lista', '$isim', '$adres', '$tel', '$message', now())");
        
        }
        if($siparisekle){
            echo "<script>alert('Siparişiniz Başarıyla Gönderilmiştir')</script>";
            header("Refresh: 0;url=rezervation.php");
            exit();
            }else{
                echo "<script>alert('Hata! Sipariş Gönderilemedi.Lütfen Bizimle İletişime Geçin.')</script>";
                header("Refresh: 0;url=rezervation.php");
                exit();
                }
    ?>
  • 18-08-2014, 15:35:02
    #2
    Kvicken adlı üyeden alıntı: mesajı görüntüle
    Bir form yaptım formu şu şekilde açıklayayım sizlere;

    bir checkbox (yanında açıklaması) ve bir input(text) olarak 2 seçenek var.

    Yapmak istediğim şey şu; checkbox'ı seçip inputa değer girildiğinde.
    sadece seçili inputun değerini okumasını istiyorum.

    Bende olan şey şu checkbox kısmında sıkıntı yok neyi işaretlersem onu alıyorum ama;

    Seçili olan checkbox'a girdiğim değeri alıyor seçmediğim checkboxlardaki değerleride boş olarak alıyor. Ben bu boş olanları istemiyorum. yardım edin lütfen.



    tablom şu şekilde:
    yemek_id | adet | ...


    Şimdi buradaki veriler while döngüsü ile geliyor yani inputlarımın name kısımları aynı. Ben burada 1 ve 2. seçenekleri işaretleyip yandaki adet kısmına keşkül için 1 kavun için 2 yazıp gönder butonuna bastığımda keşkül ve kavunu alıyor (burda sorun yok) ama adet kısımlarında 1,2 ve diğer iki adet kısmındaki alanlarıda boş olarak alıyor.

    tabloya listelerken ise şöyle oluyor:
    yemek_id | adet |
    72,73 1,2,,

    Buradaki 72 ile 73 keşkül ile kavunun idleri , adetteki yerde ise adetten gelen veriler.Boş verileride aldığı için 2 tane daha virgül koyuyor ben bu boş olan adet kısımlarını almasını istemiyorum.

    <?php 
    include "script/vt.php";
    if(isset($_POST["yemek_idcek"])){
        $box = $_POST["yemek_idcek"];
        foreach($box as $idler){
            $list = @$list.$idler.",";
            }
            $list = substr($list,0,-1);
            
        $boxa = $_POST["adet"];
        foreach($boxa as $adetler){
            $lista = @$lista.$adetler.",";
            }
            $lista = substr($lista,0,-1);
            $isim = mysql_real_escape_string(trim($_POST["isim"]));
            $adres = mysql_real_escape_string(trim($_POST["adres"]));
            $tel = mysql_real_escape_string(trim($_POST["tel"]));
            $message = mysql_real_escape_string(trim($_POST["mesaj"]));
            $siparisekle = mysql_query("INSERT INTO siparisler (yemek_id, adet, isim, adres, telefon, aciklama, tarih) VALUES ('$list', '$lista', '$isim', '$adres', '$tel', '$message', now())");
        
        }
        if($siparisekle){
            echo "<script>alert('Siparişiniz Başarıyla Gönderilmiştir')</script>";
            header("Refresh: 0;url=rezervation.php");
            exit();
            }else{
                echo "<script>alert('Hata! Sipariş Gönderilemedi.Lütfen Bizimle İletişime Geçin.')</script>";
                header("Refresh: 0;url=rezervation.php");
                exit();
                }
    ?>
    $boxa = $_POST["adet"]; 
        foreach($boxa as $adetler){ 
            $lista = @$lista.$adetler.","; 
            }
    bu kısmı

    $boxa = $_POST["adet"]; 
        foreach($boxa as $adetler){
    if($adetler != '')
            $lista = @$lista.$adetler.","; 
            }
    bu şekilde değiştirirsen sorun olmaz. sadece dolu olan adetler gelir.
    $list = substr($list,0,-1); bunun yerinede $list = trim($list,','); kullanabilirsin.

    iyi çalışmalar
  • 18-08-2014, 16:31:44
    #3
    Hocam Bunu Form tarafınızda Yollama Yaparken Kontrol ederseniz daha sağlıklı olmaz mı ?

    // Aşşağıdaki Kod #liste Divindeki "li" elementi içindeki inputların tipi "checkbox" ve seçili olanlarını seçer..
    // Her seçilen "checked" (seçili) checkbox un id sini diziye atar..
    $("#liste").find("li input[type=checkbox]:checked").each(function(i){		  	 
    	  idler+=$(this).attr('id');
    	  });
    /*
    Kodlarınızı bilmediğim için adet kısmındaki verinin içeriğini size misal olarak şöyle gösterebilirim,
    checkboxların idleri  "kes" , "kav" (keşkül kavun) şeklinde varsayarsak karşısındaki adet değerini almak için adet inputunun id sini "kes_adet" , "kav_adet" şeklinde ayarlarsanız..
    
    Kodumuz Şu Şekilde güncellenecektir..
    */
    
    $("#liste").find("li input[type=checkbox]:checked").each(function(i){		  	 
       id=$(this).attr('id');	  
       adet_id=id+"_adet";
      if(adet_id!="")// keşkül seçilmiş ama adeti girilmemişte olabilir onuda engelledik
      {
       idler+=id+","; // Virgülleri php kısmında explode ile diziye çevireceksiniz ve son virgülü almaması için count -1 olarak döngüye alacaksınız adetin içeriği için       
       adetler=adetler+document.getElementById(adet_id).value+",";
     }
              
    });

    Yazım Hataları Olabilir Ama Javascript ve jquery ile kontrolü sağlarsanız sunucu tarafınıza daha az iş düşecektir...

    Kolaygelsin..
  • 18-08-2014, 22:53:55
    #4
    Sorunu çözdüm arkadaşlar, çok teşekkür ederim.