Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2015, 16:29   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Как сделать такую выборку и разобрать ее на php

Имеется такое:
Код:
	$sql = mysqli_query($link,"SELECT login FROM register_3 WHERE status =1");
	if ($sql) {
					$rown=array();
					$ch=0;
					while($row = mysqli_fetch_array($sql))
					{
					$rown[$ch]=$row[0];
					$ch++;
					}
Тип поля data=timestamp

Мне нужно найти еще стоблец data, т.е. запрос такой:
Код:
	$sql = mysqli_query($link,"SELECT login,data FROM register_3 WHERE status =1");
Как в условие выборки добавить чтобы data была не позже 70 секунд от текущей?

Такое правильно?:
Код:
$sql = mysqli_query($link,"SELECT login FROM register_3 WHERE status =1 AND data_xod > UNIX_TIMESTAMP() - 70");

Последний раз редактировалось Illusiony; 01.05.2015 в 16:51.
Illusiony вне форума Ответить с цитированием
Старый 01.05.2015, 16:51   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

MySQL функции даты и времени
См. этот блок функций:
Цитата:
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
Andkorol вне форума Ответить с цитированием
Старый 01.05.2015, 17:49   #3
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Не знаю как вывести значение UNIX_TIMESTAMP() из условия выборки mysql чтобы реально узнать что там.

Пока что ничего не получается.

Код:
$sql = mysqli_query($link,"SELECT login FROM register_3 WHERE status =1 AND data_xod > UNIX_TIMESTAMP(NOW()) - 30");
Часовой пояс сервера отличается от моего на -7 часов. В phpmyAdmin я задаю время на-7 часов меньше своего.

Последний раз редактировалось Illusiony; 01.05.2015 в 17:55.
Illusiony вне форума Ответить с цитированием
Старый 01.05.2015, 18:04   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Не знаю как вывести значение UNIX_TIMESTAMP() из условия выборки mysql чтобы реально узнать что там.
Ну ппц просто...
Я ж ссылку дал, нужно только доскроллить до функции UNIX_TIMESTAMP() – и там есть примеры, как получить результат работы каждой из функций.
Andkorol вне форума Ответить с цитированием
Старый 01.05.2015, 18:09   #5
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

получилось вот так:
Код:
$sql = mysqli_query($link,"SELECT login FROM register_3 WHERE status =1 AND data_xod > CURRENT_TIMESTAMP - 30");

Andkorol
, спасибо.

Время проверил путем записи в этот же data.

Задача усложнилась
Код:
$sql = mysqli_query($link,"SELECT 1kol,2kol,3kol FROM $login_next  WHERE   n=LAST_INSERT_ID() AND data  > CURRENT_TIMESTAMP - 70 ");
Пытаюсь сделать select по последней добавленной записи и одновременно чтобы в этой записи data > CURRENT_TIMESTAMP - 70

Ошибок нету, но и результата работы нету.

Так:
Код:
$sql = mysqli_query($link,"SELECT 1kol,2kol,3kol FROM $login_next ORDER BY n DESC LIMIT 1 WHERE   data  > CURRENT_TIMESTAMP - 70 ");
Выдает ошибку перед WHERE

В таблице может быть от одной записи и более

Последний раз редактировалось Stilet; 01.05.2015 в 20:37.
Illusiony вне форума Ответить с цитированием
Старый 01.05.2015, 20:38   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Так:
Код:
$sql = mysqli_query($link,"SELECT 1kol,2kol,3kol FROM $login_next ORDER BY n DESC LIMIT 1 WHERE   data  > CURRENT_TIMESTAMP - 70 ");
Выдает ошибку перед WHERE
Потому что в запросе написан бред.
SELECT – смотри порядок аргументов запроса.
Поиск ошибок и отладка
Andkorol вне форума Ответить с цитированием
Старый 01.05.2015, 21:50   #7
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Так вроде правильно:
Код:
$sql = mysqli_query($link,"SELECT 1kol,2kol,3kol FROM $login_next  WHERE  data  > CURRENT_TIMESTAMP - 70 ORDER BY n DESC LIMIT 1 ");
n это автоинкремент

Andkorol, очередной раз спасибо за помощь.
Illusiony вне форума Ответить с цитированием
Старый 02.05.2015, 00:09   #8
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Вопросик. Если имеется таблица с 1 записью без каких либо уникальных полей я не могу поменять значения полей через phpmyadmin простым кликом как на других таблицах.

Почему?
Illusiony вне форума Ответить с цитированием
Старый 02.05.2015, 07:58   #9
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Потому...
Сделей уникальное поле и меняй как хочешь
Иначе откуда муадмину знать какую именно запись хочешь менять, они ж не уникальны
ADSoft вне форума Ответить с цитированием
Старый 02.05.2015, 08:08   #10
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

ADSoft, запись одна, выбора никакого нету, то этой же причине не нужно никакого ключа.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать такую программу? afirat Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2012 17:27
как сделать такую программу?!!!! ITdocer Паскаль, Turbo Pascal, PascalABC.NET 0 19.10.2011 16:27
Как сделать такую вещь? Mr.Qwerty Общие вопросы Delphi 9 01.08.2009 05:17
Как сделать такую программку C++ Kisia Помощь студентам 8 29.04.2009 12:56