简体   繁体   中英

How to get the values of dynamically added rows into database?

I have a table form which contains a part where the rows can be added dynamically by clicking on add button. As usual, why I am coming here is having trouble in adding those values in the added rows into database. I mean, the values on the dynamically added rows are not being saved into the database, only the values of the first row is being added.

This is the script:

EDIT:

<script language="Javascript">
var i=1;
function addRowToTable()
{


 i++;
  m.r.value = i;
  var tbl = document.getElementById('table');
  var lastRow = tbl.rows.length;
  var iteration = lastRow;
  var row = tbl.insertRow(lastRow);

  var cellLeft = row.insertCell(0);
  var textNode = document.createTextNode(iteration);
  cellLeft.appendChild(textNode);

  var cellRightSel1 = row.insertCell(1);
  var sel = document.createElement('select');
  sel.name = 'name' + iteration;
  sel.setAttribute("onchange", "choosec(this);");    
  var item = new Option("","");
  sel.options[sel.length] = item;
    <?
    while($data = mysql_fetch_array($result)){                                    
    ?>
  var item = new Option("<?=$data["Name"];?>","<?=$data["ID"];?>");
  sel.options[sel.length] = item;
  <? } ?>
  cellRightSel1.appendChild(sel);

  var cellRightSel2 = row.insertCell(2);
  var sel = document.createElement('select');
  sel.name = 'class' + iteration;
  sel.setAttribute("onchange", "choosepoint(this);");    
  var item = new Option ("","");
  sel.options[sel.length] = item;
    <?
    while($data = mysql_fetch_array($result_sub)){                                    
    ?>
  var item = new Option("<?=$data["Class"];?>","<?=$data["ID"];?>");
  sel.options[sel.length] = item;
  <? } ?>
  cellRightSel2.appendChild(sel);

  var cellRight = row.insertCell(3);
  var div = document.createElement('div');
  div.id = 'point' + iteration;
  cellRight.appendChild(div);
}
    </script>

<form id="m" name="m" method="POST" action="submit.php">
<input type="hidden" name="menu_id" value="<?=$menu_id;?>">
<input type="hidden" name="r" id="r">
<table align="center" class="table">
    <tr>
    <tr>
        <td class="tablesubtitle">Adjustment</td>
        <td class="tablesubtitle"><input type="text" name="adjustment" size="2"></td>
        </td>
    </tr>
    <tr>
        <td class="tablesubtitle">Component</td>
        <td class="tablesubtitle">
        <table id="table">
    <tr>
        <td>No</td>
        <td>Name</td>
        <td>Class</td>
        <td>Point</td>
        <td>Action</td>
    </tr>
    <tr>
            <td>1</td>
        <td><select name="name">
            <option value="#">&nbsp;</option>
            <?php
                    opendb();
                $query = "SELECT * FROM student";
                $result = mysql_query($query);
                while($data = mysql_fetch_array($result)){
                    $ID = $data['ID'];
                    $Name = $data['Name'];
                    echo "<option value='$ID'>$Name</option>";
                }
            ?>
             </select>
        </td>
        <td><select name='class' onchange="choosepoint(this);">
            <option value="#">&nbsp;</option>
            <?php
                    opendb();
                $query = "SELECT * FROM student2";
                $result = mysql_query($query);
                while($data = mysql_fetch_array($result)){
                        $ID1 = $data['ID'];
                    $class = $data['Class'];
                    echo "<option value='$ID'>$class</option>";
                }
            ?>
            </select>
        </td>
        <td>
                <div id="point" name="point"></div>
            </td>
            <td><input type="button" value=" + " onClick="addRowToTable();"> | <input type="button" value=" - " onClick="removeRowFromTable();"></td>
    </tr>
</table>    
        </td>
        <tr>
        <td></td>
        <td align="center"><input type="submit" value="Submit"></td>
        </tr>
    </tr>
</table>
</form>

Submit.php

<?php
include ("c/config.php");
include ("c/db.php");

opendb();
$query1 = "select * from student where ID='$name'";
$result1 = querydb($query1);
$data = mysql_fetch_array($result1);
    $adjustment = $data['adjustment'];

$num = $_POST['r'];
//echo $num;
for($i=0; $i<=$num; $i++){
if(isset($_REQUEST['name$i'])){
    $name = $_REQUEST['name$i'];
}
if(isset($_REQUEST['class$i'])){
    $class = $_REQUEST['class$i'];
}
if(isset($_REQUEST['point$i'])){
    $point = $_REQUEST['point$i'];
}

$query2 = "INSERT INTO student3
            VALUES('$adjustment','$name','$class','$point')";
$result2 = querydb($query2);
}
closedb();
?>

I would use jquery and give each form element in the row a unique id then call

addRowToTable('234') //or whatever the id is

then in addRowToTable(id) function

$('form_element'+id).val();

Send this to a jquery $.post

I've found out the problems. This is my latest code:

var i=0;
function addRowToTable()
{
 i++;
  m.r.value = i;
  var tbl = document.getElementById('table');
  var lastRow = tbl.rows.length;
  var iteration = lastRow - 1;
  var row = tbl.insertRow(lastRow);

  var cellLeft = row.insertCell(0);
  var textNode = document.createTextNode(iteration);
  cellLeft.appendChild(textNode);

  var cellRightSel1 = row.insertCell(1);
  var sel = document.createElement('select');
  sel.name = 'name' + iteration;
  sel.setAttribute("onchange", "choosec(this);");    
  var item = new Option("","");
  sel.options[sel.length] = item;
    <?
    while($data = mysql_fetch_array($result)){                                    
    ?>
  var item = new Option("<?=$data["Name"];?>","<?=$data["ID"];?>");
  sel.options[sel.length] = item;
  <? } ?>
  cellRightSel1.appendChild(sel);

  var cellRightSel2 = row.insertCell(2);
  var sel = document.createElement('select');
  sel.name = 'class' + iteration;
  sel.setAttribute("onchange", "choosepoint(this);");    
  var item = new Option ("","");
  sel.options[sel.length] = item;
    <?
    while($data = mysql_fetch_array($result_sub)){                                    
    ?>
  var item = new Option("<?=$data["Class"];?>","<?=$data["ID"];?>");
  sel.options[sel.length] = item;
  <? } ?>
  cellRightSel2.appendChild(sel);

  var cellRight = row.insertCell(3);
  var div = document.createElement('div');
  div.id = 'point' + iteration;
  cellRight.appendChild(div);
}
    </script>

<form id="m" name="m" method="POST" action="submit.php">
<input type="hidden" name="menu_id" value="<?=$menu_id;?>">
<input type="hidden" name="r" id="r">
<table align="center" class="table">
    <tr>
    <tr>
        <td class="tablesubtitle">Adjustment</td>
        <td class="tablesubtitle"><input type="text" name="adjustment" size="2"></td>
        </td>
    </tr>
    <tr>
        <td class="tablesubtitle">Component</td>
        <td class="tablesubtitle">
        <table id="table">
    <tr>
        <td>No</td>
        <td>Name</td>
        <td>Class</td>
        <td>Point</td>
        <td>Action</td>
    </tr>
    <tr>
            <td>1</td>
        <td><select name="name">
            <option value="#">&nbsp;</option>
            <?php
                    opendb();
                $query = "SELECT * FROM student";
                $result = mysql_query($query);
                while($data = mysql_fetch_array($result)){
                    $ID = $data['ID'];
                    $Name = $data['Name'];
                    echo "<option value='$ID'>$Name</option>";
                }
            ?>
             </select>
        </td>
        <td><select name='class' onchange="choosepoint(this);">
            <option value="#">&nbsp;</option>
            <?php
                    opendb();
                $query = "SELECT * FROM student2";
                $result = mysql_query($query);
                while($data = mysql_fetch_array($result)){
                        $ID1 = $data['ID'];
                    $class = $data['Class'];
                    echo "<option value='$ID'>$class</option>";
                }
            ?>
            </select>
        </td>
        <td>
                <div id="point" name="point"></div>
            </td>
            <td><input type="button" value=" + " onClick="addRowToTable();"> | <input type="button" value=" - " onClick="removeRowFromTable();"></td>
    </tr>
</table>    
        </td>
        <tr>
        <td></td>
        <td align="center"><input type="submit" value="Submit"></td>
        </tr>
    </tr>
</table>
</form>

<?php
include ("c/config.php");
include ("c/db.php");

opendb();
$query1 = "select * from student where ID='$name'";
$result1 = querydb($query1);
$data = mysql_fetch_array($result1);
    $adjustment = $data['adjustment'];

$num = $_POST['r'];
//echo $num;
for($i=0;$i<=$num;$i++){
if(isset($_REQUEST['name$i'])){$name = $_REQUEST['name$i'];}
if(isset($_REQUEST['class$i'])){$class = $_REQUEST['class$i'];}
if(isset($_REQUEST['point$i'])){$point = $_REQUEST['point$i'];}

$query2 = "INSERT INTO student3
            VALUES('$adjustment','$name','$class','$point')";
$result2 = querydb($query2);
}
closedb();
?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM