За последние 24 часа нас посетил 15831 программист и 1666 роботов. Сейчас ищут 920 программистов ...

Помочь доделать/переделать/адаптировать

Тема в разделе "Сделайте за меня", создана пользователем ugralex, 31 мар 2017.

  1. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Всем бобра! Пытаюсь тут реализовать затею одну, но не справляюсь из-за недостатка мозга ))
    Имеем в mysql
    Код (Text):
    1. CREATE TABLE `data` (
    2.   `ID` int(11) NOT NULL AUTO_INCREMENT,
    3.   `Name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
    4.   `B_Date_DD` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL,
    5.   `B_Date_MM` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL,
    6.   PRIMARY KEY (`ID`),
    7.   KEY `Name` (`Name`)
    8. ) ENGINE=MyISAM AUTO_INCREMENT=46 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    9.  
    10. INSERT INTO `data` VALUES ('1', 'Карабас Барабас', '31', '03');
    11. INSERT INTO `data` VALUES ('2', 'Василий Пупкин', '31', '03');
    12.  
    13. CREATE TABLE `settings` (
    14.   `Path` varchar(100) NOT NULL DEFAULT '',
    15.   `To_Email` varchar(80) NOT NULL DEFAULT '',
    16.   `From_Email` varchar(80) NOT NULL DEFAULT '',
    17.   `Subject` varchar(80) NOT NULL DEFAULT '',
    18.   `Email_Reminders` int(1) NOT NULL DEFAULT '0',
    19.   `ID` int(1) NOT NULL DEFAULT '0',
    20.   UNIQUE KEY `ID` (`ID`)
    21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    22.  
    23. INSERT INTO `settings` VALUES ('', 'kuda@les.tam', 'otkuda@les.tam', '', '1', '0');
    и задачку в cron
    PHP:
    1. <?php
    2. include("config.php");
    3. if('...'){
    4. require('config.php');
    5. mysql_connect('localhost',$username,$password);
    6. @mysql_select_db($database) or die();
    7. $query="SELECT * FROM data WHERE `B_Date_DD` = DAY(CURDATE()) AND `B_Date_MM` = MONTH(CURDATE())";
    8. $result=mysql_query($query);
    9. $num=mysql_numrows($result);
    10. $i=0;
    11. while ($i < $num) {
    12. $Name .=mysql_result($result,$i,"Name");
    13. $B_Date_DD .=mysql_result($result,$i,"B_Date_DD");
    14. $B_Date_MM .=mysql_result($result,$i,"B_Date_MM");
    15. $ID=mysql_result($result,$i,"ID");
    16. $i++;
    17. }
    18. $to = 'kuda@les.tam';
    19. $subject = 'Zagolovok';
    20. $message = ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') ';
    21. $from = 'From: otkuda@les.tam';
    22. mail($to, $subject, $message, $from);
    23. }
    24. else{
    25. exit();
    26. }
    27. ?>
    В общем, все хорошо, кроме случаев, когда надо отправить 2 и более записей...
    Приходит оно в виде
    "(3131)(0303)(Карабас БарабасВасилий Пупкин)"
    ЧЯДНТ?(
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    зачем ты используешь соединение строк для ресурса котолрый возвращает mysql_result?
    кстати mysql_* функции устарели и их уже удалили в PHP7 лучше используй mysqli
     
    ugralex нравится это.
  3. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Изменил .= на =
    Стало приходить как надо, но только с последней добавленной записью.
    И, да, перевод на php7 не нужен из-за некоторых особенностей
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ты просто в цикле затираешь предыдущие данные, их можно сразу выводить или накапливать в массиве, потом уже вывести
     
    ugralex нравится это.
  5. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Вот на это у меня мозга не хватает ))) Поэтому сюда и обратился
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @ugralex расставь скобки и отступы, чтобы код был читаем, может кто поможет
    --- Добавлено ---
    строку 23 удали
    PHP:
    1.         $Name .= mysql_result($result, $i, "Name");
    2.         $B_Date_DD .= mysql_result($result, $i, "B_Date_DD");
    3.         $B_Date_MM .= mysql_result($result, $i, "B_Date_MM");
    4.         $ID = mysql_result($result, $i, "ID");
    5.         $message .= ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') '.PHP_EOL;
     
    ugralex нравится это.
  7. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Строку 23 ?
    PHP:
    1.     mail($to, $subject, $message, $from);
    Закомментил 21-ую

    Привалило уже вот так

    Код (Text):
    1.  (31)(03)(Карабас Барабас)
    2. (3131)(0303)(Карабас БарабасВасилий Пупкин)
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ага

    задача решена?
     
    ugralex нравится это.
  9. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Задача была бы решена, если бы он вывел

    Код (Text):
    1. (31)(03)(Карабас Барабас)
    2. (31)(03)(Василий Пупкин)
     
  10. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Сделал так
    PHP:
    1.     while ($i < $num) {
    2.         $Name .= mysql_result($result, $i, "Name");
    3.         $B_Date_DD .= mysql_result($result, $i, "B_Date_DD");
    4.         $B_Date_MM .= mysql_result($result, $i, "B_Date_MM");
    5.         $ID = mysql_result($result, $i, "ID");
    6.         $message .= ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') '.PHP_EOL;
    7.         $Name=null;
    8.         $B_Date_DD=null;
    9.         $B_Date_MM=null;
    10.         $i++;
    11.         }
    Вопрос решился
     
  11. ugralex

    ugralex Новичок

    С нами с:
    31 мар 2017
    Сообщения:
    7
    Симпатии:
    0
    Возник следующий (логичный) вопрос.
    При отсутствии совпадений - прилетает "пустышка".
    Фокус не вышел

    PHP:
    1. <?php
    2. include("config.php");
    3. require('config.php');
    4. mysql_connect('localhost',$username,$password);
    5. @mysql_select_db($database) or die();
    6. $query="SELECT * FROM data WHERE `B_Date_DD` = DAY(CURDATE()) AND `B_Date_MM` = MONTH(CURDATE())";
    7. $result=mysql_query($query);
    8. $num=mysql_numrows($result);
    9. if($num = 0){
    10.     exit();
    11. }
    12.     else {
    13.     $i=0;
    14.     while ($i < $num) {
    15.         $Name .= mysql_result($result, $i, "Name");
    16.         $B_Date_DD .= mysql_result($result, $i, "B_Date_DD");
    17.         $B_Date_MM .= mysql_result($result, $i, "B_Date_MM");
    18.         $ID = mysql_result($result, $i, "ID");
    19.         $message .= ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') '.PHP_EOL;
    20.         $Name=null;
    21.         $B_Date_DD=null;
    22.         $B_Date_MM=null;
    23.         $i++;
    24.         }
    25.     $to = 'kuda@les.tam';
    26.     $subject = 'Zagolovok';
    27.     // $message = ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') ';
    28.     $from = 'From: otkuda@les.tam';
    29.     mail($to, $subject, $message, $from);
    30.     }
    31. ?>
    --- Добавлено ---
    Вроде как надо ))) Есть еще что-то "не так"?

    PHP:
    1. <?php
    2. include("config.php");
    3. require('config.php');
    4. mysql_connect('localhost',$username,$password);
    5. @mysql_select_db($database) or die();
    6. $query="SELECT * FROM data WHERE `B_Date_DD` = DAY(CURDATE()) AND `B_Date_MM` = MONTH(CURDATE())";
    7. $result=mysql_query($query);
    8. $num=mysql_numrows($result);
    9. if($num >= 1){
    10.     $i=0;
    11.     while ($i < $num) {
    12.         $Name .= mysql_result($result, $i, "Name");
    13.         $B_Date_DD .= mysql_result($result, $i, "B_Date_DD");
    14.         $B_Date_MM .= mysql_result($result, $i, "B_Date_MM");
    15.         $ID = mysql_result($result, $i, "ID");
    16.         $message .= ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') '.PHP_EOL;
    17.         $Name=null;
    18.         $B_Date_DD=null;
    19.         $B_Date_MM=null;
    20.         $i++;
    21.         }
    22.     $to = 'kuda@les.tam';
    23.     $subject = 'Zagolovok';
    24.     // $message = ' ('.$B_Date_DD.')('.$B_Date_MM.')('.$Name.') ';
    25.     $from = 'From: otkuda@les.tam';
    26.     mail($to, $subject, $message, $from);
    27.     }
    28. else {
    29.     exit();
    30. }
    31. ?>
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    полно, если работает, то оставь так
     
    ugralex нравится это.
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    расширение mysql_ официально объявлено deprecated еще начиная с 5.5. Обновляться до 5.6 у вас тоже некоторые особенности мешают? А как насчет некоторых особенностей самого mysql_, из-за которых у вас могут быть проблемы с производительностью и безопасностью? Такие особенности не смущают? Возможность атак второго порядка через левые кодировки не смущает?