0

テーブルにautodataを挿入したい..1つのデータは、ここでp_no(個人番号)と呼ばれる別のテーブルから取得されます。これは、別のテーブル(emp_info)から取得され、別のテーブル出席の外部キーです。ボタンを 1 つクリックするだけで 1200 データを自動的に挿入したい .1200 データは 1200 p_no と他の情報を意味します。

1.emp_info(p_no,name,designation..etc) P_no は主キーです 2.attandance (aid(auto increamment),attendance,tiffin,shift,ot date,p_no) p_no は外部キーです。emp_info テーブルから p_no 情報にアクセスする 1 つのボタンをクリックして、1200 個のデータを自動的に挿入したいと考えています。

私はdreamweaver、php、mysqlを使用しています。


 <?php require_once('Connections/bndock.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break; 
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

mysql_select_db($database_bndock, $bndock);
$query_Recordset1 = "SELECT p_no FROM emp_info";
$Recordset1 = mysql_query($query_Recordset1, $bndock) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);


$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
$val=10;

for($row_Recordset1=0;$row_Recordset1<=$val;$row_Recordset1++){

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO attndance (aid, doa, attnc, stnd, ot, shift, p_no) VALUES (%s, now(), %s, %s, %s, %s,%s)",
                       GetSQLValueString($_POST['aid'], "int"),                    
                       GetSQLValueString($_POST['attnc'], "text"),//attendance//doa=date
                       GetSQLValueString($_POST['stnd'], "text"),//tiffin
                       GetSQLValueString($_POST['ot'], "text"),
                       GetSQLValueString($_POST['shift'], "text"),
                    GetSQLValueString($_POST['p_no'], "int"));

  mysql_select_db($database_bndock, $bndock);
  $Result1 = mysql_query($insertSQL, $bndock) or die(mysql_error());

  $insertGoTo = "attnd_show.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}



}

?>

<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
<table width="296" height="190" align="center" bordercolor="#ECE9D8" bgcolor="#ECE9D8">
          <tr valign="baseline">
            <td colspan="2" align="right" nowrap="nowrap">&nbsp;</td>
            </tr>
          <tr valign="baseline">
            <td width="77" align="right" nowrap="nowrap"><strong>Attendance:</strong></td>
            <td width="193"><select name="attnc">
              <option value="P" selected="selected">P</option>
              <option value="A">A</option>
              <option value="L">L</option>
              <option value="Sick">Sick</option>
              <option value="Suspend">Suspend</option>
              <option value="TY">TY</option>
                                                                                                  </select>            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right"><strong>Stand Easy :</strong></td>
            <td><select name="stnd">
              <option value="Yes">Y</option>
              <option value="No">N</option>
                          </select>            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right"><strong>Over time:</strong></td>
            <td><select name="ot">
              <option value="Yes">Y</option>
              <option value="No">N</option>
                          </select>            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right"><strong>Shift:</strong></td>
            <td><select name="shift">
              <option value="A">A</option>
              <option value="B">B</option>
              <option value="C">C</option>
              <option selected="selected">-</option>
                                                                                                                          </select>            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right"><strong>P.No:</strong></td>
            <td><select name="p_no">
                <?php 
do {  
?>
                <option value="<?php echo $row_Recordset1['p_no']?>" <?php if (!(strcmp($row_Recordset1['p_no'], $row_Recordset1['p_no']))) {echo "SELECTED";} ?>><?php echo $row_Recordset1['p_no']?></option>
                <?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
?>
              </select>            </td>
          </tr>

          <tr valign="baseline">
            <td nowrap="nowrap" align="right">&nbsp;</td>
            <td><input name="submit" type="submit" value="Insert record" /></td>
          </tr>
        </table>

<input type="hidden" name="aid" value="" />
        <input type="hidden" name="MM_insert" value="form1" />
      </form></td>
4

1 に答える 1

0

従業員の欠勤日/病欠日をマークする出勤システムをコーディングしたいと思います。

出席テーブルに 1200 の値を挿入するべきではないと言っているわけではありません (4 年間のタイムスパンで毎日のエントリが必要なように思えます)。

しかし、次のようなことを行う方が良いでしょう:

a)「不在時間」(出席の反対)にエントリが存在しない場合、従業員が勤務中で働いているふりをし、欠席/病欠のみをカレンダーの形式で表示します(phpはこのようなものを簡単に生成できます)

b) 従業員が自分でスタンプを押して出席エントリを生成しない限り、従業員が悪で病気であるふりをする

最初の質問については、1200 エントリに固執する場合は、for ループを使用してください。

// mysql-query getting all employees (use PDO, i am old fashioned and still use mysql_ functions)
while( mysql_fetch_array($sql-query-getting-employees) )
{
$insert = "INSERT INTO ATTENDANCE (col1, col2...) VALUES ";
for( $i = 0; $i <= 2000; $++ )
{
if($i != 0) { $insert += ", "; } //append comma for more than 1 value
$insert += "( val1, val2 )";
}
}

次に、mysql_query($insert) を介して値を挿入します

于 2012-08-23T06:56:36.767 に答える