2012-12-20 69 views
1

這是我的代碼,當我點擊添加按鈕新的文本字段即將到來,但整個頁面正在刷新和現有數據也刷新,請幫助我。如何使用PHP動態添加或刪除文本框?

<?php  
    if(!isset($_POST['j'])) { 
     static $j = 1; 
    } else { 
     //j is a reference for $i in the loop. $i will loop while it is less than $j. 
     if(isset($_POST['plus'])) { 
      $j = $_POST['j']+1; //by incrementing $j, $i will loop one more time. 
     } 
     if(isset($_POST['minus'])) { 
      if(@$j < 1) { //if there is only one box the user can't remove it 
       $j = $_POST['j']-1; 
      } 
     } 
    } 
?> 
<?php echo '<input type="hidden" name="j" value="' . @$j . '"/>' ?> 
<?php for($i = 0; $i < @$j; $i++) { ?> 
    <input id="txt_id" name="txt_id[]" type="text" value="" readonly="readonly"/> 
<? } ?> 
<input type ="submit" value="+" name="plus"> 
<input type ="submit" value="-" name="minus"> 
+0

設置會話附加$ J值,並嘗試it.or別人使用jQuery添加動態排它非常容易。 – Kathiravan

+0

如果您想避免頁面刷新,您可以嘗試ajax並添加文本框字段 –

+0

避免使用錯誤抑制'@'。只需檢查'$ j'是否使用[PHP isset()](http://php.net/manual/en/function.isset.php)設置 – PhearOfRayne

回答

2

那是因爲您需要設置生成的文本字段的值。

嘗試用這種替代你的for循環:

<?php for($i = 0; $i < @$j; $i++) { ?> 
     <input id="txt_id" name="txt_id[]" type="text" value="<?php echo $_POST['txt_id'][$i];?>" readonly="readonly" /> 
<? } ?> 
+0

我嘗試了你的代碼,但它不工作,請嘗試給更好的解決方案 –

+0

感謝您的幫助,您的工作已得到滿足,但我提前得到了Thanx給出的錯誤(
注意:未定義索引:txt_id在E:\ xampp \ htdocs \ Doctors \ example2.php line
) –

1

我已經發布了它的服務器上執行的代碼。所以在本地服務器上試過這段代碼。它會工作並幫助您找出解決方案。

<html> 

    <head> 
     <title> Add/Remove dynamic rows in HTML table </title> 
     <script language="javascript"> 

      function addRow(tableID) { 
       var numb = document.getElementById("numb").value; 
       for($i=1;$i<=numb;$i++) { 
        var table = document.getElementById(tableID); 

        var rowCount = table.rows.length; 
        var row = table.insertRow(rowCount); 

        var cell1 = row.insertCell(0); 
        var element1 = document.createElement("input"); 
        element1.type = "checkbox"; 
        cell1.appendChild(element1)[$i]; 

        var cell2 = row.insertCell(1); 
        cell2.innerHTML = rowCount + 1; 

        var cell3 = row.insertCell(2); 
        var element2 = document.createElement("input"); 
        element2.type = "text"; 
        element2.name = "firstname["+rowCount+"]"; 
        cell3.appendChild(element2)[$i]; 

        var cell4 = row.insertCell(3); 
        var element3 = document.createElement("input"); 
        element3.type = "text"; 
        element3.name = "lastname["+rowCount+"]"; 
        cell4.appendChild(element3)[$i]; 

        var cell5 = row.insertCell(3); 
        var element4 = document.createElement("input"); 
        element4.type = "text"; 
        element4.name = "town["+rowCount+"]"; 
        cell5.appendChild(element4)[$i]; 

        var cell6 = row.insertCell(3); 
        var element5 = document.createElement("input"); 
        element5.type = "text"; 
        element5.name = "state["+rowCount+"]"; 
        cell6.appendChild(element5)[$i]; 
       } 

      } 
     </script> 
    </head> 
    <body> 
    <form action="#" method="post"> 
     <input type="button" value="Add Row" onclick="addRow('dataTable')" /> 
     <input type="text" name="numb" id="numb" value="" /> 
     <input type="submit" name="submit" value="submit" /> 
     <table id="dataTable" width="350px" border="1"> 

     </table> 
     </form> 
    </body> 
    </html>