• 08-09-2015, 11:42:30
    #1
    Merhabalar,

    bir tablonun update yapılmasından sonra başka bir tabloya veri girişi yapmaya çalışıyorum. fakat veri girişi oluyor ama 10 satır atıyor hep. ben 2-3 satır veri giriyorum diğerlerini boş olarak atıyor. bu neden olabilir?

    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "kapatma")) {
    	
    	$new_date = date('Y-m-d',strtotime($_POST['tarih2']));
    	
      $updateSQL = sprintf("UPDATE makinabakim SET bitistar=%s, bitsaat=%s, ack2=%s, kapat=%s WHERE id=%s",
                           GetSQLValueString($new_date, "date"),
                           GetSQLValueString($_POST['bsaat'], "date"),
                           GetSQLValueString($_POST['ack2'], "text"),
                           GetSQLValueString(isset($_POST['kapat']) ? "true" : "", "defined","1","0"),
                           GetSQLValueString($_POST['tarih2'], "int"));
    					   
    $i = 0;
    foreach ($_POST as $val) {
        $mal = $_POST['m_kod'][$i];
        $miktar = $_POST['miktar'][$i];
     	$netfy = $_POST['nfy'][$i];
        $id2 = $_GET['id'];
       $guncelle=mysql_query("INSERT INTO makinabakimdetay (bakimid,malkodu,miktar,netfy) VALUES ('$id2','$mal', '$miktar','$netfy')");
    $i++;
    
    } 
    
    					   
      mysql_select_db($database_eymen_conn, $eymen_conn);
      $Result1 = mysql_query($updateSQL, $eymen_conn) or die(mysql_error());
  • 08-09-2015, 13:14:44
    #2
    Merhaba,
    foreach ($_POST as $val) { hemen bir satır üzerine print_r($_POST); yazarak gelen tüm postlara bakın fazlalıkların neden kaynaklandığını göreceksiniz.

    Eğer 2 insert varsa tüm post'ları döndürmek yerine ;
    insert into makinabakimdetay (bakimid,malkodu,miktar,netfy) VALUES (birinci post için dizilim),(ikinci post için dizilim);
    şeklinde tek bir insert oluşturabilirsiniz.

    Form yapınızı bilmiyorum 2 3 veri giriyorum demişsiniz. Boş olan form satırları varsa ve onları girmek istemiyorsanız da foreach'inizi şu şekilde düzenleyin.
    foreach ($_POST as $val) {
        $mal = $_POST['m_kod'][$i];
        $miktar = $_POST['miktar'][$i];
         $netfy = $_POST['nfy'][$i];
        $id2 = $_GET['id'];
    if($mal != "") {
       $guncelle=mysql_query("INSERT INTO makinabakimdetay (bakimid,malkodu,miktar,netfy) VALUES ('$id2','$mal', '$miktar','$netfy')");
    
    $i++;
    }
    
    }
    Böylelikle m_kod boşsa o satırı boşa insert etmez.
    iyi çalışmalar.
  • 08-09-2015, 13:43:19
    #3
    if($mal != "") {
    $guncelle=mysql_query("INSERT INTO makinabakimdetay (bakimid,malkodu,miktar,netfy) VALUES ('$id2','$mal', '$miktar','$netfy')");

    $i++;
    }
    hocam bu direk işimi gördü çok teşekkürler.
  • 08-09-2015, 14:47:35
    #4
    Konuyu okuyacak başka arkadaşların da yararlanması için yazıyorum;
    sebebini açıkçası bilemiyorum ancak arka arkaya insert komutlarını aynı sorguda yapamıyoruz. yalnızca ilki çalışıyor.
    bunu yapabilmek için bir şart ifadesi ya da başka bir döngü döndürmek gerekiyor.

    bu şekilde hata mesajını da yazdırabilirsiniz bu arada.
    $sql = "INSERT INTO makinabakimdetay (bakimid,malkodu,miktar,netfy) VALUES ('$id2','$mal', '$miktar','$netfy')";
    if (mysql_query($sql))
    {
        continue;
    }
    else
    {
        echo mysql_error().'<br />';
    }