@alexstassov
19 лет

Запрос MySQL в PHP массив и как работать с in_array?

Вообщем вывожу всех пациентов из таблицы patients таким банальным образом :
<tbody> <?php  $result = mysqli_query($con,"SELECT * FROM patients ") 
            or die(mysqli_error());         
             ?> 
       <?php    while($row = mysqli_fetch_assoc( $result )) { ?>                                 <tr>
                                            <td><a href="view_patient.php?id=<?php echo $row['card_id']; ?>"><?php echo (" ".$row["card_id"]." "); ?></a></td>
                                            <td><a href="view_patient.php?id=<?php echo $row['card_id']; ?>"><?php echo (" ".$row["fio"]." "); ?></a></td>
                                            <td><a href="view_patient.php?id=<?php echo $row['card_id']; ?>"><?php echo (" ".$row["adress"]." "); ?></a></td>
                                            <td><a href="view_patient.php?id=<?php echo $row['card_id']; ?>"><?php echo (" ".$row["phone"]." "); ?></a></td>
                                            <td><a href="view_patient.php?id=<?php echo $row['card_id']; ?>">Посмотреть</a></td>
                                            <td><a href="del_patient.php?id=<?php echo $row['card_id']; ?>">Удалить</a> <a href="edit_patient.php?id=<?php echo $row['card_id']; ?>" rel = "facebox">Изменить  </a></td>

                                        </tr><?php }; ?>
                                    </tbody>


Среди выводимых пациентов есть и такие у кого нету ни одного приёма в таблице priem. На mysql определяю их таким образом
SELECT * FROM patients WHERE card_id NOT IN (SELECT card_id FROM priem)

mysql выводит мне их нормально. Однако как обьяснить PHP чтоб он при выводе красил их в красный шрифт. Тут собственно получаеться два вопроса : 1. В моём случаи надо объединить 2 запроса в один ? Если да то как подскажите подалуйста. 2. И потом как сказать PHP (как поставить условие, глядя на что) чтоб он покрасил их в красный цвет.

Был бы благодарен за помощь дорогие друзья

PS : Один хороший человек посоветовал так : результат запроса
SELECT card_id FROM patients WHERE card_id NOT IN (SELECT card_id FROM priem)
поместить в массив $aNoPriem. У вас будет массив ид пользователей без приема. А уже при выводе пациентов проверять in_array($row['card_id'], $aNoPriem) и красить строку красным.
Только вот понятия не имею как. Хочу сделать так но не знюа насколько он правильный.
if (in_array($row['card_id'], $aNoPriem)) { echo "<Цвет шрифта красный>"; }

Пожалуйста поправьте ошибки был бы благодарен
  • Вопрос задан
  • 595 просмотров
Пригласить эксперта
Ответы на вопрос 2
search
@search
мама говорит что я особенный
Давно уже не писал SQL запросов, так что сильно не пинайте, если не работает.

SELECT patients.*, IF(grouped_priem.card_id IS NULL, 0, 1) AS has_priem FROM patients LEFT JOIN (SELECT card_id FROM priem GROUP BY card_id) AS grouped_priem ON patients.card_id = grouped_priem.card_id


if ($row['has_priem'] == '1') { echo "<Цвет шрифта красный>"; }
Ответ написан
@imhuman
SELECT p.*, count(pr.card_id) as priem_count FROM patients as p LEFT JOIN priem as pr ON p.card_id=pr.card_id GROUP BY p.card_id


Навскидку так, должно сработать, но вместо p.* лучше определить какие поля тебе действительно нужны
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы