• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:1つのデータだけピックアップ/SQL PHP)

1つのデータだけピックアップ/SQL PHP

このQ&Aのポイント
  • SQLのデータベースに格納したデータをPHPを使ってhtmlに表示しています。
  • 現在のやり方は、ピックアップしたいデータを修正画面で開き、「選択」を選択。ピックアップ画面では("SELECT * FROM sentaku WHERE sentaku = '選択'');としています。これでも一応はできるのですが、あくまでも1つだけを選びたいので、まず過去に選択していたデータを「選択」から外し、改めて選択したいデータを「選択」しなければいけません。
  • もっと簡単に(できればワンクリックで)実現する方法はないでしょうか。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

例えば今「我輩は猫である」が選択である状態だとして、「走れメロス」を修正画面で選択にして更新ボタンを押すとするよね。そうしたら「走れメロス」が選択になるんだけどこの時同時に「我輩は猫である」を選択でなくしたいって事だよね。 $pdo->query("UPDATE sentaku SET memo='$memo',sentaku='$sentaku' WHERE code=$code"); の前に $pdo->query("UPDATE sentaku SET ,sentaku=''"); というのを入れるだけで我輩やメロスの区別なく全部選択が外れる。その後 $pdo->query("UPDATE sentaku SET memo='$memo',sentaku='$sentaku' WHERE code=$code"); が動くのでそれが選択になってたらメロスが選択状態になる。 ~~~~Ver.1 ここから~~~~ if (!$error) { $pdo->query("UPDATE sentaku SET memo='$memo',sentaku='$sentaku' WHERE code=$code"); header('Location: index.php'); exit(); } ~~~~Ver.1 ここまで~~~~ ↓ ~~~~Ver.2 ここから~~~~ if (!$error) { $pdo->query("UPDATE sentaku SET sentaku=''"); // 一旦全部選択を解除する。メモはそのまま。 $pdo->query("UPDATE sentaku SET memo='$memo',sentaku='$sentaku' WHERE code=$code"); // 選ばれてた奴を選択にする header('Location: index.php'); exit(); } ~~~~Ver.2 ここまで~~~~ さて、これだと「走れメロス」をedit.phpで開いて、選択にせずにメモだけ更新した時に全部が未選択の状態になる。 なので、選択になっている時のみ他の選択を解除するという動きにした方が良いかも知れない。 ~~~~Ver.3 ここから~~~~ if (!$error) { if("選択" === $sentaku) { // ←この判定方法は自分で考えてくれ $pdo->query("UPDATE sentaku SET sentaku=''"); // 一旦全部選択を解除する。メモはそのまま。 } $pdo->query("UPDATE sentaku SET memo='$memo',sentaku='$sentaku' WHERE code=$code"); // 選ばれてた奴を選択にする header('Location: index.php'); exit(); } ~~~~Ver.3 ここまで~~~~

pino1961
質問者

お礼

ご回答ありがとうございます。 アドバイス通りに書き換えたら、うまくいきました。 思い描いていた通りのものができました! $pdo->query("UPDATE sentaku SET sentaku=''"); の部分は、今後いろいろと応用できそうです。 Ver.3 についても、今から勉強します。 この度はありがとうございました。 今後も勉強を続けますので、また機会がありましたらよろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A