选项没有打印/回显?

时间:2012-08-05 04:04:22

标签: php

此页面生成从数据库中提取的选项。另一页通过year_joining带来了学生加入的一年。其余的mysql查询工作得非常好(经过测试)

<?php
include_once("../Include/connectdb.php");

if($_GET['year_join'])
{
$id=$_GET['year_join'];

$result1 = mysql_query("select distinct sub_id from subject_profile where   batch='$id'        

")or die(mysql_error());

  while($subid = mysql_fetch_assoc($result1)){

 $result2 = mysql_query("SELECT name FROM  `subjects` WHERE  `sub_id` LIKE    

'$subid[sub_id]'");

    $subject=mysql_fetch_assoc($result2);

    if($subject[name]!=""){
  //print "<OPTION value=".$tmp.'">'.$tmp.'</OPTION>';
  //print "<OPTION value='$tmp'>'$tmp'</OPTION>";
  echo "<option value=".$subject['name'] . '">' . $subject['name'] . '</option>';
  //echo '<option value="'.$id.'">'.$data.'</option>';
 //}
 }
}
}
?>

仅供参考:

//print "<OPTION value=".$tmp.'">'.$tmp.'</OPTION>';
//print "<OPTION value='$tmp'>'$tmp'</OPTION>";
echo "<option value=".$subject['name'] . '">' . $subject['name'] . '</option>';
//echo '<option value="'.$id.'">'.$data.'</option>';

这些都不起作用...... :(

使用简单的echo $ tmp它可以工作 但是,当我把它作为

echo "<option value=";

结果是空白页......

当我回应变量时,它的工作完全正常

echo $tmp;

列出了所有科目......

3 个答案:

答案 0 :(得分:2)

对于“不显示输出”的问题,我认为您错过了<select>标记,其中包含<option>标记。

作为旁注,在查询中,将其更改为:

"SELECT name FROM  `subjects` WHERE  `sub_id` LIKE '{$subid[sub_id]}'"

,或者

"SELECT name FROM  `subjects` WHERE  `sub_id` LIKE '" . $subid[sub_id] . "'"

仍然不安全。您应该使用mysqli或PDO

来转义值并更好地使用预准备语句

答案 1 :(得分:1)

主要问题是根据Akhilesh B Chandran的回答,缺少<select>标签。

除此之外,当$subject['name']中有空格时会出现问题。

问题在于这一行:

echo "<option value=".$subject['name'] . '">' . $subject['name'] . '</option>';

应该是这样的:

echo '<option value="'.$subject['name'] . '">' . $subject['name'] . '</option>';

在您目前拥有的内容中,浏览器将结果解释为:

<option value=insert name here">insert name here</option>

因为它是可见的,value=之后缺少引用。

答案 2 :(得分:0)

您的报价不匹配,这就是PHP失败的原因。

尝试更改:

echo "<option value=".$subject['name'] . '">' . $subject['name'] . '</option>';

为:

echo "<option value=".$subject['name'] . ">" . $subject['name'] . "</option>";

基本上,您开始使用",然后切换到使用'