繁体   English   中英

提交表单并在一个字段中搜索其他 3 个按钮后,如何在浏览器中保存或保留信息/状态

[英]How do I save or keep information/state in the browser after submitting form and searching with one field for 3 other buttons

在我的代码中,我首先使用选择列表进行过滤,用户可以选择一个或多个选项,然后提交,并从数据库中过滤一个或多个事件以显示信息。 然后用户可以在搜索字段中输入日期和按钮 =、<、> 以相应地显示带有日期的事件。 我正在使用 PHP、MYSQL、HTML 执行此操作。现在我希望当用户按下按钮时 =,> 显示具有该日期的事件(我已经完成),但是当用户继续并添加另一个日期时 <例如,两个事件都会显示,但不会删除第一个事件。 所以我想在日期之间获取事件,因此无论用户输入的过滤器如何保留它,都不要在用户按下另一个按钮时重置它。 我可以使用 PHP 或 JS 来做到这一点吗? 这是我的输入和按钮

'

 <input type= "submit" name="submit" value="Select option" /> 
 <input type="text" name="search"   placeholder="Search Date">
 <button type="submit" name="equal" title="Equal to this date">=</button>
 <button type="submit" name="smaller" title="Less than this date"><</button>
 <button type="submit" name="bigger" title="Greater than this date">></button>

选择列表后,这是按钮的另一部分

if(isset($_POST['equal'])) 
 {
   $search = mysqli_real_escape_string($conn,$_POST['search']);
   $event .= " AND date LIKE '%$search%' ";
 }
if (isset($_POST['smaller'])) 
 {
   $search = mysqli_real_escape_string($conn, $_POST['search']);
   $event .= " AND DATE(date) < '$search'";
 }

if (isset($_POST['bigger'])) 
 {
  $search = mysqli_real_escape_string($conn, $_POST['search']);
  $event .= " AND DATE(date) > '$search'";
 }

我尝试使用 <input type="hidden" 来回应我的搜索,但这隐藏了价值,我真的不知道如何使用它以及它是如何工作的。 我将不胜感激任何帮助,谢谢。

这是日期等于一个值的药丸

  <?php
  if(isset($_POST['events']) && isset($_POST['equal']) &&                !empty($_POST['search'])) 
{
?>
<span class="slds-pill slds-pill_link" id="myP" >
<a href="#" class="slds-pill__action" title="">
<span class="slds-pill__label"  >

<input type="hidden" name="condition" value="<?php echo $_POST['search']; ?>" >  
<?php
  {
    echo "=". $_POST['search'];
  }
?>
<script>
 function myFunct() 
 {
    document.getElementById("myP").style.display = "none";
 }
</script>

</span>
</a>
<button class="slds-button slds-button_icon slds-button_icon  slds-pill__remove" title="Remove" type="button" onclick="myFunct()">
<svg class="slds-button__icon" aria-hidden="true">
 <use xlink:href="/assets/icons/utility-sprite /svg/symbols.svg#close"></use>
</svg>
 <span class="slds-assistive-text">Remove</span>
 </button>
</span>

你不能用 javascript 做到这一点你需要在 php 的帮助下用 session 保留你的搜索词

if(isset($_POST['equal'])){ 
$_SESSION["timer"]=array("date"=>$date,"type"=>$type);
//code continuation
}

在第一个查询之后,您可以将其移动到您要使用的页面的顶部

if(isset($_SESSION['timer']) && $_SESSION['timer']){
//Query with data saved in session
}else{
//we can make default definition or blank output
}

附加方法(您可以保留所有数据,而不是保留数据的状况,但这会强制浏览器。)

$g=DB::getRow('SELECT * FROM datas WHERE date=?',array($unixDate));
if($g){$_SEESION["selectData"]=$g;}

注意:不建议在日期查询中搜索,而是发送带有数值的大小查询对性能很重要。

保存数据时翻转日期

$tmspDate  = date("Y-m-d H:i:s");
$unixDate  = strtotime($tmsptarih);

仅使用数值保持日期格式在列表查询中很重要

在您的查询中仅使用 > 或 < 就足够了,为此您只需要采用当前日期和查询的 unix 格式

DB::getRow('SELECT date FROM data WHERE date > ?',array($unixDate));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM