2017-08-06 464 views
2

我有一个Store数组数组。我有一个MySQL数据库,这些商店提交每周报告。我试图设置一个列出左侧所有商店的简单表格,然后根据商店是否已提交周报表提供复选标记或x。检查mysql数组是否存在于数组中

我可以使StoreNumber数组适合表列,因为它应该但很难检查是否存在num_row存储号。我认为我很接近,但也许不是。提前致谢。

代码如下:

<?php 
//set var store as store number 
//check if var store has kir submitted 
//if so, put check. 
//if not, put x. 
//check next store number 

    //connect to the database 
    require("../dbfiles/connect.php"); 

    // Date Formatting for MYSQL 
    if(!empty($_POST['WeekEnding'])){ 
     $WeekEnding = $_POST['WeekEnding']; 

     $WeekEnding = strtotime($WeekEnding); 
     $WeekEnding = date('Y-m-d', $WeekEnding); 
} 
//Array of all stores 
$StoreNumber = array(586, 
7695, 
12510, 
24022, 
24707, 
28373, 
30367, 
30819, 
31396, 
31544, 
33663, 
33475, 
39245, 
47140, 
49647, 
49648, 
51833, 
51833-1, 
57107, 
60641, 
62802, 
297, 
13778, 
26519, 
27055, 
28311, 
31296, 
36438, 
38156, 
48925, 
59288); 

while($StoreNumber[$x] = 0){ 
//query to check for info in table 
    $query = "SELECT * FROM kir1 WHERE WeekEnding = '$WeekEnding' AND storenumber = ' . $StoreNumber[$x] . '"; 
    $response = @mysqli_query($dbc, $query); 
     echo '<style> 
      table { 
       border-collapse: collapse; 
       width: 100%; 
      } 

      th, td { 
       text-align: left; 
       padding: 8px; 
      } 

      tr:nth-child(even){background-color: #f2f2f2} 

      th { 
       background-color: #4CAF50; 
       color: white; 
      } 
      </style>'; 
     echo '<table> 

     <tr><th><b>Store Number</b></th> 
     <th><b>KIR</b></th></tr>'; 

//If connected, build table, then row out each response 
    if($response) { 
     $count = mysqli_num_row($response); 
     if($count > 0){ 
      echo "<tr><td>" . $StoreNumber[$x] . "</td><td> &#x2714; </td></tr>"; 
      } else { 
      echo "<tr><td>" . $StoreNumber[$x] . "</td><td> &#x2717; </td></tr>"; 
      } 
     } 
    } 
?> 
+0

看看mysqls工作'IN()' – rtfm

回答

0

你可以简单地用mysql IN()条款

$StoreNumber = array(586, 
7695, 
12510, 
24022, 
24707, 
28373, 
30367, 
30819, 
31396, 
31544, 
33663, 
33475, 
39245, 
47140, 
49647, 
49648, 
51833, 
51833-1, 
57107, 
60641, 
62802, 
297, 
13778, 
26519, 
27055, 
28311, 
31296, 
36438, 
38156, 
48925, 
59288); 
$StoreNumbers = implode(",", $StoreNumber); 
$query = "SELECT * FROM kir1 WHERE WeekEnding = '$WeekEnding' AND storenumber IN ($StoreNumbers)"; 
//do further operation 

编辑

如果是字符串,你可以用','

$StoreNumbers = "'".implode("','",$StoreNumber)."'"; 
0破灭
+0

你可能需要报价一轮值,因为我认为他们可能是字符串(不知道51833-1) –

+0

我也看到了。但有问题的OP说,'我有一系列商店号码',所以我认为这些都是数字。 :) –

+0

显然,他们是字符串。 – Strawberry

0

使用IN操作它就像OR

$storeNumbers = array(...); 
$query = "SELECT * FROM kir1 WHERE WeekEnding = '$WeekEnding' AND storenumber IN ($storeNumbers)";