首先,感谢您看一下我的问题。
我有一个非常适合我的函数,我想从该函数中调用另一个函数,但是我遇到了各种各样的问题。
这是这些功能,然后我将解释我需要什么以及我遇到了什么。
它们可能非常困惑,但我正在学习并认为我会尝试花哨然后清理它。
function GetStation($id){
$x_db_host1="localhost"; // Host name
$x_db_username1="xxxx"; // Mysql username
$x_db_password1="xxxx"; // Mysql password
$x_db_name1="xxxx"; // Database name
// Connect to server and select databse.
mysql_connect("$x_db_host1", "$x_db_username1", "$x_db_password1");
mysql_select_db("$x_db_name1");
// SQL Query Setup for Station Name
$sql="SELECT * FROM stations WHERE ID = $id LIMIT 1";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
$retnm = $rows['CallSign'];
}
mysql_close();
echo $retnm;
} // Closes Function
// List Delegates Function!!!!!!!!!!!!!!!!!!!
function ListDelegates(){
$x_db_host1="xxx"; // Host name
$x_db_username1="xxx"; // Mysql username
$x_db_password1="xxxx"; // Mysql password
$x_db_name1="xxxx"; // Database name
// Connect to server and select databse.
mysql_connect("$x_db_host1", "$x_db_username1", "$x_db_password1");
mysql_select_db("$x_db_name1");
$q = "SELECT * FROM delegates";
$result = mysql_query($q);
/* Error occurred, return given name by default */
$num_rows = mysql_numrows($result);
if(!$result || ($num_rows < 0)){
echo "Error displaying info";
return;
}
if($num_rows == 0){
echo "There are no delegates to display";
return;
}
/* Display table contents */
echo "<table id=\"one-column-emphasis\" summary=\"Delegates\"><thead>";
echo "<thead><tr><th>ID</th><th>Name</th><th>Station</th><th>Spec Req</th><th>BBQ</th><th>DIN</th><th>SAT</th><th>SUN</th></tr>";
echo "</thead><tbody>";
for($i=0; $i<$num_rows; $i++){
$d_id = mysql_result($result,$i,"DID");
$d_name1 = mysql_result($result,$i,"DFName");
$d_name2 = mysql_result($result,$i,"DLName");
$d_name = $d_name1 . " " . $d_name2;
$d_spec1 = mysql_result($result,$i,"DSpecRe");
$StatNm = mysql_result($result,$i,"DStation");
$d_st_name = GetStation($StatNm);
if ($d_spec1=="0"){ $d_spec = "-"; }
else {$d_spec = "<a href=\"javascript:void(window.open('http://xxxxxxx.xxx/xsreq.php?id=$d_id','','width=300,height=250,left=0,top=0,resizable=no,menubar=no,location=no,status=yes,scrollbars=no'))\">YES</a>"; }
$d_bbq1 = mysql_result($result,$i,"Dbbq"); // BBQ
if ($d_bbq1=="0"){ $d_bbq = "-"; }
else {$d_bbq = "NO"; }
$d_din1 = mysql_result($result,$i,"Dconfdinner"); // Dinner
if ($d_din1=="0"){ $d_din = "-"; }
else {$d_din = "NO"; }
$d_sat1 = mysql_result($result,$i,"DConfSat"); // Saturday
if ($d_sat1=="0"){ $d_sat = "-"; }
else {$d_sat = "NO"; }
$d_sun1 = mysql_result($result,$i,"DConfSat"); // Sunday
if ($d_sun1=="0"){ $d_sun = "-"; }
else {$d_sun = "NO"; }
echo "<tr><td>$d_id</td><td><strong>$d_name</strong></td><td>$d_st_name</td><td>$d_spec</td><td>$d_bbq</td><td>$d_din</td><td>$d_sat</td><td>$d_sun</td></tr>";
}
echo "</tbody></table></br>";
}
所以我在页面中输出ListDelegates(),它显示一个漂亮的表格等。
在 ListDelegates() 中,我使用 GetStation() 函数。
这是因为 ListDelegates() 使用的表包含电台 ID 号而不是名称,所以我希望 GetStation($id) 输出电台名称
我遇到的问题是 GetStation() 似乎在函数的第一次调用中输出所有名称,因此表中的第一行并没有将其分解为每一行,并且一次只输出一个:S
这是我的想法(我可能是错的)ListDelegates() 不会为每行调用 GetStation() 一次,即使它在循环中也是如此。 ??
我不知道这是否应该起作用......我只是在学习研究然后尝试。
请帮助我,以便我可以输出站名
最佳答案
在GetStation
末尾,需要更改
echo $retnm;
至
return $retnm;
当您打算将名称存储在变量中时,您正在从函数 GetStation
中打印出名称。最终发生的情况是,GetStation
的结果在任何表格行之外的屏幕上有效地回显
。表格内但不在表格单元格内的内容将收集到浏览器中表格的顶部。如果您想明白我的意思,只需在加载页面后从浏览器查看源代码即可。
关于PHP 循环内函数内的函数 :S,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5176610/