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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.07.2010, 12:38   #11
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Я что то не понял, а зачем вообще нужно разбираться с форматом датой и временем, сравнений ведь уже никаких нет.
- разбираться с этим нужно потому,что вот это
Цитата:
SELECT * FROM `anketa` WHERE `date` = date(NOW())
работает исключительно потому,что разработчиками учтены такие вот "форс-мажоры" в коде...
НО - как я уже говорил выше - учитесь писать простой,правильный и понятный код - в будущем это сэкономит вам(и не только) кучу времени и нервов.

Что касается этого:
PHP код:
$current_time time("H:i"); 
- я по-прежнему советую никому этого не показывать...почитайте описание функции time()

Вообще - скачайте себе толковый мануал по PHP со справочником функций - полезнейшая вещь,всегда можно посмотреть,что нужно той или иной функции для корректной работы.

Ещё совет - примените-таки дополнительное поле `sent`, как я описывал выше - cron cron-ом - но всякое с ним бывает,а отметки в Базе всегда дадут вам понять,какие анкеты вы отправили,а какие - ещё нет.

Кстати - mail() также требует 3 параметра,а не 2 как у вас:
Цитата:
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
Andkorol вне форума
Старый 29.07.2010, 22:07   #12
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию

можно узнать этот код правильный?:

PHP код:
 <?php 
 
include "config.php"
 
$SelectQuery="SELECT * FROM  `anketa` WHERE `sent`=0 `date` = date(NOW(),'%m-%d-%Y') AND DATE_FORMAT(time,'%H%i') = DATE_FORMAT(NOW(),'%H%i')" 
  
$SelectReslut mysql_query($SelectQuery); 
  
//сколько записей получили
  
$Count mysql_num_rows($SelectReslut); 
  for (
$i=1$i<=$Count$i++) { 
    
//получаем очередную строку
    
$Fetch mysql_fetch_array($SelectReslut); 
    
//выводим результат
    
echo $Fetch['text']." : ".$Fetch['email']." : ".$Fetch['time']." : ".$Fetch['date']; 
  
// $date - заведомо известная переменная
  // $time - заведомо известная переменная
//(взято из базы в формате ГГГГ-ММ-ДД)
//(взято из базы в формате ч-м)

$to $Fetch['email']; 
 
$message .=" Текст письма : ".$text

 if(
mail($to$subject,$message)){ 
    echo 
$query "update `anketa` set `sent`=1 where `id`='.$id";
}  
else{  
    echo 
"есть некоторые ошибки, чтобы отправить, проверьте параметры сервера"

?>
erwerwe вне форума
Старый 29.07.2010, 22:31   #13
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Первый показатель правильности кода - его работоспособность.
1.
Цитата:
`date` = date(NOW(),'%m-%d-%Y')
PHP код:
`date` = DATE_FORMAT(NOW(),'%m-%d-%Y'
2. Собственно нет проверки на то,есть ли результат у запроса.

3. $subject - ???

4. Это что такое???:
PHP код:
echo $query "update `anketa` set `sent`=1 where `id`='.$id"
неверный синтаксис,должно быть примерно так:
PHP код:
$query "update `anketa` set `sent`= 1 where `id` = $id ";
mysql_query($query); 
- кстати что такое $id ???

Совет: привыкайте правильно форматировать SQL-запросы,примерно так:
PHP код:
$query "UPDATE `anketa` SET `sent` = 1 WHERE `id` = $id " 
- т.е. старайтесь SQL-синтаксис писать большими буквами - это позволит легко разобраться в коде и визуально выделяет текст SQL-запроса.

Ещё такой момент - раз уж вы планируете использовать cron для запуска этого файла 1 раз в минуту - ЗАЧЕМ вам выводы (echo) в этом файле?? Какой в них смысл?
Правильнее будет реализовать запись сообщения об ошибке отправки анкет(если таковые будут) в какой-нить специально созданный "файл ошибок отправки анкет" - это я образно...
Ведь если файл вызывает не браузер, а cron - соответственно никто ничего не увидит... никогда ....
Andkorol вне форума
Старый 29.07.2010, 22:36   #14
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию

Цитата:
Ведь если файл вызывает не браузер, а cron - соответственно никто ничего не увидит... никогда ....
Это как раз для проверки работоспособности, временный параметр-потом удалю
erwerwe вне форума
Старый 30.07.2010, 00:56   #15
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию

Parse error: syntax error, unexpected T_VARIABLE in - путь до скрипта script.php on line 4

Вот походу 4-ая строчка:
PHP код:
$SelectReslut mysql_query($SelectQuery); 

В чём может быть ошибка?


PHP код:
<?php 
 
include "config.php"
 
$SelectQuery="SELECT * FROM  `anketa` WHERE `sent`=0 `date` = DATE_FORMAT(NOW(),'%m-%d-%Y') AND DATE_FORMAT(time,'%H%i') = DATE_FORMAT(NOW(),'%H%i')" 
  
$SelectReslut mysql_query($SelectQuery); 
  
//сколько записей получили
  
$Count mysql_num_rows($SelectReslut); 
  for (
$i=1$i<=$Count$i++) { 
    
//получаем очередную строку
    
$Fetch mysql_fetch_array($SelectReslut); 
    
//выводим результат
    
echo $Fetch['text']." : ".$Fetch['email']." : ".$Fetch['time']." : ".$Fetch['date']; 
  
// $date - заведомо известная переменная
  // $time - заведомо известная переменная
//(взято из базы в формате ГГГГ-ММ-ДД)
//(взято из базы в формате ч-м)

$to $Fetch['email']; 
$message .=" Текст письма : ".$text
$subject "Заголовок письма";
 if(
mail($to$subject$message)){ 
    echo 
$query "UPDATE `anketa` SET `sent`= 1 WHERE `id` = 0 "
mysql_query($query);
}  
else{  
    echo 
"Есть некоторые ошибки, чтобы отправить, проверьте параметры сервера"

?>
erwerwe вне форума
Старый 30.07.2010, 03:10   #16
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Parse error: syntax error, unexpected T_VARIABLE in - путь до скрипта script.php on line 4

перевод

ОШИБКА! Вы забыли поставить ; в "путь до скрипта script.php" линия 3
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума
Старый 30.07.2010, 10:12   #17
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Вот вы убрали $id :
Цитата:
where `id` = $id
сделали так :
Цитата:
WHERE `id` = 0
- к чему..???

Я готов допустить,что у вас в базе есть анкета с `id` = 0 - но дальше-то что..???
Вы при каждой удавшейся отправке письма собираетесь устанавливать `sent` = 1 исключительно для этой записи?
Для тех что вы отправили - этого делать не нужно?

Вводите в таблицу поле `id` INT(11) Auto_increment, ставьте его Primary Key (т.к. я допускаю что в вашей теперешней таблице индексов и ключей нет совсем) - и возможно будет вам радость....
Andkorol вне форума
Старый 30.07.2010, 11:08   #18
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию

Johnatan спасибо исправил

Цитата:
Я готов допустить,что у вас в базе есть анкета с `id` = 0 - но дальше-то что..???
Вы при каждой удавшейся отправке письма собираетесь устанавливать `sent` = 1 исключительно для этой записи?
Для тех что вы отправили - этого делать не нужно?
Насколько я понял лучше удалить `
PHP код:
id` = 0 
так как этого поля (id) у меня нет.

Думаю оставить такую запись:
PHP код:
echo $query "UPDATE `anketa` SET `sent`= 1"

PHP код:
Вводите в таблицу поле `idINT(11Auto_incrementставьте его Primary Key (т.кя допускаю что в вашей теперешней таблице индексов и ключей нет совсем) - и возможно будет вам радость.... 
А зачем они нужны (индексов и ключей)? Имеется ввиду вместо поля sent? Но sent вроде работает-когда данные попадают в таблицу sent=0, а когда отправляются-я пока не могу проверить.

Таблица имеет вид:
erwerwe вне форума
Старый 30.07.2010, 11:33   #19
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
А зачем они нужны (индексов и ключей)?
В первом разделе данного форума книг полно - почитайте (просмотрите) хоть одну.Вам без этого - НИКАК.

Цитата:
Имеется ввиду вместо поля sent?
С чего вы взяли что вместо..???
Поле `id` будет уникальным для каждой анкеты - оно позволит вам чётко указать,для каких именно анкет нужно проставить `sent` = 1 в текущей операции.Тоесть вам нужно будет собрать id всех только что отправленных анкет - и именно для этих записей проставить в БД `sent` = 1.

PHP код:
echo $query "UPDATE `anketa` SET `sent`= 1"
- это ваше echo - глупость несусветная,уж простите.... - Я вам уже о нём говорил ранее.

Ваша таблица должна иметь вид(примерно):
id
text
email
date
time
sent

- хотя я бы не разделял date и time - а сделал бы одно поле (`added`,например, тип поля - DATETIME)
Andkorol вне форума
Старый 30.07.2010, 12:06   #20
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

erwerwe
Крайне настойчиво рекомендую вам почитать современную литературу по PHP/MySQL и логике программирования. Вы сейчас пытаетесь сделать автомобиль из "лего", и чтобы он сам ездил.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз написать маленький php скрипт длясчета денег craftins PHP 2 09.09.2009 13:56
помогите составить SQL запрос!!!! MAKSA БД в Delphi 12 07.08.2009 11:12
php скрипт не выводит нужную инфу.. помогите плиз escrimer PHP 2 09.08.2007 02:37