2011-02-19 102 views
0

您好我想回顯HTML以便將來自mysql的變量放入HTML輸入標籤。特別是,我遇到問題的單選按鈕,它表示期望逗號或分號。這裏是我的代碼:在php中回聲HTML

$result=mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
while($row = mysql_fetch_array($result)){ 
  echo "<input type="radio"; 
  echo "value="; 
  echo "$row["cnumber"]"; 
   echo "/>"; 
   echo "$row["cname"]";  
  echo "<br />"; 

任何想法,爲什麼這不工作?

+0

對不起,關於代碼的狀態。由於某些原因,四條線路無法工作。 – Niall

回答

5

像這樣的事情是行不通的:

echo "<input type="radio"; 

你必須把它寫像這樣:

echo "<input type=\"radio\""; 

"是一個特殊字符,如果它在字符串內部,則必須在其前面放置一個\

這樣寫:

$result=mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
while($row = mysql_fetch_array($result)){ 
    echo "<input type=\"radio\" value=\"".$row['cnumber']."\" />".$row['cname']."<br />"; 
} 

(未測試,但它應該工作?!)。

+0

你應該爲PHP字符串使用單引號,因爲它裏面沒有變量,這樣就更容易閱讀。例如'echo'

+0

完美,謝謝! – Niall

1

你引用了引號的字符串:

echo "$row["cname"]"; 

只是這樣做:

echo $row["cname"]; 
1

你與你的報價非常不一致。打破腳本的第一行是echo "<input type="radio"; - 應爲:echo '<input type="radio"';

2
echo '<input type="radio" value="'.$row["cnumber"].'" />'.$row["cname"].'<br />'; 

OR

echo "<input type='radio' value='{$row["cnumber"]}' />{$row["cname"]}<br />"; 

OR

echo "<input type=\"radio\" value=\"{$row["cnumber"]}\" />{$row["cname"]}<br />"; 

OR

echo '<input type=\'radio\' value=\''.$row["cnumber"].'\' />'.$row["cname"].'<br />'; 

OR

while($row = mysql_fetch_array($result)){ 
$html .= "<input type='radio' value='{$row["cnumber"]}' />{$row["cname"]}<br />"; 
} 

echo $html; 

OR

while($row = mysql_fetch_array($result)){ 
extract($row); 
$html .= "<input type='radio' value='{$cnumber}' />{$cname}<br />"; 
} 

echo $html; 

OR

while($row = mysql_fetch_array($result)){ 
extract($row); 
printf("<input type='radio' value='%s' />%s<br />", $row["cnumber"] , $row["cname"]); 
} 
+0

通常它使用單引號爲html屬性的不良做法 - 它仍然工作:) –

+0

@Nayena:這只是一個解釋使用反斜槓和使用引號的示例;)PS:PHP會自動將其轉換爲雙引號在任何情況下。 ;)) –

0
$result=mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
while($row = mysql_fetch_array($result)){ 
    echo "<input type='radio' "; 
    echo "value="; 
    echo $row["cnumber"]; 
     echo "/>"; 
     echo $row["cname"]; 
    echo "<br />"; 
    } 

當有一個回波引號內,它們必須比含有引號

echo "<input type='hidden'>"; 

如果含報價都不同的」,這些報價內部引號必須是單引號:'

1

不要使用PHP回顯HTML!(如果你能避免它)。

調試HTML和更容易出錯更困難(正如你所看到的)。您也失去了IDE關於HTML的任何支持。

相反,嵌入PHP到HTML:

<?php  
//... 
$result=mysql_query($sql); 
$row = mysql_fetch_assoc($result); // why are you doing this? 
            // this will skip the first row 
?> 
<?php while(($row = mysql_fetch_array($result))): ?> 
    <input type="radio" value="<?php echo $row['cnumber']; ?>" /> 
    <?php echo $row['cname']; ?> 
    <br /> 
<?php endwhile; ?> 

參考:Alternative syntax for control structures


評論到您的代碼:您這裏有引號的一塌糊塗:

echo "<input type="radio"; 
// ^  ^ ^
// └ start end ┘  └ start 
echo "value="; 
// ^ ^
// └ end └ start 
// etc 

Read more about strings.確保你總是正確匹配引號。

1

你不能使用echo這樣的:

echo "$row["cname"]"; 

在數組索引中的雙引號解釋像字符串的結尾!

重要的是,如果你只回應一個變量,你不需要引號!

echo $row["cname"]; 

將是不夠的:)

0
$result=mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
    while($row = mysql_fetch_array($result)){ ?> 
     <input name="test" type="radio" value="<?php echo $row['cnumber']; ?>" /><?php echo $row['cname']; ?><br /> 
<?php } ?> 

提示:如果您想將HTML轉換成PHP,只需複製你的HTML代碼,在記事本中粘貼後。所以,你調用命令replace並將「更改爲」。