2012-03-11 21 views
1

誰かが私を喜ばせることができるのだろうかと思います。ラジオボタンの選択から動的リストを作成

以下のコードを組み合わせて、ユーザーがラジオボタンを選択してmySQLレコードを取得できるようにしました。また、HTMLフォーム上に表を作成します。

フォーム

<html> 
<head> 
<script type="text/javascript"> 

function ajaxFunction(name) 
{ 
var browser = navigator.appName; 
if(browser == "Microsoft Internet Explorer") 
{ 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 

} 
else 
{// code for IE6, IE5 
xmlhttp=new XMLHttpRequest(); 

} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("my_div").innerHTML=xmlhttp.responseText; 
} 
} 

xmlhttp.open("GET","getrecords.php?dateoftrip="+name,true); 
xmlhttp.send(); 
} 

function getquerystring() { 
var form = document.forms['frm1']; 
var word = form.word.value; 
qstr = 'w=' + escape(word); // NOTE: no '?' before querystring 
return qstr; 
} 


</script> 


<style type="text/css"> 
<!-- 
.style1 { 
    font-family: Calibri; 
    font-size: 14px; 
} 
--> 
</style> 
</head> 
<body> 

<form action="getrecords.php" method="get" name="frm1"> 

<table width="148" border="0"> 

<tr> 
<td width="152"><p class="style1">Select a date from below</p> 
    <div align="center"> 
    <?php 
include("db.php"); 
$query="select userid, dateoftrip from finds group by dateoftrip"; 
$result=mysql_query($query); 
while (list($userid, $dateoftrip) = 
    mysql_fetch_row($result)) 
    { 

    echo"<tr>\n" 
    . 
    '<td><input type='radio' name='name' dateoftrip value='{$userid}' onchange="ajaxFunction(this.value)"/></td>\n' 
    .'<td><small>{$dateoftrip}</small><td>\n' 
    .'</tr>\n' 
    } 
    echo"<tr><td colspan=\"3\">"; 
    echo"<br>"; 
    echo"</td></tr>"; 
    echo'</table>'; 

?> 
    </div></td> 
</tr> 
</table> 
</form> 
<div id="my_div"></div> 
</body> 
</html> 

getrecords.php

<?php 
include("db.php"); 
$dateoftrip= $_GET['dateoftrip']; 
$findname= $_GET['findname']; 
$finddescription= $_GET['finddescription']; 

$query="select * from finds where dateoftrip='$dateoftrip'"; 
echo "<table>"; 
$result=mysql_query($query); 
while($rows=mysql_fetch_array($result)){ 

echo "<tr>"; 
echo "<td>Find Name : </td>"; 
echo "<td>".$rows['findname']."</td>"; 
echo "</tr>"; 

echo "<tr>"; 
echo "<td>Find Description : </td>"; 
echo "<td>".$rows['finddescription']."</td>"; 
echo "</tr>"; 
} 
echo "</table>"; 
?> 

私がいる問題は、私は次のエラーが表示されていることであると私はよく分からない理由:Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /homepages/2/d333603417/htdocs/development/ajaxfunction.php on line 69ラインと69は私のhtmlフォームコードのこの行です: '<td><input type='radio' name='name' dateoftrip value='{$userid}' onchange="ajaxFunction(this.value)"/></td>\n'

私はしばらくの間これをやってきましたが、これまでに私は解決に失敗しました。私はちょうど誰かがこれを見て、私が間違っていることを私に知らせることができるかどうか疑問に思った。あなたの引用は、その行にめちゃくちゃされ

感謝

答えて

0

変更、それはあなたがそれらの引用符をエスケープし、エコー文の末尾にセミコロンを追加する必要があります。

echo "<tr>\n <td><input type='radio' name='name' dateoftrip value='$userid' onchange=\"ajaxFunction(this.value)\"/></td>\n <td><small>$dateoftrip</small><td>\n</tr>\n"; 
+0

こんにちは、多くのお返事をいただきありがとうございます。私は今、エラーメッセージを取り除いたが、残念ながら私は検索されたレコードでテーブルを作成することはできません。あなたが私が間違っているかもしれないアイデアをお持ちですか?多くのありがとう – IRHM

+0

とあなたはテーブルを作成する上でどのようなエラーがありますか?何も表示しない? – riso

+0

こんにちは、残念ながら私はエラーを受け取りません。これを少し上手に強調するために私のページへのリンクを入れました。 http://www.mapmyfinds.co.uk/development/ajaxfunction.php種類について – IRHM

1

。外側の文字列に二重引用符を使用すると、変数が補間され、\nなどのエスケープ文字はリテラルとして解釈されません。 "\ n" 。 \ n " " \ n " 。" {$ dateoftrip} \ n " "; \ n ";

echo <<<HTML 
    <tr> 
    <td><input type='radio' name='name' dateoftrip value='{$userid}' onchange='ajaxFunction(this.value)'/></td> 
    <td><small>{$dateoftrip}</small><td> 
    </tr> 
HTML; 

A:あなたはまた、よりきれいHEREDOC statement,でこれを実現し、完全に引用問題とlinebreksを回避することができ

// ------ ^^^^セミコロン....さらに注意してください:あなたのスクリプトはSQLインジェクションに対して脆弱です。 mysql_real_escape_string()で、すべての入力値をエスケープ:この

echo"<tr>\n" 
    . 
    "<td><input type='radio' name='name' dateoftrip value='{$userid}' onchange="."ajaxFunction(this.value)"."/></td>\n" 
    ."<td><small>{$dateoftrip}</small><td>\n" 
    ."</tr>\n"; 
+1

OPのコードには、その行にセミコロンがありません。 – jprofitt

+0

@jprofitt上記のおかげです。それで、私は複数行の連結の代わりにHEREDOCを主張するのです。 –

+0

こんにちは、HEREDOCsは確かに私には新しく、私はこれらを見なければなりません。そして、SQLインジェクションについての正式な注釈。お待ちしています – IRHM

1

$dateoftrip = mysql_real_escape_string($_GET['dateoftrip']); 
$findname = mysql_real_escape_string($_GET['findname']); 
$finddescription = mysql_real_escape_string($_GET['finddescription']); 
// etc... 
+0

こんにちは私の投稿に返信する時間。上記のように、私は今エラーメッセージを取り除くことができましたが、残念ながら、検索結果でテーブルを作成できません。敬具 – IRHM

関連する問題