Как мне лучше это отобразить?

Кажется, мой код работает нормально ... но мне кажется, что нужно скопировать и вставить много кода, подходящего для каждой еды. Я только скопировал и вставил код для двух переменных, но думаете, что должен быть более простой способ?

В настоящее время я показываю блюда в соответствии с «ключевыми словами», которые они могли выбрать, какие из них они предпочитают, через форму. По сути, то, что он делает, - это отображение блюд на основе их предпочтений (которые они заполнили через форму флажка). Кроме того, мне НУЖНЫ переменные для определения слова, например, $ 1 = 'Option1', а также = 1 означает, что пользователь установил флажок.

Если кто-нибудь может мне помочь, я буду очень признателен.

поместите каждое значение еды в массив и пропустите массив и делайте то, что хотите

user8517929 23.03.2018 15:43

Не могли бы вы привести мне пример? Вы имеете в виду - $ foods = array ("", "", ""); поскольку я пробовал это, мне нужны оба B1 = 'яйца', как я могу поместить их все в массив?

Becca 23.03.2018 15:44

Откуда берутся $B1 и $B2? покажи код! Также этот код неверен: if ($B1 = '1'). Должен быть if ($B1 == '1'), такой же для $B2

Adder 23.03.2018 15:44

Непонятно, чего вы в конечном итоге пытаетесь здесь достичь

Patrick Q 23.03.2018 15:45

В таблице РЕЗУЛЬТАТЫ (полученные из предпочтений пользователя) он будет иметь B1 прямо до B6, показывая либо 1, либо 0 для этого пользователя, независимо от того, выбрали он его или нет.

Becca 23.03.2018 15:46

Хорошо покажите код для РЕЗУЛЬТАТОВ - он тоже нуждается в улучшении.

Adder 23.03.2018 15:47

Я собираюсь догадаться, что вам действительно нужно JOIN, две таблицы.

Patrick Q 23.03.2018 15:48

Пожалуйста, обновите вопрос дополнительным кодом и попробуйте написать чистый код, это не хорошая привычка учиться писать плохие ... У вас много ошибок

user8517929 23.03.2018 15:50

Да, но мне нужно написать этот код для КАЖДОГО, это та часть, которую мне нужно сократить? Наверняка должен быть более простой способ?

Becca 23.03.2018 15:50

Так у вас где-то есть $B1=$_POST['1']?

Adder 23.03.2018 15:50

Если вы хотите получить пользователя FoodQuestionnaireResults, у которого есть какой-то идентификатор, и вы хотите, чтобы этот идентификатор был в Recipes, где ключевое слово = что-то. Я думаю, что короткий путь был бы: SELECT * FROM FoodQuestionnaireResults WHERE userid='$userid' AND userid IN (SELECT id FROM Recipes WHERE keyword = $keyword) А потом делайте то, что хотите

user8517929 23.03.2018 15:56

Вы знаете, что ваш запрос FoodQuestionnaireResults на самом деле вообще не выполняется, верно? Вы назначаете его $dbQuery, а затем немедленно перезаписываете его другим запросом. Так что, если «Мой код работает нормально» действительно верно, то я не уверен, что вы понимаете, что на самом деле делаете.

Patrick Q 23.03.2018 16:11

Патрик: Код не работает. Но он ищет информацию о том, как замкнуть это в петлю.

Adder 23.03.2018 16:14

@Adder Весь вопрос спорный, если OP не понимает, что происходит, потому что, если вы не понимаете, вы не можете объяснить другим (нам).

Patrick Q 23.03.2018 16:17

@ user1251007 Можно рекомендовать публикацию OP в CR, но в будущем, пожалуйста, не используйте Code Review как повод для закрытия вопроса. Оцените запрос и используйте причину, например слишком широкий, в первую очередь основанный на мнении и т. д. Затем вы можете указать OP, что он может быть опубликован в Code Review, если это по теме. См. Раздел Чего не следует делать в этот ответ на Руководство по обзору кода для пользователей Stack Overflow

Sᴀᴍ Onᴇᴌᴀ 23.03.2018 16:24

@SamOnela: Спасибо за любезное объяснение! Я учту это в будущем.

user1251007 23.03.2018 16:34
php.net/manual/en/pdo.prepared-statements.php
mickmackusa 24.03.2018 04:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
17
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать цикл для доступа к своим переменным и получения рецептов для каждой. Было бы лучше поместить их в массив, но я не делал этого изменения, так как не знаю, откуда вы берете $ B1.

include ("dbConnect.php");
  $A1 = ("cheese");
  $A2 = ("yoghurt");
  $A3 = ("egg");
  $A4 = ("fruit");
  $A5 = ("cereal");
  $A6 = ("oatmeal");

$dbQuery=$conn->prepare("select * from FoodQuestionnaireResults where UserID=$UserID");
$dbQuery->execute();

while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) 
{
    for($i = 1; $i<=6; ++$i) {
        $bname = "B$i";
        $$bname = $dbRow[$bname];
    }
}

for($i = 1; $i<=6; ++$i) {
    $aname = "A$i";
    $bname = "B$i";
    if ($$bname == '1') 
    {
        $dbQuery=$conn->prepare("select * from Recipes where Keyword = '".($$aname)."'");
        $dbQuery->execute();

        while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) 
        {
                echo "<br><br><h4>".$dbRow["Name"]."</h4><br>"."<br><img src=Breakfast/".$dbRow['Picture']."' width='150' height='150' />"."<br><br>".$dbRow['Instructions'];
         }
    } else {
        echo "";
    }
 }

Я использую странный, но рабочий код, например $$aname, для доступа к $A1 и $A6 и $$bname для доступа к $B1 и $B6.

Измените HTML на:

<h1>Question 1</h1><br>
 </br>
  <h4> What types of food do you like to eat for Breakfast?</h4><br>
  <input type = "checkbox" name = "B1" value = "Cheese">Cheese
  <input type = "checkbox" name = "B2" value = "Yoghurt" >Yoghurt
  <input type = "checkbox" name = "B3" value = "Eggs">Eggs
  <input type = "submit" name = "submit" value = "save" class = "button-form"></center></br>

Он ничего не возвращает мне сюда. Я также установил для всех пользовательских результатов значение 1, чтобы увидеть.

Becca 23.03.2018 16:17

$ B1 .. $ B6 - это результаты пользователей?

Adder 23.03.2018 16:23

приведенный выше код возвращает: Примечание: неопределенная переменная: B1 в /homepages/28/d706589850/htdocs/breakfast.php в строке 136 A1-A6 нужно определить как B1-B6, но все равно ничего не возвращает?

Becca 23.03.2018 16:23

Да, я спросил $ B1 .. $ B6, какой у вас был код для них, но вы не добавили информацию об этом в свой вопрос.

Adder 23.03.2018 16:24

см. отредактированный выше.

Becca 23.03.2018 16:31

Я его отредактировал, теперь он должен быть готов.

Adder 23.03.2018 16:49

$ name не определено?

Becca 23.03.2018 16:58

Мой рабочий день подходит к концу. Так что я не могу отладить это с вами. Используйте echo $B1; и print_r($dbrow);, чтобы увидеть, какие части вашего кода работают, а какие нуждаются в улучшении.

Adder 23.03.2018 17:01

Хотя $ name нигде не определено? Если бы вы могли просто сказать мне, что означает $ name?

Becca 23.03.2018 17:03

Должен быть $bname

Adder 23.03.2018 17:05

Теперь это работает отлично! СПАСИБО за вашу помощь @Adder

Becca 25.03.2018 12:18

Другие вопросы по теме