Поиск в почтовой базе PHP - PullRequest
3 голосов
/ 29 мая 2011

Я создал страницу PHP, которая просматривает адреса электронной почты постоянных контактов в базе данных и возвращает таблицу с их именем, адресом электронной почты и списком рассылки, в котором они находятся. Вы вводите адреса здесь: Инструмент поиска контактов вместе с с вашим постоянным контактным именем пользователя и паролем.

По какой-то причине, только последняя строка страницы результатов имеет список списков рассылки. У остальных есть слово «Массив», которое я удалил, так что теперь эти строки пустые. Вот скриншот того, что я имею в виду:

http://www.advantage -computer.com / изображения / ScreenCap.png

Они все в списке. Вот код для search.php. Форма отправляется в этот файл:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <title>List of Contacts</title>
        <style type="text/css">
            .hdr
            {
                margin-bottom: 0px;
                padding-bottom: 0px;
            }
        </style>
    </head>
    <body>
        <table width="75%">
            <tr>
                <td class="hdr">Name</td>
                <td class="hdr">E-mail address</td>
                <td class="hdr">List(s)</td>
            </tr>
            <tr>
                <td colspan="3">
                    <hr style="padding:0; margin:0">
                </td>
            </tr>
            <?PHP
                require_once('./class.cc.php');

                /*VARIABLES*/
                $cc = new cc($_POST['userName'], $_POST['password']);
                if($cc)
                {
                    $strEmails = $_REQUEST['emails'];
                    $aryEmails = explode("\n", $strEmails);

                    $page = (isset($_GET['page'])) ? $_GET['page'] : 'lists';
                    $lists = $cc->get_lists($page);

                    /*METHODS*/
                    foreach ($aryEmails as $email)
                    {       
                        if($lists)
                        {
                            foreach($lists as $k => $v)
                            {
                                $list = $v['Name'];
                                $page = (isset($_GET['page'])) ? $_GET['page'] : 'members';
                                $members = $cc->get_list_members($v['id'], $page);

                                if($members)
                                {
                                    foreach($members as $k => $v)
                                    {
                                        if($v['EmailAddress'] == $email)
                                        {
                                            $strLists .= $list . ", ";
                                        }
                                    }
                                }
                            }
                        }

                        $strLists = str_replace("Array", "", $strLists);
                        $strLists = substr($strLists, 0, -2);

                        $contact = $cc->query_contacts(trim($email));

                        if($contact)
                        {
                            $strName = $contact['Name'];
                            if(is_array($strName))
                            {
                                $strName = "";
                            }

                            echo
                            (
                                "<tr><td>".$strName."</td>".
                                "<td>".$contact['EmailAddress']."</td>".
                                "<td>".$strLists."</td></tr>"
                            );
                        }

                        else
                        {
                            echo("<tr><td colspan='3'>Could not find {$email}.</td></tr>");
                        }
                    }
                }

                else
                {
                    echo "Invalid user name or password";
                }
            ?>
        </table>
    </body>
</html>

Вот файл class.cc: http://advantage -computer.com / tools / class.cc.txt

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Во-первых, вы должны выйти из этого цикла, как только вы сопоставили запись, и вы не используете $ k, поэтому мы можем удалить это и из цикла, например:

if($members)
  foreach($members as $v)
    if($v['EmailAddress'] == $email)
    {
      $strLists .= $list . ", ";
      break;
    }

Я бы такжедобавьте туда строку, чтобы отладить что в переменной $ list, когда это массив:

if (is_array($list))
  var_dump($list);

Я бы сказал, что все, что устанавливает "$ _list ['content'] ['ContactList'] ['Имя '] "в вашем классе не делает это правильно.

0 голосов
/ 06 июня 2011

Спасибо всем за ответы. Мой брат нашел проблему. Он изменился

foreach ($aryEmails as $email){
    ...
}

до

foreach ($aryEmails as $tmpEmail){ 
    $email = rtrim($tmpEmail);
    ...
}

Похоже, что он соответствует только последней строке в текстовой области, поскольку в массиве электронной почты еще остались символы возврата каретки, оставшиеся после текстовой области. Он добавил трим, чтобы удалить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...