[英]PHP: Holding two matching items in an array of data from MySQL
$story_query = "SELECT table_name, id FROM planning WHERE parent = '$novelnum'";
$story_result = db_query($story_query);
while($story_row = db_fetch_array($story_result)) {
$taleTable_Name = $story_row['table_name'];
$postid[] = $story_row['id'];
$q2 = "Select * from $taleTable_Name where approved='Y' order by id";
$bset2 = db_query($q2);
while($rset2 = db_fetch_array($bset2)) {
$i[] = $rset2['id'];
$t[] = $rset2['thread'];
$s[] = $rset2['subject'];
$a[] = $rset2['author'];
$d[] = $rset2['datestamp'];
}
}
if(isset($d)) {
$fc = count($d);
if($fc > 20) {
$xs = $fc - 20;
}
else {
$xs = 0;
}
for($c=$xs;$c<$fc;$c++) {
if($s[$c] != "") {
$newpost .= $d[$c];
$newpost .= " <a href='../forums/read.php?f=";
$newpost .= end($postid);
$newpost .= "&i=";
$newpost .= $i[$c];
$newpost .= "&t=";
$newpost .= $t[$c];
$newpost .= "'>" ;
$newpost .= $s[$c];
$newpost .= "</a> by ";
$newpost .= $a[$c];
$newpost .= $taleTable_Name;
$newpost .= "<br>\n";
}
}
}
else {
$newpost = "There are no posts for this scroll yet.";
}
上面的代码正确地向我展示了用$ taleTable_Name找到的所有条目,但是在我打印$ newpost时仅展示了$ postid的最后一个变量。 我想要id($ postid与table_name($ taleTable_Name)匹配,以便创建的URL实际进入正确的论坛。
首先,我不知道您的变量名是什么意思。 我试过猜测,但是您应该考虑重命名它们。 为了保持您的维护程序员的健康。
查看您的代码,我知道它在做什么,但是我不知道它应该做什么,或者为什么。 下面是重命名变量名的尝试,但是我不知道它是正确的还是接近正确的:
$story_query = "SELECT table_name, id FROM planning WHERE parent = '$novelnum'";
$story_result = db_query($story_query);
while($story_row = db_fetch_array($story_result)) {
$taleTable_Name = $story_row['table_name'];
$postid[] = $story_row['id'];
$query2 = "Select * from $taleTable_Name where approved='Y' order by id";
$bset2 = db_query($query2);
while($rowset2 = db_fetch_array($bset2)) {
$id[] = $rowset2['id'];
$thread[] = $rowset2['thread'];
$subject[] = $rowset2['subject'];
$author[] = $rowset2['author'];
$datetime[] = $rowset2['datestamp'];
}
}
if(isset($datetime)) {
$forumcount = count($datetime);
if($forumcount > 20) {
$xs = $forumcount - 20;
}
else {
$xs = 0;
}
for($postnum=$xs;$postnum<$forumcount;$postnum++) {
if($subject[$postnum] != "") {
$newpost .= $datetime[$postnum];
$newpost .= " <a href='../forums/read.php?f=";
$newpost .= end($postid);
$newpost .= "&id=";
$newpost .= $id[$postnum];
$newpost .= "&thread=";
$newpost .= $thread[$postnum];
$newpost .= "'>" ;
$newpost .= $subject[$postnum];
$newpost .= "</a> by ";
$newpost .= $author[$postnum];
$newpost .= $taleTable_Name;
$newpost .= "<br>\n";
}
}
}
else {
$newpost = "There are no posts for this scroll yet.";
}
以下变量是什么意思? : $xs
, $c
, &i
, &t
和$fc
? 这些应该是有意义的名称。 我已经重命名了您的其他变量,但是我只是猜到了这些。 我可能会离开。 有意义的变量名在帮助他人阅读没有注释的代码方面大有帮助。 照原样,如果您有有意义的变量名, 我可能不需要注释 -尽管'20'的神奇数字在做什么? 这个数字有什么意义呢?
我注意到您的代码的一件事是,没有在哪里打印$ newpost。 在for循环结束之前,需要使用$ newpost完成一些操作。 在这种情况下,您只是每次都丢弃结果(或更准确地说,是将其覆盖)。 您需要使用$ newpost做一些事情(打印它,将它存储在另一个值中,然后将其发送回浏览器,等等)。
怎么样 ?
unset($post); // ensure start afresh
$story_query = "SELECT table_name, id FROM planning WHERE parent = '$novelnum'";
$story_result = db_query($story_query);
while($story_row = db_fetch_array($story_result)) {
$taleTable_Name = $story_row['table_name'];
$postid = $story_row['id'];
$q2 = "Select * from $taleTable_Name where approved='Y' order by id";
$bset2 = db_query($q2);
while($rset2 = db_fetch_array($bset2)) {
$post[$postid] = $rset2;
}
}
if(isset($post)) {
/***
* Page control here
****/
foreach($post as $id => $msg) {
if($row['subject'] != "") {
$newpost .= $msg['datestamp'];
$newpost .= " <a href='../forums/read.php?f=";
$newpost .= $id;
$newpost .= "&i=".$msg['id'];
$newpost .= "&t=".$msg['thread'];
$newpost .= "'>" ;
$newpost .= $msg['subject'];
$newpost .= "</a> by ";
$newpost .= $msg['author'];
$newpost .= $taleTable_Name;
$newpost .= "<br>\n";
}
}
}
else {
$newpost = "There are no posts for this scroll yet.";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.