首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在提交时交互两个选择框id

如何在提交时交互两个选择框id
EN

Stack Overflow用户
提问于 2016-10-26 19:14:12
回答 2查看 73关注 0票数 0

我有至少两个HTML表单中的选择框插入通过POST,但用户可以添加更多的选择框。现在我必须显示每个n和每个插入的id之间的关系。

就像我们插入了1,4,9,6 id。所以我想把它插入到表中的两列中,如下所示:

代码语言:javascript
复制
(1-4) (1-9) (1-6) (4-9) (4-6) (9-6)
EN

回答 2

Stack Overflow用户

发布于 2016-10-26 19:24:45

代码语言:javascript
复制
$text = $_POST['text'];

$textname = explode(",", $text);

if ($textname > 0) {
    for ($i = 0; $i < count($textname); $i++) {
        "Piece $i = $textname[$i] <br />";
        ..... insert query....

我在片段$i...how中获取POST值,以便将其插入到代码中的数组中

票数 0
EN

Stack Overflow用户

发布于 2016-10-26 23:23:01

这是我最初的答案,我认为这是问题的症结所在-如何从1、2、3、4、5生成配对(1-2) (1-3) (1-4) (1-5) (2-3) (2-4) (2-5) (3-4) (3-5) (4-5)。如果他/她需要帮助处理$_POST数组,我认为我们需要从海报中获得更多信息

代码语言:javascript
复制
$arrIDs = array(1, 2, 3, 4);
$intUpperLimit = max($arrIDs);
foreach($arrIDs as $ID) {
  for($i = $ID + 1; $i <= $intUpperLimit; $i++) {
    echo("INSERT INTO tblPairs VALUES($ID, $i)");
  }
}

如果这些值不像原始示例所建议的那样是连续的,则使用

代码语言:javascript
复制
$arrIDs = array(1,5,9,17); 
foreach($arrIDs as $ID1) { 
    $arrUsedIDs[] = $ID1;
    foreach(array_diff($arrIDs, $arrUsedIDs) as $ID2) {
      echo("INSERT INTO similar_ailment (ailment,ailment1) VALUES($ID1, $ID2)"); 
    } 
} 

要在数据库中插入两个值,您应该创建一个存储过程,例如

代码语言:javascript
复制
DROP PROCEDURE IF EXISTS `usp_insert_pair`;
DELIMITER $$
CREATE PROCEDURE `usp_insert_pair`( 
  IN  p_intID1 INT, 
  IN  p_intID2 INT,
  OUT  p_row_count INT
  )
BEGIN  
  INSERT INTO tblPairs (intID1, intID1) 
  VALUES (p_intID1, p_intID1); 
  SELECT ROW_COUNT() INTO p_row_count;
  END; $$
DELIMITER ;

该过程将该对作为输入,并提供输出(这可能对您有所帮助,也可能不会对您有所帮助)。您可以将存储过程的调用合并到循环中

代码语言:javascript
复制
$arrIDs = array(1, 2, 3, 4);
$intUpperLimit = max($arrIDs);
foreach($arrIDs as $ID) {
  for($i = $ID + 1; $i <= $intUpperLimit; $i++) {
    mysqli_query($conn, "usp_insert_pair($ID, $i, @p_row_count, @p_insert_id)");
  }
}

当然,您首先需要设置到数据库的连接-这是$conn参数。在调用mysqli_query时,您应该检查操作是否成功。这里有很多选择。mysqli_query在失败时返回false,因此您可以检查返回的值

代码语言:javascript
复制
    $bOutcome = mysqli_query($conn, "usp_insert_pair($ID, $i, @p_row_count, @p_insert_id)");
    if (!$bOutcome) echo "row insert error for pair $ID, $i";

如果insert不起作用,您可能希望退出

代码语言:javascript
复制
    $rs = mysqli_query($conn, $strSQL) or Die("Error in usp_insert_pair: ". mysqli_error($conn));

您可能希望检查返回的@intRowCount参数,以确保添加了一行(并且只添加了一行)。

代码语言:javascript
复制
    $rs = mysqli_query($conn, 'SELECT @intRowCount')
    $row = mysqli_fetch_row($rs);
    if ($row[0] != 1) echo "row insert error for pair $ID, $i"; 

你可以做更多的检查,但我尽量保持(相对)简短。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40260833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档