php - 如何在 if(isset) 语句中使用 PHP 获取 URL 参数以更新表单

标签 php mysql display profile

我知道您可以使用 if(isset($_GET['id'])){ 获取 URL 参数 $id = $_GET['id'];这非常有效,如果我然后关闭该“if”语句并在同一页面上为更新/追加条目表单创建一个新的语句(它是每个索引数据库条目的显示页面),我将无法获取id 已传递到下一个 if 语句中的 URL。

这是一个 if 语句,它向我的子表(“条件”)提交一个新行(“条件”),该子表有一个外键,将其连接到健康提供者的父表(显示页面获取提供者的id 从搜索引擎选择并显示他们的信息,然后如果有人想要添加由该医生治疗的新健康状况,则在底部有此“附加条目”表单。)

如果我直接在我的 PHP 中给它正确的 id 号($id = 56),一切都会正常,但如果我尝试从第二个 if 语句中的 URL 获取它($id = $_GET['id') ];)。

if (isset($_GET['providerid']))
{
$providerid = $_GET['providerid'];  /*THIS WORKS GREAT*/

$sql = "SELECT *, GROUP_CONCAT(DISTINCT conditions.condition_name 
SEPARATOR ', ') AS all_conditions FROM `providers` INNER JOIN 
`conditions` ON `providers`.`id` = `conditions`.`prov_id` WHERE 
`prov_id`= $providerid";

$data = mysqli_query($connection, $sql) or die('error');

if(mysqli_num_rows($data) > 0){
  $numresults = mysqli_num_rows($data);

    while($row = mysqli_fetch_assoc($data)){
    $providerid = $row['id'];
    $providerfirstname = $row['provider_first_name'];
    /*etc....*/
    $conditions = $row['all_conditions'];

/*table displays provider info:*/
     echo "<br><h1>".$providerfirstname." ".$providerlastname." 
 </h1>";
     echo '<TABLE id="myTable" width="350px" border="1">';
           //etc....(cutting out details)
     echo '<tr><td><div id="myTable"><a href="#" id="addNew">Add+ . 
  </a></div></td><td><b>Conditions Treated:</b></td> . 
 <td>'.$conditions.'</td></tr>';

/*If user wants to add a new condition treated by provider that's 
not listed:*/
     echo '<tr><td></td><td>Add a new condition:</td><td><form 
action="profilebackup.php" method="POST"><input type="text" 
size="40" name="newcond" value="" placeholder="Add a Condition" /> . 
<input type="submit" name="add1" value="Add"><br></td></tr>';

            }
     echo '</TABLE>';

    }
   else {
        echo "0 results";
   }
}

/*sends added conditions to child table, EVERYTHING WORKS EXCEPT 
GETTING ID (WHICH WORKED ABOVE):*/

if(isset($_POST['add1'])){
  $providerid = $_GET['providerid'];
  $condition = mysqli_real_escape_string($connection, 
$_POST['condition']);


$insql = "INSERT INTO `conditions` (condition_name, prov_id) VALUES 
('$condition','$providerid')";

    if(mysqli_query($connection, $insql)){
      echo "Thank you! Your provider has successfully been submitted 
      to the database!";
     }
     else {
       echo "Sorry, there was an problem submitting your provider to 
       the database." . $insql . mysqli_error($connection);
      }
    }

除了第二个 if 语句中的 GET 函数外,一切正常。它返回错误代码,表明它没有正确的外键约束:“无法添加或更新子行:外键约束失败”,因为它没有获取 id。

最佳答案

您正在通过 postprofilebackup.php 提交表单,但此表单的处理程序正在尝试获取 providerid 。如果您希望能够通过 $_GET 访问它,则需要在表单操作中将providerid作为查询字符串发送。

<form method="post" action="profilebackup.php?providerid=<?php echo $providerid; ?>" ...

执行此操作的正确方法是在表单中包含隐藏输入,然后通过$_POST一致地访问它。

<form method="post" action="profilebackup.php">
    <input type="hidden" name="providerid" value="<?php echo $providerid; ?>">
    ...
</form>

以及处理程序代码。

<?php
...

// Notice that now you can use $_POST consistently.
if (isset($_POST['add1'])) {
    $providerid = $_POST['providerid'];
    ...

关于php - 如何在 if(isset) 语句中使用 PHP 获取 URL 参数以更新表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56910859/

相关文章:

如果存在 CSS 属性,jQuery 运行函数

javascript - jQuery fullPage : All images loading at same time

php - laravel 方法 "inRandomOrder()"真的是随机的吗?

php - 对象分配在 PHP OOP 中没有意义

mysql - 什么会导致 MySQL 数据库非常慢?

mysql - mySQL 5.5 中范围的 SQL 错误

mysql - 如何在 applicationContext.xml 中有条件地使用数据源

c# - Unity3D:在多个显示器上显示不同的场景

php - Ajax php jquery

php - 从 jQuery 中的 PHP MySQL 输出中选择 img 标签