2016-04-07 6 views
0

Dinamik olarak başka bir form eklememize olanak tanıyan bir çözüm arayarak, "kaydet" i tıkladığınızda SQL'e tek tek gönderilecek ve burada bir satır olarak kaydedilecektir. enter image description hereBir sql tablosuna eklenebilir formları dinamik olarak ekleme

bunu 3 giriş alanları ile basit formudur görebileceğiniz gibi: Burada elde etmek çalışıyorum ne daha iyi bir açıklama için

bir resimdir. Şu anda, "Opslaan" (Kaydet) seçeneğini tıklarsanız, veri veritabanına gönderilir ve kaydedilir. İşte kod:

<form style="margin-bottom: 50px;" action="(linktothephpfilelistedbelow" method="POST" class="form-horizontal"> 
      <fieldset> 

      <!-- Form Name --> 
      <legend>Verkocht Product Toevoegen</legend> 

      <!-- Text input--> 
      <div class="form-group"> 
       <label class="col-md-4 control-label" for="klantnummer">Klant nummer</label> 
       <div class="col-md-4"> 
       <input id="textinput" name="klantnummer" type="text" placeholder="hier het klantnummer" class="form-control input-md" required=""> 

       </div> 
      </div> 

      <!-- Text input--> 
      <div class="form-group"> 
       <label class="col-md-4 control-label" for="kledingstuk-nummer">Kledingstuk nummer</label> 
       <div class="col-md-4"> 
       <input id="Kledingstuk-nummer" name="kledingstuk" type="text" placeholder="hier het nummer van het kledingstuk" class="form-control input-md" required=""> 

       </div> 
      </div> 

      <!-- Text input--> 
      <div class="form-group"> 
       <label class="col-md-4 control-label" for="prijs">Prijs kledingstuk</label> 
       <div class="col-md-4"> 
       <input id="Prijs" name="prijs" type="text" placeholder="hier de prijs van het kledingstuk" class="form-control input-md" required=""> 

       </div> 
      </div> 

      <!-- Button (Double) --> 
      <div class="form-group"> 
       <label class="col-md-4 control-label" for="extraproduct"></label> 
       <div class="col-md-8"> 
       <input id="extraproduct" type="submit" value="Opslaan" name="extraproduct" class="btn btn-success"></input> 
       <button id="button2id" name="extraproduct" class="btn btn-success">+</button> 
       </div> 
      </div> 

      </fieldset> 
      </form> 




<?php 
/* Attempt MySQL server connection. Assuming you are running MySQL 
server with default setting (user 'root' with no password) */ 
$link = mysql_connect("blankforreasons"); 

// Check connection 
if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 

// Escape user inputs for security 

$klant_nummer1 = $_POST['klantnummer']; 
$artikel_nummer1 = $_POST['kledingstuk']; 
$prijs1 = $_POST['prijs']; 

$klant_nummer = mysql_real_escape_string($klant_nummer1); 
$artikel_nummer = mysql_real_escape_string($artikel_nummer1); 
$prijs = mysql_real_escape_string($prijs1); 



// attempt insert query execution 
$sql = "INSERT INTO soldproducts (klantnummer, artikelnummer, prijs, tijd) VALUES ('$klant_nummer','$artikel_nummer', '$prijs', CURRENT_TIMESTAMP)"; 

mysql_select_db('blankforreasons'); 

$retval = mysql_query ($sql, $link); 

if(! $retval) { 
    die('Could not enter data: ' . mysql_error()); 
} 
echo "<h2>Producten succesvol toegevoegd</h2> 
    <a href='../producten'><button>klik hier om terug te gaan</button></a>"; 


// close connection 
mysql_close($link); 
?> 

ben eklemek çalışıyorum fonksiyonu "+" düğmesini tıklayın yeteneği 2. bir formu (ilki ile aynı) ekleyerek, daha sonra 3., 4., vb. Böylece istemcim veritabanına aynı anda birden çok öğe ekleyebilir.

DÜZENLEME: "Kaydet" tıklandığında

<script> 
     var i = 1; 
     $(document).ready(function(){ 
      $("#button2id").on('click', function() { 
       i++; 
       var data = "<legend>Product #"+i+"</legend><div class='form-group'><label class='col-md-4 control-label' for='klantnummer'>Klant nummer</label> <div class='col-md-4'><input id='textinput' name='klantnummer' type='text' placeholder='hier het klantnummer' class='form-control input-md' required=''></div></div><div class='form-group'><label class='col-md-4 control-label' for='kledingstuk-nummer'>Kledingstuk nummer</label> <div class='col-md-4'><input id='Kledingstuk-nummer' name='kledingstuk' type='text' placeholder='hier het nummer van het kledingstuk' class='form-control input-md' required=''></div></div><div class='form-group'><label class='col-md-4 control-label' for='prijs'>Prijs kledingstuk</label> <div class='col-md-4'><input id='Prijs' name='prijs' type='text' placeholder='hier de prijs van het kledingstuk' class='form-control input-md' required=''></div></div>"; 
       $(".form-horizontal fieldset .inputfields").append(data); 
      }); 
     }); 
    </script> 

Şimdi sadece yeni bir rekor olarak her fazladan eklenen formu kaydetme özelliği gerekir:

Hemen dinamik ekstra formları eklemek için kod tamamladı.

cevap

1

form ne zaman teslim edileceğini o zaman ben sadece Şimdi problemi

<script> 
var i = 0; 
    $('#btn2').on('click',function(){ 
      i =i+1; 
     var html = '"<div class="form-group"> 
       <label class="col-md-4 control-label" for="klantnummer">XYZ nummer</label> 
       <div class="col-md-4"> 
       <input id="textinput'+i+'" name="klantnummer[]" type="text" placeholder="hier het klantnummer" class="form-control input-md" required=""> 

       </div> 
      </div>"'; 
     $('#appendUp').insertBefore(html) // Add a empty div where you want to append your html. 

    }); 
    </script> 

izlemek için fikir vermek için çalışıyorum alernative bulabilirsiniz jquery kullanmak istemiyorsanız jQuery kullanıyorum Hey Form ile yeni alanlar gönderilecektir.

GÜNCELLEME bir isim girdi dizisi eklendi ve veritabanı sütun 'adı' tüm isimleri saklamak istediğiniz html

varsayalım.

Asistan yasadışı karakter girişi, vb ve son implode bir dize

<?php 
if(isset($_post('name'))) 
{ 
    $x = $post('name'); 
    $x = implode(',',$x); 
}else{ 
$x = null; 
} 

//Now Save $x in your datatable if any extra coloumn are added then they would be stored or null will be stored. 
?> 

GÜNCELLEME 2

HTML

<input name = "productitem[0]" id= "productitem0"/> // this is your base form 

için dizi kaçmak için tüm işlevini kullanabilirsiniz

ile yeni bir giriş alanı eklediğinizde Tamam 10
var html = '<input name = "productitem[]" id= "productitem'+i+'"/>'; 

şimdi bir dizi Sadece benzer bir şey yaptı

<?php 
//use Foreach loop 
$x =$_POST['productitem']; 
$y =$_POST['articles']; 
foreach($x as $key => $data){ 
    $sql = "INSERT INTO soldproducts (klantnummer, artikelnummer, prijs, tijd) VALUES ('$x[$key]','$y[$key]', '$prijs[$key]', CURRENT_TIMESTAMP)"; 

} 
?> 
+0

adı productitem ile size php sunucuya gönderilir adres, dinamik ekstra formları eklemek mümkün an olduğum, sadece bu formları eklemek işlevsellik eklemek gerekir kayıtlar gibi – Kairowa

+0

Tamam Ben şimdi temelde: productitem, artikel, prijs, productitem2, artikel2, prijs2, vb $ _post veri olarak, bunları ayrı kayıtlar olarak saklamak için nasıl giderim? – Kairowa

+0

Teşekkür ederiz! Bu, aslında, aradığım cevap oldu :) Şimdi düzgün çalışıyor. – Kairowa