PHP邮件数据库搜索

时间:2011-05-29 17:20:24

标签: php database

我创建了一个PHP页面,在数据库中查找Constant Contact电子邮件地址,并返回一个表格,列出他们所在的姓名,电子邮件地址和邮件列表。您可以在此处输入地址:联系查找工具使用常量联系人用户名和密码。

出于某种原因,只有结果页面的最后一行有一个邮件列表列表。其他的有“Array”这个词,我把它剥离了,所以现在这些行都是空白的。这是我的意思的屏幕截图:

http://www.advantage-computer.com/images/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 个答案:

答案 0 :(得分:1)

首先,一旦你匹配了一条记录,你应该突破那个循环,而你没有使用$ 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'] ['Name']”在你的班级中做得不正确。

答案 1 :(得分:0)

感谢大家的回复。我哥哥发现了这个问题。他改变了

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

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

它似乎只匹配文本区域中的最后一行,因为文本区域中遗留的电子邮件数组中仍有回车符。他添加了rtrim来删除它们。