我创建了一个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
答案 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来删除它们。