Заранее спасибо тем, кто уделит время рассмотрению моего вопроса.Я получаю результаты из таблицы, описывающей деятельность подрядчика.Существует большое количество полей True / False, и я стараюсь отображать только те, которые являются истиннымиЯ создаю массив field_name => field_type и соответствующим образом анализирую отображение.(извиняюсь за большой фрагмент кода.)
$result = $mysqli->query($visitsSQL);
if ( $result->num_rows == 0 ){ // Visit records don't exist
$_SESSION['message'] = "Cannot find any unpaid visits";
header("location: error.php");
}
else { // unpaid visits exist
$fields= array();
while ($finfo = mysqli_fetch_field($result)){
$fields [$finfo->name]= $finfo->type ; //this array holds field names -> field types
} //finish fetching keys and types
echo "<br>";
echo "<br>Begin visit records<br>";
echo "<div class='review_row'> </div>"; //this puts a thin line to separate visits
while ($visit = $result->fetch_assoc()) { //here's where each visit is compiled and sent to screen
echo "<div class='review_row'>"; //this puts a thin line on the bottom to separate visits
foreach ($fields as $k => $v) {
$field_name = $k;
$field_type = $v;
$field_data = $visit[$field_name];
switch ($field_type) {
case 1: //The field is a True / False field
if ($field_data ==1){ //show the field only if the value is set to True
echo "I am a YES/NO field called " . $field_name . " <br>"; //This line is a test
echo "<span style='color: #009999;> - " . $field_name . "</span><br>";
}
break;
case 4: //The field is a double numeric
if ($field_data != null) { //show the field only if the value is set to True
echo "<span style='color: #b38f00';>" . $field_name . "</span> " . $field_data . "<br>";
}
break;
case 253: //A text field
if ($field_data != null) {
echo "<span style='color: #b38f00';>" . $field_name . "</span> " . $field_data . "<br>";
}
break;
case 254: //a Datetime field
if ($field_data != null) {
echo "<span style='color: #b38f00';>" . $field_name . "</span> " . $field_data . "<br>";
}
break;
default: { //field type is not represented above
// do nothing so far I take care of each field type above
}
} //end of switch
} //end of foreach
} //end of while loop for the query results
echo "</div>";
} // конец if / else, определяющий, есть ли записи для отображения
Странные результаты возникают в операторе "switch"где "случай 1".Моя текущая запись теста содержит 7 полей ДА / НЕТ, все значения которых установлены на 1. Они
- Готовые вечерние блюда
- Уборка чистых блюд вечерних блюд
- Покупкидля бакалеи
- Стирать и складывать одежду
- Стирать постельное белье
- Пылесосить ковры
- Подметать кухонный пол
Я должен получить два"echo" для каждого "field_type = 1": (1) мое тестовое эхо и (2) то, что я в итоге хочу отобразить, но по какой-то причине они отображаются поочередно - см. изображение ниже.Я боролся с этим в течение двух дней, пытаясь также выполнить синтаксический анализ «если / потом», но я придумываю результат типа «каждую секунду».
screenshot of output from query
Спасибо за любые мысли или указания.