2016-08-02 48 views
-2
//.................... 


CREATE TABLE operation_tbl (
op_no INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
op_name VARCHAR(100) NOT NULL, 
mtype VARCHAR(25) NOT NULL, 
createby VARCHAR(10) NOT NULL, 
date date(), 
time time() 
); 


CREATE TABLE opbreak_tbl (
ob_no INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
style_no VARCHAR(20) NOT NULL, 
createby VARCHAR(10) NOT NULL, 
date date(), 
time time() 
); 

CREATE TABLE op_opbreak_tbl (
ob_no INT(10) PRIMARY KEY, 
op_no INT(10) PRIMARY KEY, 
createby VARCHAR(10) NOT NULL, 
date date(), 
time time() 
); 

/*以上節目表的結構*/PHP爲LOOP

//................................................. 
<?php 

$sql1="SELECT * FROM operation_tbl"; 
$result1=mysql_query($sql1); 



if(isset($_POST['Save'])){ 
include("dbconnection.php"); 

$sql3="INSERT INTO opbreak_tbl(style_no,createby,date,time) VALUES('$_POST[style_no]','$_SESSION[uname]','".date('Y-m-d h:m:s')."','".date('h:i:s',mktime(date('h')+5,date('i')+30,date('s')))."')"; 
if(mysql_query($sql3)){ 

$inid= mysql_insert_id(); 

/*得到增加自動遞增值 「ob_no」 從$ SQL3 */

$checkbox1=$_POST['oid']; 
for ($i=0; $i<sizeof($checkbox1);$i++){ 
$sql2="INSERT INTO op_opbreak_tbl (ob_no,op_no,createby,date,time)  VALUES('".$inid."','".$checkbox1[$i]."','$_SESSION[uname]','".date('Y-m-d h:m:s')."','".date('h:i:s',mktime(date('h')+5,date('i')+30,date('s')))."')"; 
}} 
if (mysql_query($sql2)){ 

    $msg="Operation Break Down has been Added... ".$inid; 
    header("Location:operation brackdown.php?id=$msg"); 
    }else{ 
    $msg="Operation Brack Down has not been Added...".mysql_error(); 
    header("Location:operation brackdown.php?id=$msg"); 
    } 


}else{ 

?> 

    <head> 
</head> 

<body> 
<form id=operationbrack method="POST" action="<?php echo $_SERVER['Adm/PHP_SELF']; ?>"> 

    <table> 
<tr> 
<th height="34" bgcolor="#999999"><div align="center"><strong>OPERATION NO</strong></div></th><th height="34" bgcolor="#999999"><div align="center"><strong>OPERATION NAME</strong></div></th> 
<th bgcolor="#999999"> <div align="center"><strong>ADD </strong></div> </th> 
    </tr> 

<?php 

while($row1 = mysql_fetch_array($result1)) 
{ 
echo "<tr>"; 
echo "<td align='center'>" . $row1['op_no'] . "</td><td>" .  $row1['op_name'] . "</td><td><div align='center'> 
    <input name='oid[]' type='checkbox' id='oid[]' value=".$row1['op_no']." /> 
    </div> 
    </td>"; 
    echo "</tr>"; 

    } 


mysql_close($con); 
?> 

<tr> 
<td colspan="3"><div align="center"> 
    <input type="submit" name="Save" id="Save" value="Add to Operation Brack Down" /> 
    </div></td> 
    </tr> 
</table> 
</div> 
</form> 

/*當用戶點擊提交按鈕,我需要運行$ sql3並獲得爲ob_no生成的自動增量值,然後運行FOR LOOP for $ sql2以將所有檢查值(op_no)添加到「ob_no」 現在只有一個選中的增值由$ sql2需要支持corr例如我的場景中的FOR LOOP */

+0

我覺得有點混亂的代碼,起初有點混亂。你想在第二個代碼塊中進行一些更改嗎? –

+0

是的,這是prity凌亂的代碼.......我只添加相關的代碼... –

+0

@EdvinTenovimas .....我在第三代碼塊的問題.....,FOR LOOP只添加一個選中的值到「op_opbreak_tbl」表........我需要添加所有選中的值「op_no」反對與「$ inid」 –

回答

13

您的代碼非常混亂,它甚至包含缺少關閉}。有些地方也不合邏輯。我已經重組了您的代碼(我認爲沒有遺漏):

<?php 

include("dbconnection.php"); 
$sql1 = "SELECT * FROM operation_tbl"; 
$result1 = mysql_query($sql1); 

if (!empty($_POST['Save'])) 
{ 
    $sql3 = "INSERT INTO opbreak_tbl(style_no, createby, date, time) VALUES('$_POST[style_no]', '$_SESSION[uname]', '".date('Y-m-d h:m:s')."', '".date('h:i:s', mktime(date('h')+5, date('i')+30, date('s')))."')"; 
    if (mysql_query($sql3)) { 
     $inid = mysql_insert_id(); 

     /* get added Auto Increment value "ob_no" from $sql3 */ 
     $checkbox1 = $_POST['oid']; 
     for ($i = 0; $i < sizeof($checkbox1); $i++) { 
      $sql2 = "INSERT INTO op_opbreak_tbl (ob_no,op_no,createby,date,time) VALUES('".$inid."', '".$checkbox1[$i]."', '$_SESSION[uname]', '".date('Y-m-d h:m:s')."', '".date('h:i:s', mktime(date('h')+5,date('i')+30, date('s')))."')"; 
      if (mysql_query($sql2)) { 
       $msg = "Operation Break Down has been Added... ".$inid; 
      } else { 
       $msg = "Operation Brack Down has not been Added...".mysql_error(); 
      } 
     } 
    } 
    header("Location: operation brackdown.php?id=$msg"); 
} else { 
?> 

<head> 
</head> 

<body> 
<form id="operationbrack" method="POST" action="<?php echo $_SERVER['Adm/PHP_SELF']; ?>"> 
    <table> 
     <tr> 
      <th height="34" bgcolor="#999999"><div align="center"><strong>OPERATION NO</strong></div></th> 
      <th height="34" bgcolor="#999999"><div align="center"><strong>OPERATION NAME</strong></div></th> 
      <th bgcolor="#999999"> <div align="center"><strong>ADD </strong></div></th> 
     </tr> 
    <?php 
     while ($row1 = mysql_fetch_array($result1)) { 
      echo "<tr>"; 
       echo "<td>" . $row1['op_no'] . "</td>"; 
       echo "<td>" . $row1['op_name'] . "</td>"; 
       echo "<td><div align='center'><input name='oid[]' type='checkbox' id='oid[]' value=".$row1['op_no']."></div></td>"; 
      echo "</tr>"; 
     } 
    ?> 
     <tr> 
      <td colspan="3"> 
       <div align="center"><input type="submit" name="Save" id="Save" value="Add to Operation Brack Down"></div> 
      </td> 
     </tr> 
    </table> 
</form> 
<?php 
mysql_close($con); 
} 

我沒有更改所有區域,因爲它們太多了。例如,MySQL API是deprecated,不再維護。您應該切換到MySQLiPDO API。你也不是逃避用戶輸入,因此,你很容易受到SQL注入的影響。還有更多的東西不太好,但現在對我所提供的東西已經足夠了。

應該足夠好,它將執行儘可能多的查詢以及選擇多少列。

+0

...... thax爲您的貢獻,但問題仍然沒有解決.....我想你錯過理解我的要求與我的雜亂代碼.......我的要求是需要添加一個記錄我的「opbreak_tbl」表是Autogenarate ob_no和Style_no(用戶在表單中選擇了用戶),然後在「op_opbreak_tbl」表中添加一行或多行,即從「opbreak_tbl」表中選擇「ob_no」,並從表單中選擇所有選中的值........在「op_opbreak_tbl」表中「ob_no」可以重複..... –

+0

在我的表結構中.....「operation_tbl」表和「opbreak_tbl」之間存在多對多關係表,,,,爲什麼我創建了第三個「op_opbreak_tbl」表來維持正常化。 ,......現在你可以識別我的請求..... –

+1

@GayanChaturanga我編輯了我的答案。這將多次執行'sql2'查詢。這應該工作。如果確實如此,請考慮提升/接受,因爲它對我有很大的幫助。 –