PHP: $result=mysql_query("SELECT date FROM table WHERE date='2018-12-25' GROUP BY date"); while($row=mysql_fetch_array($result)): if(isset($row2['ruz'])){ echo ('не пусто');} else { echo ('пусто');} endwhile; Если в базе есть дата 2018-12-25 то echo показывает 'не пусто'... Если в базе нету дата 2018-12-25 то echo не чего не показывает... Помогите пожалуйста! Спасибо!
if ($result) { if ($result->num_rows){ echo 'Не пусто'; } else { echo 'Пусто'; } } else { echo 'Ошибка подключения'; }
А в чем собственно вопрос? Сложилось такое впечатление что ты просто описал то условие, которое у тебя должно выполниться и оно написано. И как бы mysql_query уже устарел mysqli или PDO
@Искандар, расскажи, что должен возвращать запрос и для чего это. Узнать наличие даты в бд ради самого узнавания наличия как-то непонятно. Да ещё и группировка слегка вымораживает в данном контексте. Может там сортировка нужна, хотя и она там не пришей кобыле хвост.
@Искандар неужели не работает? PHP: $result = mysqli_query("SELECT date FROM table WHERE date='2018-12-25'"); if($result) { if ($result->num_rows){ echo 'Не пусто'; } else { echo 'Пусто'; } } else { echo 'Ошибка подключения'; }
попробую объяснить: у меня на странице показывает таблицу с условием даты. допустим я выбираю дату '2018-12-25', если в базе есть данные по этим датам, то показывает в таблицу... Если нет такая дата, автоматом записывает данные из другой таблицы... И потом показывает таблицу с этим датом... Надеюсь я смог объяснить)
Вся задача решается на уровне СУРБД. Хотя и непонятно зачем две таблицы и пляски с бубном. Позже напишу запрос.
@Искандар чую ты дату не правильно указываешь, напиши ка: PHP: $result = mysqli_query("SELECT date FROM table WHERE Month(Date) = Month('2018-12-25')"); if($result) { if ($result->num_rows){ echo 'Не пусто'; } else { echo 'Пусто'; } } else { echo 'Ошибка подключения'; } --- Добавлено --- И странно что ты тащишь только дату из таблицы, а покажи ка структуру твоих таблиц =)
Получается своего рода синхронизация таблиц или слияние, но при условии, что если к этой дате не обратились, то и хрен с ней, а если обратились, но ее в основной таблицы нет, то значит следует ее подтянуть. Я это как-то так понимаю. И проблема скорее всего именно в этом моменте: По сути ты переносишь данные из таблицы в таблицу и на этом всё, но ведь нужно теперь повторно сделать запрос к уже перенесенным данным либо работать с переносимыми данными, В любом случае, если тех данных в главной таблице нет, тебе нужен другой запрос к другой таблице. В любом случае, если я не ошибаюсь, как уже писали выше, это все можно сделать на уровне БД.
Спойлер: Вот страница: HTML: <?php include "bd_connect.php"; $ruz = $_GET['ruz']; $result=mysql_query("SELECT * FROM seh WHERE ruz='$ruz'"); $result2 = mysql_query("SELECT ruz FROM seh WHERE ruz='$ruz'"); if($result2) { if ($result2->num_rows){ echo 'Не пусто'; } else { echo 'Пусто'; } } else { echo 'Ошибка подключения'; } //$query = "INSERT INTO seh (ruz, nomi_mahsulot, prihod, rashod) SELECT '$ruz', nomi_mahsulot, 0, 0 FROM sklad_nomgui_mahsulot"; //var_dump($query); //$res = mysql_query($query); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="POST"> <table> <tr> <?php while($row=mysql_fetch_array($result)):?> <td><?php echo $row[2];?></td> <td><input type="number" name="prihod[]" value="<?php echo $row[3];?>"/></td> <td><input type="number" name="rashod[]" value="<?php echo $row[4];?>"/></td> </tr> <?php endwhile;?> </table> </form> </body> </html>
Разрешите выложить другой код. Суть тот же. HTML: <?php include "bd_connect.php"; $ruz = $_POST['ruz']; if ( $ruz == '' ) $ruz = date('Y-m-d'); $result=mysql_query("SELECT ruz FROM seh WHERE ruz='$ruz'"); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="POST"> <input type="date" name="ruz" required value=<?php echo $ruz;?> onChange="document.forms[0].submit()"><hr> <table> <tr> <?php while($row=mysql_fetch_array($result)):?> <td><?php echo $row[0];?></td> </tr> <?php endwhile;?> </table> </form> </body> </html> Через input выбираю разные даты, если в базе есть табличка показывает. Всё верно. Если в базе нету данные с такими датами как сделать чтобы автоматом записывалась в базу и сразу вставить в таблицу?
как то так PHP: $ruz = date('Y-m-d'); $result = mysqli_query("SELECT date FROM table WHERE ruz = '".$ruz."'"); if($result) { if ($result->num_rows){ echo 'Не пусто'; } else { mysqli_query("INSERT INTO table (ruz) VALUES ('".$ruz."')"); } } else { echo 'Ошибка подключения'; }
Нет, не правильно работает. постоянно срабатывает строка 13(((. (хот дата совпадает, хот нет, всё равно записывает данные...) Мне нужно если в базе есть такая дата, то не записываем.
Спойлер: first PHP: SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- База данных: `test` -- -- -------------------------------------------------------- -- -- Структура таблицы `first` -- CREATE TABLE `first` ( `f_id` int(11) NOT NULL, `f_date` date NOT NULL, `f_data` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Дамп данных таблицы `first` -- INSERT INTO `first` (`f_id`, `f_date`, `f_data`) VALUES (1, '2018-12-23', 'запись существует'), (2, '2018-12-24', NULL); -- -- Индексы сохранённых таблиц -- -- -- Индексы таблицы `first` -- ALTER TABLE `first` ADD PRIMARY KEY (`f_id`); -- -- AUTO_INCREMENT для сохранённых таблиц -- -- -- AUTO_INCREMENT для таблицы `first` -- ALTER TABLE `first` MODIFY `f_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; COMMIT; Спойлер: second PHP: SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- База данных: `test` -- -- -------------------------------------------------------- -- -- Структура таблицы `second` -- CREATE TABLE `second` ( `s_id` int(11) NOT NULL, `s_date` date NOT NULL, `s_data` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Дамп данных таблицы `second` -- INSERT INTO `second` (`s_id`, `s_date`, `s_data`) VALUES (1, '2018-12-24', 'тоже не пусто'); -- -- Индексы сохранённых таблиц -- -- -- Индексы таблицы `second` -- ALTER TABLE `second` ADD PRIMARY KEY (`s_id`); -- -- AUTO_INCREMENT для сохранённых таблиц -- -- -- AUTO_INCREMENT для таблицы `second` -- ALTER TABLE `second` MODIFY `s_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; COMMIT; Вот таким запросом можно решить задачу ничего не перезаписывая: PHP: SELECT IFNULL(`f_data`,( SELECT `s_data` FROM `second` WHERE `s_date`='2018-12-24' LIMIT 1)) AS `data` FROM `first` WHERE `f_date`='2018-12-24' Это не готовое решение задачи, это всего лишь пример.
Пример выше требует наличия даты в первой таблице, даже если поле с данными NULL иначе до вложенного запроса дело не дойдёт.
Походу ТС слинял... значит напишу на всякий случай, хотя в данном контексте задача достаточно странная если вторая таблица выступает в качестве буфера, то обрабатывать её нужно целиком, а не дёргать по строке Пример запроса который выбирает из второй таблицы дату если ёё нет в первой таблице, и который можно использовать в качестве вложенного: PHP: SELECT * FROM `second` WHERE `s_date` = '2018-12-24' AND NOT EXISTS ( SELECT * FROM `first` WHERE `f_date` = '2018-12-24')
Добрый ночи! Я очень извиняюсь, по ходу я не правильно объяснил ( PHP: $result = mysql_query("SELECT ruz FROM seh WHERE ruz = '$ruz' limit 1"); while($row=mysql_fetch_array($result)): $a = $row[0]; if(empty($a)) { echo 'пусто'; } else { echo 'не пусто'; } endwhile; Когда переменные $a совпадает с данными БД, тогда всё ок. То есть echo показывает "не пусто". Если $a не совпадает с данными БД, нечего не происходить. Мне нужно если не совпадает, echo должно показать "пусто". Вот всё что я хочу. всю голову сломал. Пе пойму как это делать? Я не силён в PHP. Простите что я мучаю Вас. Но я надеюсь на Вашу помощь. Спасибо!