使用带发布方法的db表上的select并在同一页面中获取结果

时间:2019-07-12 11:29:09

标签: php html sql

我正在尝试使用通过post方法提交的数据库中的select提取数据来提交,我需要保持在同一页面上。

这是我尝试过的,我正在使用MySQL。

$sql = "SELECT * FROM `client` WHERE 1";
if ($result = mysqli_query($conn, $sql)) {
    echo'<body>
         <div><p> vue global des client </p></div>
        <form action="#" method="post">
         <select name = "Client">';
    while ($row = mysqli_fetch_assoc($result)) {
        echo "<option value = '" . $row['client_code'] . "'>" . $row['client_nom'] . "</option>";
    }
    echo '</select>  
        <button type="submit" name"submit"> Vue specifique </button>
        </form><br>';
    if (isset($_POST['submit'])) {
        mysqli_free_result($conn);
        $clientCode = $_POST['Client'];
        echo "<p> You have selected :" .$clientCode."</p>";
        $sql = "SELECT a.*, b.client_nom, c.site_nom, d.contenant_nom, e.transporteur_nom FROM `mouvement`a
        left join `client` b on a.client_code = b.client_code
        left join `siteprod` c on a.site_code = c.site_code
        left join `contenant` d on a.contenant_code = d.contenant_code
        left join `transporteur` e on a.transporteur_code = e.transporteur_code
        WHERE a.client_code = $clientCode";
        if ($result = mysqli_query($conn, $sql)) {
            echo '<table border="1">';
            echo "<tr><td>Code</td><td>Type</td><td>Date</td><td>Site de prod</td><td>Client</td><td>Contenant</td><td>Quantit&eacute;</td><td>Transporteur</td></tr>";
            while ($row = mysqli_fetch_assoc($result)) {
                echo "<tr><td>{$row["mouvement_code"]}</td><td>{$row["mouvement_type"]}</td><td>{$row["mouvement_date"]}</td><td>{$row["site_nom"]}</td><td>{$row["client_nom"]}</td><td>{$row["contenant_nom"]}</td><td>{$row["contenant_quantite"]}</td><td>{$row["transporteur_nom"]}</td></tr>\n";
            }
            echo '<br>';
            mysqli_free_result($conn);
        }
    } else {
        echo "<p>no submit</p>";
        $sql = "SELECT a.*, b.client_nom, c.site_nom, d.contenant_nom, e.transporteur_nom FROM `mouvement`a
            left join `client` b on a.client_code = b.client_code
            left join `siteprod` c on a.site_code = c.site_code
            left join `contenant` d on a.contenant_code = d.contenant_code
            left join `transporteur` e on a.transporteur_code = e.transporteur_code
            WHERE 1";
        if ($result = mysqli_query($conn, $sql)) {
            echo '<table border="1">';
            echo "<tr><td>Code</td><td>Type</td><td>Date</td><td>Site de prod</td><td>Client</td><td>Contenant</td><td>Quantit&eacute;</td><td>Transporteur</td></tr>";
            while ($row = mysqli_fetch_assoc($result)) {
                echo "<tr><td>{$row["mouvement_code"]}</td><td>{$row["mouvement_type"]}</td><td>{$row["mouvement_date"]}</td><td>{$row["site_nom"]}</td><td>{$row["client_nom"]}</td><td>{$row["contenant_nom"]}</td><td>{$row["contenant_quantite"]}</td><td>{$row["transporteur_nom"]}</td></tr>\n";
            }
            echo '<br>';
            mysqli_free_result($conn);
        }

我每次都在其他情况下结束。我做错什么了吗?

3 个答案:

答案 0 :(得分:1)

它总是在“ else”语句上结束的原因是因为您正在检查isset($ _ POST ['submit'])。当您在表单中使用类型为Submit的按钮时,它的作用类似于输入类型Submit,但不会将名称作为POST值发送。这意味着即使您将名称设置为在按钮上提交,$ _ POST ['submit']也不存在。

我建议尝试以下解决方案之一:

  1. 将按钮更改为输入类型提交
  2. 改为使用if(isset($ _ POST ['Client'])))。因为选择将包含在POST

希望有帮助:)

答案 1 :(得分:1)

我们的代码中有错字。

替换此

<button type="submit" name"submit"> Vue specifique </button>

 <button type="submit" name="submit"> Vue specifique </button>

答案 2 :(得分:-1)

将表单操作设置为:

<form action="/" method="post">
    <input type="text" id="user_id" name="user_id">
    <input type="submit" id="submit_form" name="submit_form" value="Submit">
</form>

在您的php文件的开头使用它。

<?php
if(isset($_POST['submit_form']) && $_POST['submit_form'] == "Submit" ){
$query = "SELECT * FROM users where id=".$_POST['user_id'];
 if ($result = mysqli_query($conn, $query)) {
      while ($row = mysqli_fetch_assoc($result)) {
            echo "<pre>";
               print_r($row);
            echo "</pre>";
        }
 }
}
?>