2015-10-13 67 views
1
tbl_A 
[id | facility_section | assigned_no] 
---------- 
tbl_B 
[col1 | col2| issued_to | col3 | col_etc] 
---------- 

之间的下拉列表将检索tbl_A表的facility_section列的值。然后,下拉列表值将被插入到tbl_Bissued_to列中。代码示例: -INSERT和UPDATE(+增加值)两个不同的表PHP的MySQL

<?php 
 

 
include ('dbconnect.php'); 
 

 
@$i=$_POST['issued_to']; 
 

 
if(@$_POST['submit']) 
 
{ 
 
    $s="INSERT INTO tbl_B (issued_to) VALUES ('$i')"; 
 
    mysql_query($s); 
 
} 
 

 
@$facility_section = $_POST['facility_section']; 
 

 
$result = mysql_query("SELECT facility_section FROM tbl_A"); 
 

 
?> 
 

 
<select name="issued_to"> 
 
    <option selected disabled>-- Please Select --</option> 
 
    <?php 
 
    while ($row = mysql_fetch_array($result)) { 
 
\t echo "<option value='" . $row['facility_section'] . "'>" . $row['facility_section'] . "</option>"; 
 
\t } 
 
    ?> 
 
</select>

我想那是什么,每个下拉列表值插入的tbl_Bissued_to列时间,tbl_Aassigned_no列将被更新和增加了1,其中它会相应增加: - facility_section = issued_to

我知道代码更新: -

UPDATE tbl_A SET assigned_no = assigned_no + 1 WHERE facility_section = '$facility_section'

但是,我卡在如何做到这一点?

+0

这是您的完整的工作代码? –

+0

如果这是你的整个代码,那么你会遇到一些问题。 1.)您正在访问$ _POST而不使用具有method = POST标签的表单,这意味着$ _POST将永远为空。 2.)你真的应该使用准备好的sql语句 – Thomas

+0

@LoganWayne和Thomas,不,这不是我的完整工作代码。 – Danny

回答

1
  • 声明的$i应该是你if()条件内,否则会发出undefined variable错误消息。
  • @$facility_section = $_POST['facility_section'];的用途是什么?你在哪里使用它?我认为它也应该在您的if()条件内。
  • 你很容易SQL Injection,所以你应该使用mysql_real_escape_string()当一个变量,特别是当它是一个字符串,绑定到您的查询。
  • mysql_* API已被弃用,您应该使用mysqli_* API。在这里阅读关于prepared statement

您的代码至少应该是这样的(内部if()条件):

if(isset($_POST['submit'])){ 

    $i = mysql_real_escape_string($_POST["issued_to"]); 

    $s="INSERT INTO tbl_B (issued_to) VALUES ('$i')"; 
    mysql_query($s); 

    /* GET TOTAL OF tbl_B BASED FROM THE SELECTED facility_section */ 
    $res = mysql_query("SELECT * FROM tbl_B WHERE issued_to = '$i'"); 
    $totalrows = mysql_num_rows($res); 

    /* UPDATE THE assigned_no COLUMN WITH THE UPDATED NUMBER OF ROWS */ 
    mysql_query("UPDATE tbl_A assigned_no = '$totalrows' WHERE facility_section='$i'"); 

} /* END OF ISSET */