У меня есть код ниже, который захватывает данные из таблицы в зависимости от того, на какой неделе пользователь выбрал, есть только 2 возможных недели на выбор.
Он помещает название рецепта в соответствующую таблицу на основе оператора if, но, похоже, создает странный результат.
Когда когда-либо я пытаюсь просмотреть неделю, которая содержит только данные детали, заполняющие ее пучками данных на неправильные ячейки; посмотреть на этом изображении: «Салат», расположенный в верхнем ряду, должен находиться в «воскресенье»,
Это происходит только тогда, когда таблица неполна.
if(!empty($_POST['selectweek'])) { $selectweek = mysql_real_escape_string($_POST['selectweek']); function ouptutMeal($selectweek, $mealtime, $mealname) { $sqlmeasurement2 = mysql_query("SELECT title, dayid FROM recipe JOIN menu ON recipe.recipeid = menu.recipeid WHERE menu.weekid = '$selectweek' AND menu.mealtimeid = '$mealtime' ORDER BY dayid"); echo "<br/> <table> <td></td> <td><strong>Monday</strong></td> <td><strong>Tuesday</strong></td> <td><strong>Wednesday</strong></td> <td><strong>Thursday</strong></td> <td><strong>Friday</strong></td> <td><strong>Saturday</strong></td> <td><strong>Sunday</strong></td> <tr> <td><strong>$mealname</strong></td>"; while($info2 = mysql_fetch_array( $sqlmeasurement2 )) { if($info2['dayid'] == '1') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '2') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '3') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '4') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '5') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '6') { echo ' <td>', $info2['title'], '</td>'; } else { echo ' <td>', $info2['title'], '</td>'; } } echo '</tr> </table>'; } ouptutMeal($selectweek, 1, 'Breakfast'); ouptutMeal($selectweek, 2, 'Lunch'); ouptutMeal($selectweek, 3, 'Evening Meal'); ouptutMeal($selectweek, 4, 'Pudding'); ouptutMeal($selectweek, 5, 'Supper & Snacks'); }
Сделайте оператор if, чтобы узнать, существует ли значение, если нет, тогда
<td>& nbsp;</td>
поэтому он правильно заполняет таблицу.
Вы также можете объявить переменные пустыми до запуска запроса, например:
if(!empty($_POST['selectweek'])) { $info1 = ''; $info2 = ''; $selectweek = mysql_real_escape_string($_POST['selectweek']); function ouptutMeal($selectweek, $mealtime, $mealname) { $sqlmeasurement2 = mysql_query("SELECT title, dayid FROM recipe JOIN menu ON recipe.recipeid = menu.recipeid WHERE menu.weekid = '$selectweek' AND menu.mealtimeid = '$mealtime' ORDER BY dayid"); echo "<br/> <table> <td></td> <td><strong>Monday</strong></td> <td><strong>Tuesday</strong></td> <td><strong>Wednesday</strong></td> <td><strong>Thursday</strong></td> <td><strong>Friday</strong></td> <td><strong>Saturday</strong></td> <td><strong>Sunday</strong></td> <tr> <td><strong>$mealname</strong></td>"; while($info2 = mysql_fetch_array( $sqlmeasurement2 )) { if($info2['dayid'] == '1') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '2') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '3') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '4') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '5') { echo ' <td>', $info2['title'], '</td>'; } elseif($info2['dayid'] == '6') { echo ' <td>', $info2['title'], '</td>'; } else { echo ' <td>', $info2['title'], '</td>'; } } echo '</tr> </table>'; } ouptutMeal($selectweek, 1, 'Breakfast'); ouptutMeal($selectweek, 2, 'Lunch'); ouptutMeal($selectweek, 3, 'Evening Meal'); ouptutMeal($selectweek, 4, 'Pudding'); ouptutMeal($selectweek, 5, 'Supper & Snacks'); }