2011-06-01 135 views
0

我在我的PHP EOF中使用。PHP EOF只显示循环中的一个结果

问题是,它只显示来自mySQL循环的一个项目。

它只显示最后的结果。

这在EOF中是否有必要?或者我可以避免这个问题?

感谢

function getYiBAdminBanner() { 
global $site; 
global $dir; 
$queryYiBmenu = "SELECT * FROM `(YiB)_cPanel_Menu` WHERE Type = 'top'"; 
$resultYiBmenu=mysql_query($queryYiBmenu) or die("Errore select menu: ".mysql_error()); 
$countYiBmenu = mysql_num_rows($resultYiBmenu); 
while($rowYiBmenu = mysql_fetch_array($resultYiBmenu)) { 
$menu = "<div id=\"menu\" style=\"display:none;\"><li><a href=\"".$site['url'].$rowYiBmenu['linkHref']."\" onMouseOut=\"javascript: $('#menu').hide('9000');\"><img class=\"imgmenu\" src=\"".$site['url'].$rowYiBmenu['linkIcon']."\">".$rowYiBmenu['linkTitle']."</a></li></div>"; 
} 
if($countYiBmenu <= 0){ 
$menu = "No Modules Installed"; 
} 
$bannerCode .= <<<EOF 
<div style="width:520px; background-color: #EEE; height:30px;"> 
{$menu} 
</div> 
EOF; 
return $bannerCode; 
} 
+0

请问您可以发布您的代码吗? – 2011-06-01 21:11:05

+0

你是通过mySQL结果还是文件循环? – wired00 2011-06-01 21:12:39

+0

我正在循环查看mySQL结果。没有代码可以显示。问题很简单。我应该发布两页代码吗? @Felix Kling我不认为你需要这样的事情。 – 2011-06-01 21:18:36

回答

2

编辑:基于您的代码示例:尽量$menu .= <your result>$menu = $menu . <your result>而非$menu = <your result>。但它目前还不清楚,如果你期望多个结果或不

如果你是通过一个MySQL的结果循环查询,你应该做这样的事情:

$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'", 
    mysql_real_escape_string($firstname), 
    mysql_real_escape_string($lastname)); 

// Perform Query 
$result = mysql_query($query); 

while ($row = mysql_fetch_assoc($result)) { 
    echo $row['firstname']; 
    echo $row['lastname']; 
    echo $row['address']; 
    echo $row['age']; 
} 

http://php.net/manual/en/function.mysql-query.php

如果你是循环通过文件的内容,你应该做这样的事情:

<?php 
$file = fopen("welcome.txt", "r") or exit("Unable to open file!"); 
//Output a line of the file until the end is reached 
while(!feof($file)) 
    { 
    echo fgets($file). "<br />"; 
    } 
fclose($file); 
?> 

http://www.w3schools.com/php/php_file.asp

php manual fopen

我希望帮助,但你的问题不是如何/在您使用EOF非常清楚。

+0

我的循环方式与您在第一个解决方案中所做的相同。我只有一行显示。所以我然后用这种方式将变量赋值给EOF {变量}。它只显示一个结果,最后一个。它没有显示mySQL循环给出的所有结果 – 2011-06-01 21:25:55

+0

'我只有一行显示' - 你的意思是'我只有一个COLUMN来显示'吗?而且你有许多行循环,但只有最后一行显示?你真的需要发布与循环相关的代码。如果没有看到代码,“调试”你的问题基本上是不可能的,因为你会提到“EOF”,但我不知道那是什么。我想可能你每次循环都会重新分配变量。您可能需要将变量存储为数组,如下所示:'$ myVariable [] = $ row [“YOURCOLUMNAME”];' – wired00 2011-06-01 21:31:51

+0

...如果在循环中有这样的内容:'$ myVariable = $ row [“YOURCOLUMNNAME”];'当然,每当你遍历结果行时,变量将被最后一行覆盖,直到你到达最后并且它被设置为最后一个结果。因此,您可能需要'$ myVariable [] = $ row [“YOURCOLUMNAME”];'设置为一个数组。 – wired00 2011-06-01 21:35:11