В таблице LIST есть элементы (ITEM_NAME), выбранный пользователем (NUM_USER), каждый элемент имеет категорию (CATEGORY). Стол ITEM имеет все возможные предметы (NAME), каждый из которых имеет категорию (КАТЕГОРИЯ)Проверка php/mysql во избежание дублирования записей
Чтобы отобразить все элементы из определенной категории, которых еще нет в списке пользователей, я сначала выбираю все элементы из списка пользователей, затем все элементы из категории, наконец, я различаю массивы для отображения элементов, которые пользователь еще не выбрал.
Приведенный ниже код отображает два массива правильно, но и для третьей части он просто отображает
Array ()
независимо от того, в каком порядке я поставил 2 массивы для дифф. Через пару дней я задаюсь вопросом, есть ли что-то неправильное с моей схемой db - я думаю, что это должен быть простой запрос.
$sqlall="SELECT ITEM_NAME FROM LIST WHERE NUM_USER=23";
$resultall = $conn->query($sqlall);
if ($resultall->num_rows > 0) {
while($row = $resultall->fetch_assoc()) {
$new_array[ $row['id']] = $row;
echo "<br>
".$row["ITEM_NAME"]."";
}
echo "";
} else {
echo "0 results for category $CAT_NAME";
}
echo "<HR>";
$sql2="SELECT NAME FROM ITEM WHERE CATEGORY='2' ORDER BY `ITEM`.`QUANTITY` DESC ";
$result2 = $conn->query($sql2);
if ($result2->num_rows > 0) {
while($row = $result2->fetch_assoc()) {
$new_array2[ $row['id']] = $row;
echo "<br>
".$row["NAME"]."";
}
echo "";
} else {
echo "0 results for category $CAT_NAME";
}
echo "<HR>";
$remaining = array_diff($new_array, $new_array2);
print_r($remaining);
Это работает отлично. Спасибо миллион –
Добро пожаловать :) –