За последние 24 часа нас посетили 206668 программистов и 2231 робот. Сейчас ищут 1464 программиста ...

Массовая отправка сообщений

Тема в разделе "PHP для новичков", создана пользователем zevilz, 26 авг 2012.

  1. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Есть форма отправки сообщения, где радиокнопкой (target) выбираем, кому отправить сообщение
    Код (Text):
    1.     if ($target == "sub_reg") {// Выборка зарегистрированных и подписавшихся на новости пользователей
    2.         $result_subscribe_sub = mysql_query ("SELECT name,email FROM subscribe WHERE status='1'",$db);
    3.         $result_subscribe_reg = mysql_query ("SELECT username,email FROM forum_users WHERE NOT id='1'",$db);
    4.     }
    5.     if ($target == "sub") {// Выборка только подписавшихся на новости пользователей
    6.         $result_subscribe = mysql_query ("SELECT name,email FROM subscribe WHERE status='1'",$db);
    7.     }
    8.     if ($target == "reg") {// Выборка только зарегистрированных пользователей
    9.         $result_subscribe = mysql_query ("SELECT username,email FROM forum_users WHERE NOT id='1'",$db);
    10.     }
    После выборки необходимо всем найденным пользователям в зависимости от значения радиокнопки отослать сообщение. Как совместить 2 выборки в первом условии с учетом того, что зарегистрированные пользователи могут еще быть и подписанными? И каким образом отправить всем сообщения?

    Раньше при отправке сообщения только подписавшимся я делал вот так:
    Код (Text):
    1. $result_subscribe = mysql_query ("SELECT name,email FROM subscribe WHERE status='1'",$db);
    2. $myrow_subscribe = mysql_fetch_array ($result_subscribe);
    3. if (mysql_num_rows($result_subscribe) > 0) {
    4.     do {
    5.         ..........
    6.         $name = $myrow_subscribe["name"];
    7.         $address = $myrow_subscribe["email"];
    8.         ..........
    9.         mail(............);
    10.     while ($myrow_subscribe = mysql_fetch_array ($result_subscribe));
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    По вашим соображениям вы не соображаете что делает do{} while{}

    И ты трудный тип, однако, правила читал форума!?

    Я бы тебя уже забанил бы =)
     
  3. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Я читал правила и знаю, что делает do{} while{}...
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    ну раз знаешь, зачем тогда сначала шлешь письмо, а только потом проверяешь, надо ли отсылать???
     
  5. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    я к do{} while{} привык уже. Да и результат как минимум 1 будет - мой емейл
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Конечно, конечно

    viewtopic.php?f=1&t=449&p=3671&hilit=%D0%90%D0%B2%D0%B0%D1%82%D0%B0%D1%80%D1%8B#p3671

    zevilz, ничего страшного скоро и до тебя дойдет очередь!
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    я в GO TO 280 на бейсике так прикипел....до сих пор отвыкнуть не могу....
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    +1
    =D Когда впервые открыл программу на паскале (после где-то трёх лет бейсика) - вообще не понял ничего - как это так, где же номера строк???
    Давно это было... :)
     
  9. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Лучше б по сути ответили, а не обсуждали корявый код...
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. <?php
    2. switch($target) {
    3.     case 'sub_reg':
    4.         $sql = "(SELECT `name`, `email` FROM `subscribe` WHERE `status` = '1')
    5.             UNION
    6.             (SELECT `username`, `email` FROM `forum_users` WHERE `id` != 1)";
    7.         break;
    8.     case 'sub':
    9.         $sql = "SELECT `name`, `email` FROM `subscribe` WHERE `status` = '1'";
    10.         break;
    11.     case 'reg':
    12.         $sql = "SELECT `username` AS `name`, `email` FROM `forum_users` WHERE `id` != 1";
    13.         break;
    14. }
    15. $result_subscribe = mysql_query($sql, $db);
    16. if(mysql_num_rows($result_subscribe) > 0) {
    17.     while($myrow_subscribe = mysql_fetch_assoc($result_subscribe)) {
    18.         $name = $myrow_subscribe['name'];
    19.         $address = $myrow_subscribe['email'];
    20.         mail(...);
    21.     }
    22. }
    23. ?>