php - 我想使用 PHP 和 MySQL 对我选择的数据进行过滤

标签 php mysql

我需要在 HTML 表中显示从数据库获取的数据。

我必须使用 INNER JOIN 选择两个表:table1table2

这是我的查询:

$sql="SELECT * FROM `cdr` INNER JOIN `clients`
ON `cdr`.`dst`=`clients`.`mobile`
WHERE
DATE_FORMAT(calldate,'%m/%d/%Y')='$calldate' OR 
src='$src'
dst='$dst' OR
disposition='$disposition' OR
bitrix_id='$btx_id' OR 
lead_name='$lead_name' OR
agent='$agent'
ORDER BY DATE_FORMAT(calldate,'%m/%d/%Y') DESC";

例如,我想创建一个这样的过滤器:选择所有 dispositon=answered on date=8/16/2018 ,dst=xxxxxx

这也是我所有的 PHP 代码:

if(isset($_POST['filter'])){
//Filter by html form
$date=$_POST['calldate'];
$calldate=date("m/d/Y", strtotime($date));
$src=$_POST['src'];
$dst=$_POST['dst'];
$disposition=$_POST['disposition'];   
$r=1;
$total_duration=0;
$btx_id=$_POST['btx_id'];
$lead_name=$_POST['lname'];
$agent=$_POST['agent'];
// test
$sql1="SELECT * FROM `cdr` INNER JOIN `clients`
ON `cdr`.`dst`=`clients`.`mobile`
WHERE 
DATE_FORMAT(calldate,'%m/%d/%Y')='$calldate' OR 
src='$src' OR
dst='$dst' OR
disposition='$disposition' OR
bitrix_id='$btx_id' OR
lead_name='$lead_name' OR
agent='$agent'
ORDER BY DATE_FORMAT(calldate,'%m/%d/%Y') DESC";
$query=mysqli_query($con,$sql1) or die(mysqli_error());
while($row1=mysqli_fetch_array($query,MYSQLI_ASSOC)){
echo " 
<tr>
<td>".$r."</td>
<td>".$row1['bitrix_id']."</td>
<td>".$row1['lead_name']."</td>
<td>".$row1['agent']."</td>
<td>".$row1['calldate']."</td>
<td>".$row1['src']."</td>
<td>".$row1['dst']."</td>
<td>".$row1['disposition']."</td>
<td>".$row1['duration']."</td>
</tr>
 ";
 $r++;
 $total_duration=$total_duration+$row1['duration'];
 }
$durationmin=$total_duration/60;    
echo "
<tr>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>".$total_duration."(".round($durationmin,1)."min)</th>
</tr> 
   ";
}

最佳答案

经过多次尝试解决这个问题,我找到了这个解决方案,感谢大家的建议。 这是 PHP 代码:

<pre>
<?php
/********************************
-Comments...
-Show Alldata
*********************************************/
if(isset($_POST['filter'])){
//Filter by html form
$date=$_POST['calldate'];
$calldate=date("m/d/Y", strtotime($date));
$date2=$_POST['calldate2'];
$calldate2=date("m/d/Y", strtotime($date2));
$src=$_POST['src'];
$dst=$_POST['dst'];
$disposition=$_POST['disposition'];   
$r=1;
$client=0;
$agent=0;
$durationmin=0;
$total_duration=0;
$btx_id=$_POST['btx_id'];
$lead_name=$_POST['lname'];
$agent=$_POST['agent'];
$last_row=" ";
// test
$sql1 ="SELECT * FROM cdr INNER JOIN clients ON cdr.`dst`=`clients`.`mobile`";

$at_least_one = false;
$first_date=false;

if($date){
    $sql1.="where DATE_FORMAT(calldate,'%m/%d/%Y')>='$calldate'";
    $first_date=false;
    $at_least_one = true;
    //if we want all calls of any agent in given time
 }
if ($src) {
    if($at_least_one === false){
    $sql1.=" WHERE src='$src'";
  }
  else{
$sql1.=" AND src='$src'";
}
$at_least_one = true;
}
if ($dst) {
    if($at_least_one === false){
    $sql1.=" WHERE dst LIKE '$dst%'";
    }else{
    $sql1.=" AND dst LIKE '$dst%'";
}
  $at_least_one = true;
}
if ($disposition) {
if($at_least_one === false){
    $sql1.=" WHERE disposition='$disposition' ";
}else{
    $sql1.=" AND disposition='$disposition' ";
}
  $at_least_one = true;
}
if ($btx_id) {
if($at_least_one === false){
    $sql1.=" WHERE bitrix_id='$btx_id'";
}else{
    $sql1.=" AND bitrix_id='$btx_id'";
}
  $at_least_one = true;
}

if ($lead_name) {
if($at_least_one === false){
    $sql1.=" WHERE lead_name LIKE '%$lead_name%'";
}else{
    $sql1.=" AND lead_name LIKE '%$lead_name%'";
}
  $at_least_one = true;

}

if ($agent) {
  if($at_least_one === false){
  $sql1.=" WHERE agent LIKE '%$agent%' ";
} else{
  $sql1.=" AND agent LIKE '%$agent%'";
}
}
if ($date2) {
 if($at_least_one === false){
  $sql1.="AND DATE_FORMAT(calldate,'%m/%d/%Y')<='$calldate2'";
} else{
  $sql1.=" AND DATE_FORMAT(calldate,'%m/%d/%Y') BETWEEN '$calldate' AND '$calldate2'";
}
}

$sql1.=" ORDER BY DATE_FORMAT(calldate,'%m/%d/%Y') DESC";

echo "<div style='color:red;font-size:16px;'>".$sql1."</div>";
$query=mysqli_query($con,$sql1) or die(mysqli_error($con));
while($row1=mysqli_fetch_array($query,MYSQLI_ASSOC)){
     echo " 
            <tr>
                 <td>".$r."</td>
                 <td>".$row1['bitrix_id']."</td>
                 <td>".$row1['lead_name']."</td>
                 <td>".$row1['agent']."</td>
                 <td>".$row1['calldate']."</td>
                 <td>".$row1['calldate']."</td>
                 <td>".$row1['src']."</td>
                 <td>".$row1['dst']."</td>
                 <td>".$row1['disposition']."</td>
                 <td>".$row1['duration']."</td>
            </tr>
           ";
           $r++;
           $total_duration=$total_duration + $row1['duration'];

  }
$durationmin=round($total_duration/60,1);   
echo "<tr>
      <th>&nbsp;</th>
         <th>&nbsp;</th>
         <th>(".$r.")Times Called This Client</th>
         <th>(".$r.")Total Calls From This Agent</th>
         <th>(".$r.")Total Calls on This Date</th>
         <th>&nbsp;</th>
         <th>&nbsp;</th>
         <th>(".$r.")Total Calls To This Number</th>
         <th>&nbsp;</th>
         <th>".$total_duration."(".round($durationmin,1)."min)</th>
      </tr> ";
}
?>

关于php - 我想使用 PHP 和 MySQL 对我选择的数据进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898592/

相关文章:

php - 我的脚本中是否存在内存泄漏,或者是另一个罪魁祸首?

PHP MySQL 插入问题

php - PHPExcel 的问题

php - Paypal REST API 不会在 Paypal 沙盒或实时网站上显示付款金额

MYSQL查询上次列根据时间戳有不同的值

mysql - 如何重复值、计数和分组?

Mysql Concat 不为空值

mysql - sql查询获取最新的调用

php - 通过 PHP 脚本将 JSON 文件插入 MySQL

javascript - 使用 PHP 和 AJAX 处理输入