2011-11-08 13 views
0

だから私はmysql_fetch_arrayを持っていますが、mysqlデータの一部に一重引用符や二重引用符が含まれていると問題に遭遇しています。これは私のコードのダウン易しく書き直さバージョンである:edit_form()関数は、ユーザが容易に編集できるようにした形態でバック入力の値に現在の項目の値を送信するために使用されphp var値に引用符が含まれています

while($row=mysql_fetch_array($list)) { 
    echo "<tr>"; 
    echo "<td onclick='edit_form(\"" . $row['item'] . "\");'>" . $row['item']; 
    echo "</td></tr>"; 
    } 

UPDATEコマンドを正しいプライマリキーID(無関係のために削除したもの)と共にmysqlに送信します。私が持っている唯一の問題は、ユーザが一重引用符または二重引用符をフォームに入れた後にonclick属性を壊してしまうことです。助けてください!!私はかなりphpに新しいとこれを把握することはできません。私はhtmlentites()とhtml_entity_decode()を使いこなしましたが、まだどこにいなくなっています。どうもありがとうございます!

答えて

2

$row['item']に設定してから文書に挿入してください。

だからあなたの "易しく書き直さダウン" のコードは次のようになります。

while($row=mysql_fetch_array($list)) { 
    $item = htmlspecialchars($row['item']); 
    echo "<tr>"; 
    echo "<td onclick='edit_form(\"" . $item . "\");'>" . $item; 
    echo "</td></tr>"; 
} 
+0

これは、edit_form()関数の中に\ "が入っていてもいなくてもうまくいかなかったのですが、エコーがhtmlとして書き出していて、ブラウザがエンティティを解釈していると思います... json_encode – Sean

0

私はjson_encodeを使用して助言します。そうすれば、htmlspecialcharsが逃すかもしれない特殊なケース(改行など)を心配する必要はありません。

while($row=mysql_fetch_array($list)) { 
    echo "<tr>"; 
    echo "<td onclick='edit_form(" . json_encode($row['item'], JSON_HEX_APOS) . ");'>" . $row['item']; 
    echo "</td></tr>"; 
} 
+0

ありがとうございました!今では一重引用符を使用すると壊れてしまいます...まだ数字をつける必要がありますそれは...あなたはとても役に立ちました! – Sean

+0

'' json_encode'の周りに 'addslashes'を入れてください。 –

+0

それを忘れてしまいました。 JSON_HEX_APOSフラグを追加して、一重引用符を処理しました。 – regality

0

あなたのコード内の以下の行の代わりに、オリジナルを試してみて、それが動作するかどうかを確認:

echo "<td onclick='edit_form(\"" . str_replace('"',"&quote;",$row['item']) . "\");\">" . $row['item']; 

そして、あなたがあなたの場合はちょうど逆にそれを置き換える、$アイテムのフィールドを表示したいと思います。たとえば、代わりに「"」の&quote;を取得:

$qoute_free= str_replace('&quote','"',$passed_value); 

あなたはJavaScriptでそれを使用している場合、関数は以下のようになります

function edit_form(passed_value) 
{ 
    new_value=passed_value.replace(/&quote;/g,'"'); 
} 
0

私はちょうど戻って私の<form>に値を入れている(彼らは<td>をクリックする)と、彼らはそれがMySQLのUPDATEの代わりに、INSERTを使用する別の.phpファイルにデータを指示SUBMIT打ったとき。私は最終的に動作するいくつかのコードを見つけました!

  • $listは私が文書
  • $itemの先頭に走っmysql_query<form>でその表示の正確MySQLの今

    while($row=mysql_fetch_array($list)){ 
        $item = json_encode($row['item']); 
        $item = str_replace("'","&#39;",$item); 
        echo "<td onclick='edit_form(" . $item . ");'>" . $row['item'] . "</td>"; 
    } 
    

の私のコラムの一つのタイトルであります<td>がクリックされたとき(jQuery input.val($item)によって)、テーブルに正しく$row['item']を介して表示されます。私はそれがどのように動作しているか(エンコードがどのように動作しているか)を正確に理解していませんが、うれしいです。クレイジー!!!!応答していただきありがとうございます!あなたの努力に感謝します!

関連する問題