2016-08-02 18 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() 
); 

/* Above zeigen Tabellen Strukturen */PHP für FOR 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(); 

/* erhalten hinzugefügt Auto Increment Wert "ob_nr" von $ 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> 

/* wenn user click in submit button, ich muss $ sql3 ausführen und Auto Incremet Value erhalten, der für ob_no generiert wurde, danach FOR LOOP für $ sql2 ausführen, um alle Checked-Werte (op_no) mit dem "ob_no" jetzt nur einen überprüften Wert hinzuzufügen von $ sql2 brauchen Unterstützung für Corr ect die FOR LOOP in meinem Szenario */

+0

Ein wenig unordentlich Code ich denke, und es ist ein bisschen verwirrend auf den ersten. Möchten Sie Änderungen in diesem zweiten Codeblock vornehmen? –

+0

ja es ist Prity chaotisch Codes ....... ich habe nur verwandte Codes hinzugefügt ... –

+0

@EdvinTenovimas ..... ich habe Problem im 3. Codeblock ....., FÜR LOOP fügen Sie nur einen überprüften Wert in zu der Tabelle "op_opbreak_tbl" ........ ich muss alle überprüften Werte "op_no" gegen mit "$ inid" –

Antwort

13

Ihr Code ist extrem chaotisch, es enthält sogar fehlende schließen }. Manche Orte sind auch einfach unlogisch. Ich habe Ihren Code neu strukturiert (ich glaube, nichts fehlt):

<?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); 
} 

ich nicht alle Bereiche geändert hat, weil es zu viel von ihnen. Zum Beispiel ist die MySQL API und wird nicht länger gepflegt. Sie sollten zu MySQLi oder PDO API wechseln. Sie entziehen sich auch nicht den Benutzereingaben, weshalb Sie anfällig für SQL-Injection sind. Es gibt mehr Dinge, die nicht ganz gut sind, aber im Moment reicht es mit dem, was ich zur Verfügung gestellt habe.

Sollte gut genug sein und es werden so viele Abfragen ausgeführt, wie viele Spalten ausgewählt wurden.

+0

...... thax für Ihren Beitrag, aber das Problem ist immer noch nicht gelöst ..... ich denke, Sie vermissen mein Verständnis mit meinen chaotischen Codes zu verstehen ....... Meine Anfrage ist ein ONE Record hinzufügen Meine Tabelle "opbreak_tbl", die Autogenarate ob_no und Style_no (Benutzer im Formular ausgewählt)., danach Hinzufügen von einer oder mehreren Zeilen zu "op_opbreak_tbl" Tabelle, das ist "ob_no" aus "opbreak_tbl" -Tabelle und alle überprüften Werte aus dem Formular ........ in der "op_opbreak_tbl" Tabelle "ob_no" kann wiederholt werden ..... –

+0

in meiner Tabellenstruktur ..... es gibt viele zu viele Beziehungen zwischen "operation_tbl" Tabelle und "opbreak_tbl" Tabelle ,,,, das, warum ich 3. "op_opbreak_tbl" -Tabelle zur Aufrechterhaltung der Normalisierung erstellt. , ...... jetzt können Sie meine requirmrnnt identifizieren ... –

+1

@GayanChaturanga Ich habe meine Antwort bearbeitet. Dies wird 'sql2' Abfragen mehrmals ausführen. Das sollte funktionieren. Wenn dies der Fall ist, denke bitte über Upvoting/Accepting nach, da es mir sehr hilft. –