2

ユーザーが「項目の追加」ボタンをクリックすると、3 つのテキストボックスを動的に追加する JS スクリプトがここにあります。データベースに保存されると、3 つのテキストボックスは異なるフィールドを持ちます。しかし、私のPHPコードでは、テキストボックスから値を取得していないようです。データベースでは、「配列」のみが表示されます。私を助けてください!ありがとう!

<script language="javascript">
row_no=0;
function addRow(tbl,row){
row_no++;
if (row_no<=20){
    if (row_no<=20){
if (row_no>=10){
var textbox  = row_no+'.)&nbsp;<input type="text" size = "50"  maxlength= "50" name= "desk_user[]">';}
if (row_no<10){
var textbox  = row_no+'.  )&nbsp;<input type="text" size = "20"  maxlength= "50" name= "desk_user[]">';}
var textbox2 = '<input type="text" size = "60" maxlength= "250" name= "desk_report[]">';
var textbox3 = '<input type="text" size = "60" maxlength= "250" name= "desk_action[]">';

var tbl = document.getElementById(tbl);
var rowIndex = document.getElementById(row).value;
var newRow = tbl.insertRow(row_no);
var newCell = newRow.insertCell(0);
newCell.innerHTML = textbox;
var newCell = newRow.insertCell(1);
newCell.innerHTML = textbox2;
var newCell = newRow.insertCell(2);
newCell.innerHTML = textbox3;
}
if (row_no>20){
alert ("Too Many Items. Limit of 20."); 
}
}
}

</script>

私のPHPコード:

<?php

$con = mysql_connect ("localhost","root","nasi") or die
('cannot connect to database error: '.mysql_error());


if (isset($_POST['desk_user']) &&
isset($_POST['desk_report']) &&
isset($_POST['desk_action']))
{

$desk_user = $_POST['desk_user'];
$desk_report = $_POST['desk_report'];
$desk_action = $_POST['desk_action'];

if (!empty($desk_user)&& !empty($desk_report)&& !empty($desk_action)) {

mysql_select_db("csr", $con);
$sql = "INSERT INTO `desktoplaptop` (`desk_user`,`desk_report`,`desk_action`) VALUES ('$_POST[desk_user]','$_POST[desk_report]','$_POST[desk_action]') ";

if ($sql_run = mysql_query($sql)) {
                            echo 'ok.'; 
                                }
                        else {
                                    echo '*Sorry, we couldn\'t register you at this time. Try again later.';
                                    }
}

}

?>
4

1 に答える 1

4

テキストボックス名を配列として定義したため、値を配列として取得しています。

<input type="text" size = "20"  maxlength= "50" name= "desk_user[]">

このようにコードを変更します

 <?php

    $con = mysql_connect ("localhost","root","nasi") or die
    ('cannot connect to database error: '.mysql_error());


    if (isset($_POST['desk_user']) &&
    isset($_POST['desk_report']) &&
    isset($_POST['desk_action']))
    {

    $desk_user_arr = $_POST['desk_user'];//contains array value
    $desk_report = $_POST['desk_report'];//contains array value
    $desk_action = $_POST['desk_action'];//contains array value
    foreach($desk_user_arr as $key=>$desk_user) { //Loop through arrays
    if (!empty($desk_user) && !empty($desk_report[$key]) && !empty($desk_action[$key])) {
   mysql_select_db("csr", $con);
    $sql = "INSERT INTO `desktoplaptop` (`desk_user`,`desk_report`,`desk_action`) VALUES ('$desk_user','$desk_report[$key]','$desk_action[$key]') ";

    if ($sql_run = mysql_query($sql)) {
     echo 'ok.'; 
    } else {
      echo '*Sorry, we couldn\'t register you at this time. Try again later.';
    }
   }
  }
}
?>
于 2012-11-19T06:56:03.350 に答える