首页 > 解决方案 > 使用标头(“位置:xxx.php”);将控制权移动/保留到网页上的选项卡

问题描述

我有一个选项卡式网页,可以使用这种选项卡结构执行数据库 CRUD 操作。

<div class="tab">
      <button class="tablinks" onclick="openCity(event, 'tab1')">tab1</button>
      <button class="tablinks" onclick="openCity(event, 'tab2')">tab2</button>
      <button class="tablinks" onclick="openCity(event, 'tab3')">tab3</button>
      <button class="tablinks" onclick="openCity(event, 'tab4')">tab4</button>
    </div>

    <div id="tab1" class="tabcontent">
    </div>
    <div id="tab2" class="tabcontent">
    </div>
    <div id="tab3" class="tabcontent">
       <div class="tab">
            <button class="tablinks" onclick="openCity(event, 'tab5')">Delete Record</button>
             DELETE QUERY;
             echo'Record deleted successfully';
             echo'Record not deleted successfully';
            <button class="tablinks" onclick="openCity(event, 'tab6')">View Record</button> //error
       </div> 
    <div id="tab5" class="tabcontent">
<!-- option 1 -->
    <div id="tab6" class="tabcontent">
    </div>

</div>

问题是当我删除一条记录时,删除后控件会转到带有所有选项卡的主页。我想要的是控件返回/保留删除选项卡,以便操作可以继续。

我的问题是;header ("locattion: xxx.php");一旦删除查询运行并显示成功/失败消息或如何执行此操作,是否可以使用 标签移动/保持删除选项卡打开?

这是删除记录和控件转到级别选项卡的实际代码。

<div class="col-sm-6" style="background-color:lavenderblush;">
      <h6> Fields </h6>
      <form action="" method="post" class="needs-validation" novalidate>
      <div class="row"   style="background-color:lavender;">
     <div class="col mb-4">
      <label for="validationCustom01">Field ID</label>
      <input type="number" class="form-control" name="field_id" id="field_id" placeholder="insert Field id" value="" required>
       </div>        
    </div>
      <button class="btn btn-primary btn-sm" name="submit111" type="submit">Delete Record</button>
      </form>

      <div id="search" class="col mb-4">

          <?php

            if(isset($_POST["submit111"])){
              $field_id = $_POST["field_id"];

            try {
                $stmt = $conn->prepare("Delete FROM fields where field_id = $field_id");

                 if ($stmt->execute()== TRUE) {
                 echo "<script type= 'text/javascript'>alert('Record deleted Successfully');</script>";
                 } else { echo "<script type= 'text/javascript'>alert('Record not deleted Successfully');</script>";}
                   }
                catch(PDOException $e) {
                      // echo "Error: " . $e->getMessage();
                         exit('<b>Catched exception at line '. $e->getLine() .' (code : '. $e->getCode() .') :</b> '. $e->getMessage());
                }
            }
                ?>
         </div>
       </div>

编辑
JS 函数以打开选项卡:

function openCity(evt, cityName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(cityName).style.display = "block";
    evt.currentTarget.className += " active";
}

标签: phphtml

解决方案


问题并不完整,但这一切都取决于您如何打开选项卡。

如果它是一个锚点,只需将锚点添加到您的标题功能中,例如

header("location: index.php#tab1");

或实现一个 get 参数,将活动 div(tab) 设置为活动。或者只是触发一个ajax请求并让它在后台完成,所以标签保持活动状态


推荐阅读