2011-02-19 14 views
0

こんにちは私は、mysqlからHTML入力タグに変数を配置するために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

ご迷惑をおかけして申し訳ございません。いくつかの理由から、4行のものは機能しませんでした。 – Niall

答えて

5

echo "<input type="radio"; 

あなたはそれを書かなければならないだけでこれを行う

echo "$row["cname"]"; 

をこのように:

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文字列には一意引用符を使用する必要があります。なぜなら、PHPの文字列には変数を持たないからです。読みやすくするためです。例えば'echo '

+0

パーフェクト、ありがとう! – Niall

1

あなたが引用符で囲まれた文字列引用している:このようなものは動作しません

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をデバッグするのは難しく、エラーが発生しやすくなります(ご覧のとおり)。 HTMLに関してはIDEからのサポートもなくなります。

代わりに、HTMLにPHPを埋め込む:

<?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 "$row["cname"]"; 

二重引用符は文字列の最後のように解釈されます!

Hwr、変数だけをエコーし​​ている場合は、引用符は必要ありません。

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 } ?> 

ヒント:PHPにHTMLに変換したい場合は、単にメモ帳に貼り付けた後、あなたのhtmlコードをコピーします。ですから、あなたはコマンドを置き換えて "to \"に変更します。

関連する問題