у меня есть поведение, где я запутался, как я могу решить эту проблему ...PHP/MySQL: SQL заявление из разных столбцов
У меня есть таблица «favcolor» есть 4 колонки с названием «POT1», «pot2», «pot3», «pot4». В этом столбце указан идентификатор напитка.
Когда я выбираю в «selectbox1» («лимонада») напиток: Energy/value = «5». В «selectbox2» («limonade2») Я выбираю напиток: Mezzo/value = "3". Он генерирует этот SQL заявление:
"SELECT * FROM favcolor WHERE pot1= 5 AND pot2= 3" - i get 15 hits.
Теперь я выбираю в "selectbox1" ("Лимонад") напиток: Mezzo/значение = "3". И в «selectbox2» («limonade2») Я выбираю напиток: Energy/value = «5». Теперь это SQL заявление генерируется:
"SELECT * FROM favcolor WHERE pot1= 3 AND pot2= 5" - i get 7 hits.
Но я пытаюсь найти решение, которое я получаю все хиты, где «Энергия» и «Mezzo» существует, независимо от того, появятся ли они в POT1, Pot2, Pot3 или Pot4.
Надеюсь, вы можете помочь мне найти решение этой проблемы.
Для лучшего понимания здесь мой текущий код:
<form method="post"action="./usercolor.php">
<input type="checkbox" id="colorred" name="colorred" value="1"/>red</td>
<input type="checkbox" id="colorblue" name="colorblue" value="1"/>blue</td>
<input type="checkbox" id="coloryellow" name="coloryellow" value="1"/>yellow</td>
<input type="checkbox" id="colorgreen" name="colorgreen" value="1"/>green</td>
<input type="checkbox" id="colorblack" name="colorblack" value="1"/>black</td>
</select name="limonade">
<option value="1">Cola</option>
<option value="2">Fanta</option>
<option value="3">Mezzo</option>
<option value="4">Sprite</option>
<option value="5">Energy</option>
</select>
</select name="limonade2">
<option value="1">Cola</option>
<option value="2">Fanta</option>
<option value="3">Mezzo</option>
<option value="4">Sprite</option>
<option value="5">Energy</option>
</select>
</select name="limonade3">
<option value="1">Cola</option>
<option value="2">Fanta</option>
<option value="3">Mezzo</option>
<option value="4">Sprite</option>
<option value="5">Energy</option>
</select>
</select name="limonade4">
<option value="1">Cola</option>
<option value="2">Fanta</option>
<option value="3">Mezzo</option>
<option value="4">Sprite</option>
<option value="5">Energy</option>
</select>
<input type="submit" value="SEARCH"/>
</form>
Код PHP:
$whereArr = Array();
if (isset($_POST["colorred"]) && $_POST["colorred"]==1) $whereArr[] = "red=1";
if (isset($_POST["colorblue"]) && $_POST["colorblue"]==1) $whereArr[] = "blue=1";
if (isset($_POST["colorgreen"]) && $_POST["colorgreen"]==1) $whereArr[] = "green=1";
if (isset($_POST["coloryellow"]) && $_POST["coloryellow"]==1) $whereArr[] = "yellow=1";
if (isset($_POST["colorblack"]) && $_POST["colorblack"]==1) $whereArr[] = "black=1";
$sql = "SELECT * FROM favcolor WHERE " . implode(" AND ", $whereArr);
if (empty($whereArr)) {
if($_POST["limonade"] > 0) $sql .= ' pot1 = ' . $_POST["limonade"];
if($_POST["limonade2"] > 0) $sql .= ' pot2 = ' . $_POST["limonade2"];
if($_POST["limonade3"] > 0) $sql .= ' pot3 = ' . $_POST["limonade3"];
if($_POST["limonade4"] > 0) $sql .= ' pot4 = ' . $_POST["limonade4"];
}
else {
if($_POST["limonade"] > 0) $sql .= ' and pot1 = ' . $_POST["limonade"];
if($_POST["limonade2"] > 0) $sql .= ' and pot2 = ' . $_POST["limonade2"];
if($_POST["limonade3"] > 0) $sql .= ' and pot3 = ' . $_POST["limonade3"];
if($_POST["limonade4"] > 0) $sql .= ' and pot4 = ' . $_POST["limonade4"];
}
Стол:
User |Red |Blue |Yellow |Green |Black
Klaus |0 |1 |1 |0 |0
Jessy |1 |0 |1 |0 |1
Andy |1 |1 |0 |0 |0
Alex |0 |0 |0 |1 |1
Denis |1 |1 |0 |0 |1
Я думаю, вы ищете ИЛИ вместо И ?? – Naruto
См. Нормализацию. – Strawberry