Intereting Posts
Как избежать одиночных кавычек? Как защитить свой сайт от локального включения файлов и внедрения SQL в PHP? Как получить информацию о клиенте из заказа в WooCommerce? php сортировка массива по предопределенному порядку Каковы плюсы и минусы хранения файлов в базе данных? Являются ли PHP короткие теги приемлемыми для использования? Конфигурация PHP. Небезопасно полагаться на настройки часового пояса системы Проверка правильности выражения php Выполнение точной реальной арифметики чисел с помощью PHP Как удалить повторяющиеся значения из многомерного массива? session_start (): Не удалось инициализировать модуль памяти: memcache (путь: / var / lib / php5) в /usr/share/phpmyadmin/libraries/session.inc.php в строке 81 Обновите поле MySql (если поле не пустое, перейдите к следующему) Как загружается mt_rand PHP? Разделить текст на отдельные слова Получить последний идентификатор вставки с доктриной 2?

Внутренний цикл не работает

Это код с веб-страницы моего проекта. Здесь я хочу отображать выбранные пользователем категории, а затем показывать свои объекты, относящиеся к категориям. Там пользователи могут иметь более одной категории, и это не проблема. Я могу напечатать все эти категории в моем первом цикле while. Проблема в том, что когда я пытаюсь напечатать объекты, в результате они показывают только одну строку, но в каждой категории есть больше предметов. Может ли кто-нибудь сказать мне, что происходит?

Это мой код.
Примечание. Оба запроса работают правильно. Я попробовал те, которые используют клиентскую программу mysql.

<?php require_once ('../../includes/config.inc.php'); require_once( MYSQL1 ); $q = "SELECT institute_category.category_id, category_name FROM institute_category INNER JOIN category ON institute_category.category_id = category.category_id WHERE institute_category.institute_id = $instituteId"; $r = mysqli_query( $dbc, $q); while ( $row = mysqli_fetch_array ( $r, MYSQLI_ASSOC) ) { $categoryId = $row['category_id']; $category = $row['category_name']; echo '<fieldset class="alt"> <legend><span>Category : <em style="color: red;">' . $category . '</em></span></legend>'; $qy = "SELECT category_subject.category_id, category_subject.subject_id, subjects FROM category_subject INNER JOIN category ON category_subject.category_id = category.category_id INNER JOIN subject ON category_subject.subject_id = subject.subject_id WHERE category_subject.category_id = $categoryId"; $result = mysqli_query( $dbc, $qy); $c = $i = 0; echo '<table class="form_table" ><tr>'; while($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )){ // if remainder is zero after 2 iterations (for 2 columns) and when $c > 0, end row and start a new row: if( ($c % 2) == 0 && $c != 0){ echo "</tr><tr>"; } echo '<td width="50%"><input type="checkbox" name="subject[]" value="' . $row['category_id'] . ":" . $category . ":" . $row['subject_id'] . ":". $row['subjects'] . '" />&nbsp;&nbsp;' . $row['subjects'] . '</td>' . "\n"; $c++; } // while.. // in case you need to fill a last empty cell: if ( ( $i % 2 ) != 0 ){ // str_repeat() will be handy when you want more than 2 columns echo str_repeat( "<td>&nbsp;</td>", ( 2 - ( $i % 2 ) ) ); } echo "</tr></table>"; } echo '</fieldset>'; ?> 

Solutions Collecting From Web of "Внутренний цикл не работает"

Превращение моего комментария в ответ:

Посмотрев только на ваш код, я вижу, что вы используете переменную $row как для внешнего цикла, так и для внутреннего цикла. Попробуйте переименовать переменную $outerRow внешнего цикла в $outerRow и переменную $outerRow из внутреннего цикла в $innerRow . Это может быть первая проблема. Это может относиться и к другим переменным, например, к переменной $result .

имя переменной пользователя для внутреннего цикла $result и $row например $inresult и $inrow

Поскольку в обоих циклах вы использовали одну и ту же переменную $row во inner loop $row[] может reference of outer one и в этом результирующем наборе переменная, которую вы ищете, отсутствует, чтобы не печатать ничего из внутреннего цикла , пожалуйста, измените переменную внутреннего или внешнего цикла.