Ошибка с смещением строки, как решить?
Хочу сделать на своем сайте вывод правил которые разделены по категориями(главам), уже настроил таблицу и все такое, пытаюсь вывести заранее добавленное правило в БД и возникает ошибка с смещением типа строки
$queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); $rulesCategoryOne = $queryCategoryOne->fetch_assoc(); <?php foreach($rulesCategoryOne as $rule): ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php endforeach; ?> |
$queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); $rulesCategoryOne = $queryCategoryOne->fetch_assoc(); <?php foreach($rulesCategoryOne as $rule): ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php endforeach; ?>
Дополнительно:
Ну вы понимаете что вы $rulesCategoryOne получили ассоциативный массив, потом по нему идете в цикле foreach и в результате у вас в $rule лежат значения столбцов из строки в дб?
Потому что у вас там одна запись
Ее нужно просто вывести без цикла
<span class="rules-intro__text"> <?=$rulesCategoryOne['content']?> </span> |
<span class="rules-intro__text"> <?=$rulesCategoryOne['content']?> </span>
Либо фетчить все строки
$rulesCategoryAll = $queryCategoryOne->fetch_all(); // Я не знаю как у вас называется такой метод!!! <?php foreach($rulesCategoryAll as $rule): ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php endforeach; ?> |
$rulesCategoryAll = $queryCategoryOne->fetch_all(); // Я не знаю как у вас называется такой метод!!! <?php foreach($rulesCategoryAll as $rule): ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php endforeach; ?>
- у меня там 4 записи
- Mercury Effirium, после этой операции в переменной у вас будет ОДНА запись
$rulesCategoryOne = $queryCategoryOne->fetch_assoc();
$rulesCategoryOne = $queryCategoryOne->fetch_assoc();
- Сергей delphinpro, допустим, а как по-другому реализовать?
-
<?php $queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); while($rule = $queryCategoryOne->fetch_assoc()) { ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php } ?>
<?php $queryCategoryOne = $mysql->query("SELECT * FROM rules WHERE category = 1"); while($rule = $queryCategoryOne->fetch_assoc()) { ?> <span class="rules-intro__text"> <?=$rule['content']?> </span> <?php } ?>
Я так понимаю таким образом?
-
$rulesCategoryOne = $queryCategoryOne->fetch_all(MYSQLI_ASSOC);
$rulesCategoryOne = $queryCategoryOne->fetch_all(MYSQLI_ASSOC);
- Сергей delphinpro, да, мне помогло мое решение, спасибо что помогли разобраться с методом fetch_assoc. На не богатом личном опыте не знал что он фетчит только одеу строку, напишите мой код как решение, я отмечу решением как благодарность за то что помогли разобраться!
- Хотя сам смысл переменной $rulesCategoryOne от меня ускользает.
Я правильно понимаю, что там будет еще $rulesCategoryTwo и так далее? - и не забываем про htmlspecialchars()
- Mercury Effirium, не надо ваше решение писать, это говнокод.
А решением я и сам отмечу - Ипатьев, да это действительно так, я код переделал все работает, прочитайте мои превидущие комментарии, спасибо вам большое!
- Ипатьев, напиши код который будет лучше, и объясните в чем проблемы у моего кода
- Mercury Effirium, я написал. "прочитайте мои предыдущие комментарии"
- Ипатьев, спасибо, я понял в чем плюсы вашего кода, удачного времени суток!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Чтобы решить проблему с смещением строки в вашем коде, вам следует следовать нескольким шагам:
1. Проверьте отступы: убедитесь, что все строки кода имеют одинаковые отступы. Например, если вы используете отступ в 4 пробела, то все строки кода должны иметь такой же отступ.
2. Используйте правильные символы пробелов: убедитесь, что вы используете только пробелы для создания отступов, а не символы табуляции. Использование комбинации пробелов и табуляции может вызвать смещение строк.
3. Проверьте закрытие скобок и кавычек: убедитесь, что все открывающие скобки и кавычки имеют соответствующие закрывающие. Неправильное закрытие скобок или кавычек также может вызвать смещение строк.
Пример кода с правильным отступом в PHP:
Если после выполнения этих шагов проблема с смещением строк все еще остается, пожалуйста, предоставьте больше информации о вашем коде и конкретной проблеме, чтобы мы могли помочь вам более точно.