PHP 循环内函数内的函数 :S

标签 php mysql function

首先,感谢您看一下我的问题。

我有一个非常适合我的函数,我想从该函数中调用另一个函数,但是我遇到了各种各样的问题。

这是这些功能,然后我将解释我需要什么以及我遇到了什么。

它们可能非常困惑,但我正在学习并认为我会尝试花哨然后清理它。

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/

相关文章:

php - redis中如何使用sortable数据结构

php - CSV导入功能在插入mysql数据库时添加前面的双引号

matlab - 正确使用波浪号运算符作为输入参数

比较整数函数 SIGSEGV

php - Codeigniter csv 文件类型显示为 text/x-fortran

php - MVC/HMVC/PAC 模式中 URL 结构的约定是什么?

php - mod_rewrite 接管页面上的所有链接

MySQL ORDER BY 2列有异常

sql - 两个内部连接 ​​MYSQL

javascript - 从 react 功能组件返回变量