使用带fetch_array的switch语句

时间:2014-04-27 13:15:39

标签: php mysql

好的,我创建了一个简单的页面,可以让我计算在我店里工作的领导者的客户满意度。基本上,我有一个mysql数据库,其中包含在那里工作的所有领导者的名字,以及他们工作的日期和时间。我还有一个数据库,其中包含客户访问的日期,时间以及他们访问的评级。

我创建了一个查询行为,当我查询领导者的名字时,它会返回客户在特定领导者工作的日期和时间提交的所有评分/分数。

客户通常会将他们的体验评为1 - 10,其中10是最好的。我想把那些得分的回答转换成一个简单的字母系统,其中9-10的得分等于“G”表示良好,7-8等于“O”表示ok,而低于6的任何表示等于“B”表示不好。< / p>

使用mysqli_fetch_array和switch语句,我试图将数字转换为字母。但是,我似乎没有从中得到任何结果。我已经测试了查询和fetch_array,如果我自己使用它们(没有switch语句),它们会产生正确的评分响应(即Paul的得分10,9,9)。但是当我插入switch语句时,它们不会转换为字母,屏幕上也不显示任何内容。 问题:我使用此switch语句或mysqli_fetch_array的方式有问题。我对编码很陌生,所以我可能会误解它们的使用方式。

这是php

<html>
<body>


<?php 

include("db.php");

echo $_POST['searched']; // temp. check to see if post came through
echo '<br>';

$searched = $_POST["searched"]; // create variable to put searched name in query.
$good = array(); //create array to store good scores
$ok = array(); //create array to store ok scores
$bad = array(); //create array to store bad scores


// Search the database and retrieve all ratings That matches a managers name

$query = "SELECT leaders.name, responses.score
     FROM leaders
     INNER JOIN responses
     ON leaders.shift_date = responses.visit_date
     AND leaders.shift_time = responses.visit_time
     AND leaders.name = '$searched' ORDER BY leaders.id;";    


$result = $db->query($query); //store that query

//iterate through result and grab each score
while ($row = $result->fetch_array()){ // place scores into an array
// use a switch statement to change numbered system to lettered
    switch($row[1]) {
        case 10:
        case 9:
            array_push($good, "G");
        break;

//echo $row[1] . ' '; temp check to ensure array call was successful
echo $good[0] . ' ';
    }
}
//echo "<script>window.location = 'http://localhost/~baronjon/ilotf/main.php'</script>";

 ?>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

您必须打开阵列的特定字段,而不是整个阵列。

试试这个

//iterate through result and grab each score
while ($row = $result->fetch_array()){ // place scores into an array
// use a switch statement to change numbered system to lettered
    switch($row['score']) {
        case 10:
        case 9:
            array_push($good, $row);
            break;
        case 8:
        case 7:
            array_push($ok, $row);
            break;
        default:
            array_push($bad, $row);

    } // endswitch
}

print_r( $good );
print_r( $ok );
print_r( $bad );

现在你有了3个新数组,每个数组都包含属于3个类别的结果行。

PS不要使用row [0]语法,因为只要更改select语句并将另一个字段添加到字段列表的前面,您就会在交换机中测试错误的字段。