从POST中选择查询数组和数组不排队

时间:2015-12-29 21:25:58

标签: php arrays sorting mysqli

当用户输入表单时,我知道如何知道用户可以输入什么,因为数据库中有数百个选项。 我正在使用foreach循环从他们选择的已发布字段获取类别和成本示例:

<td><?php foreach($pcategories as $value){echo "$value <br>";}?></td>

$qty    $pcategories    $cost    $Rate   
1       Bicycles        100      45
7       Auto Parts      200      60
5       Alarm Sys       300      35

然后从下面的查询中选择费率

<?php $connection = mysqli_connect("localhost","root","","customs") or die("Error " . mysqli_error($connection));
      $sql = "SELECT `categories`, `rate`, `elevy`  FROM `lt_products` WHERE `categories` IN ('".implode("','",$pcategories)."')";
               $result = mysqli_query($connection, $sql)or die(mysql_error());
                  while($row = mysqli_fetch_assoc($result)) {?>
                       <?php echo $row["rate"]; ?> <br>
        <?php } ?>

以下问题是查询根据用户投入的类别提取正确的费率 但是费率不符合用户输入类别的顺序。

以上费率实际上应该如下所示,但这就是我超越

$qty    $pcategories    $cost    $Rate   
1       Bicycles        100      35
7       Auto Parts      200      60
5       Alarm Sys       300      45

选择查询似乎是根据表格中的pcategories字段按字母顺序排列。

我不知道解决这个问题的最佳方法是什么,以便实际费率与用户选择的类别相匹配。

任何帮助都会非常感谢你

1 个答案:

答案 0 :(得分:0)

使用DefaultCellStyle.Format功能根据结果在$pcategories

中的位置对结果进行排序
$sql = "SELECT `categories`, `rate`, `elevy`  
        FROM `lt_products` 
        WHERE `categories` IN ('".implode("','",$pcategories)."') 
        ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";