• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索結果にラジオボタンを付加したい)

検索結果にラジオボタンを付加したい

このQ&Aのポイント
  • PHP初心者の方が、DBを検索して抽出結果を画面に表示する際に、検索結果にラジオボタンを付けて選択し、修正を行えるようにしたいです。
  • 現在は検索結果の件数の表示はできているが、ラジオボタンの付加がうまくいきません。
  • ソースコードを変更してみましたが、エラーメッセージが表示されます。どなたかご教授いただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

全体的なフローはみてませんが、文法エラーについてはクォーテーションを エスケープしていないからでしょうね >echo "<input type="radio" name="edit" value=".$row["name"]." />修正"; echo "<input type=\"radio\" name=\"edit\" value=\"".$row["name"]."\" />修正";

rieccchi
質問者

お礼

ありがとうございます! この行のエラーは解消され、ラジオボタンが現れました。 なので最初の質問に関しては解決したのですが、 検索結果が 条件を入れても入れなくても全件抽出されてしまいます。 このラジオボタンを追加する前は 検索条件に合った結果が抽出されていました。 もし 理由がお分かりになりましたら教えて頂けますでしょうか。

その他の回答 (3)

  • bakabona
  • ベストアンサー率40% (4/10)
回答No.4

なかなか混乱されていますね。 あなたが作ろうとしているサイトは多分、2つ、または3つのページに 分ける事ができるはずです。 検索ページ(検索フォームページ、検索結果ページ) 修正ページ しかしながら、あなたのコードには1つ分のコード(検索結果ページ)しか 書かれていませんので、質問に答えるのは至難の技に思えます。 そこでヒントをいくつかお答えしておきます。 まずはフォームに対する誤解から。 あなたは多分、修正ボタンを押せば、<form>~</form>で囲まれた所全部が まとめて送信されると思ってますよね。 でも実際には、修正ボタンの箇所 <form method="POST" action="edit.php"> <input type="submit" value="修正" name="sub2"> </form> の部分のデータしか送信されません。いっしょにラジオボタンのデータも送信したいなら、 ラジオボタンと修正ボタン全体を1つのフォームで囲う必要があります。 tableタグの前に <form method="POST" action="edit.php"> を移動して、ラジオボタンを挟んでいるフォームタグは余計なので削除します。 echo "<form>";//削除 echo "<input type='radio' name='edit' value='".$row['name']."' />修正"; echo "</form>";//削除 これで、あなたがフォームの受け取り先に指定した edit.php(修正ページ)へ、 どのデータを修正したいのかを伝える事ができるようになります。 修正ページedit.phpでは、$_POST['edit']でラジオボタンの値を受け取って、 検索のためのSQL文を作ります。この時、$_POSTや$_GETで受け取った値を そのままSQL文に代入するのは御法度です。 必ずエスケープします。 //mysqlの場合 $name = mysql_real_escape_string($_POST['edit']); $sql = "SELECT name, setsumei, kubun FROM word WHERE name='$name'"; これで、修正したいデータが取得できます。 ちなみに、データベースから取得したデータや、$_POST, $_GETなどの値を をそのままecho文で出力するのも御法度です。 最低限htmlspecialcharsを通して表示しましょう。 $row_name = htmlspecialchars($row['name'],'ENT_QUOTES'); echo "<input type='radio' name='edit' value='".$row_name."' />修正"; あとは修正用のフォームとコードをedit.phpに書いていきます。 編集用のページには条件分岐が必要になります。 どのフォームから送られたデータなのかをしっかり分けて書く必要があります。 検索結果ページから送られたデータなのか、それとも 「修正を保存する」ボタンを押して送られたデータなのか。 と、このくらいで。 どうぞ頑張って下さい。

rieccchi
質問者

お礼

ありがとうございます。 色々こちらの意図を読んでいただき、感謝いたします。 超初心者で そんなのも分かっていないのか、 というレベルでして恐縮なのですが、 書いて頂いたこと、かなり参考になりそうですので、 これから頑張ってみたいと思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>条件を入れても入れなくても全件抽出されてしまいます。 >このラジオボタンを追加する前は >検索条件に合った結果が抽出されていました。 ラジオボタンにかかわる部分で全件抽出になるような記述はありません。 s_wordの1~3をきちんとPOSTで渡ってないんじゃないですか? そもそもラジオボタンを1個フォームにいれてあるという意図がわかりません チェックしたかどうかであればチェックボックスでしょう。 それとこのラジオボタンはサブミットされるような記述になっていません。 このラジオボタンを設置する意味がまったくないように見受けられます

rieccchi
質問者

お礼

そうだと思います。 これから直していきたいと思います。 >s_wordの1~3をきちんとPOSTで渡ってないんじゃないですか? 検索結果が複数あってもその中から一つだけに対して 修正を入れられるようにしたいと 考えていましたのでラジオボタンと考えました。 でも仕様も見直す必要がありそうなので検討したいと思います。 ありがとうございます。 >そもそもラジオボタンを1個フォームにいれてあるという意図がわかりません >チェックしたかどうかであればチェックボックスでしょう。

  • jnossan
  • ベストアンサー率41% (5/12)
回答No.2

文法エラーです。ダブルクォーテーションをエスケープしてください。 echo "<input type=\"radio\" name=\"edit\" value=\"".$row["name"]."\" />修正";

rieccchi
質問者

お礼

ありがとうございます! この行のエラーは解消され、ラジオボタンが現れました。 なので最初の質問に関しては解決したのですが、 検索結果が 条件を入れても入れなくても全件抽出されてしまいます。 このラジオボタンを追加する前は 検索条件に合った結果が抽出されていました。 もし 理由がお分かりになりましたら教えて頂けますでしょうか。

関連するQ&A

専門家に質問してみよう