首页 文章

PHP邮件数据库搜索

提问于
浏览
3

我创建了一个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

    首先,一旦你匹配了一条记录,你应该突破那个循环,而你没有使用$ 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']”在你的 class 中没有正确地做到这一点 .

  • 1

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

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

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

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

相关问题