忍者ブログ

からすまる日誌

2020041302

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2020041302

セレクトはよく使うので
専用のメソッドを作って
書き出しまでやってしまいましょう
 

 
ここの"c_id"は""の中なので、¥をつけて無効化するよ
 
本来echo "<SELECT name="c_id" id="c_id">";と書きたいが
これだと「echo "<SELECT name="」で一回終わってしまうので
無効化が必要
 
  while($row = $rs->fetch(PDO::FETCH_ASSOC)){
   echo "<option value=\"1\">";
  }
こうしたいが
valueのなかみは1じゃなくて$row["c_id"]にしたいですよ 
まず1と書いてみて、
そのあとはめこんでいくんですよ
 
echo "<option value=\"{$row["c_id"]}\">";
 
この{}はなくてもいいらしいが一応つけますよ
 


 
これが
 
こうなるよ
 


ここには{}が必要なのだが、
それ以前に、
ここの""は無効化してはいけないのだ
なぜかというと、この部分はphpに解読して実行もらわないといけない。phpの文章だから。
 
その前のoption value=\"
の部分の無効化は「htmlなので」「そうやって書き出してくれ」という意味で必要。
 
phpの部分はパースしてもらいたいから""がそのまま要るし、htmlの部分はパースされちゃ困るから無効化する
 

selectedやcheckedにちゃんとなるように工夫?
 
呼び出し元を
<?php $obj->makeCatSelect($c_id); ?>
に変更
 
 
こうなった
 
 public function makeCatSelect($c_id){
  $sql = "SELECT * FROM cats";
  $rs = $this->pdo->query($sql);//レコードセットの中に結果セットを入れる形
  
  echo "<SELECT name=\"c_id\" id=\"c_id\">\n";
  
  //ダミーのオプション
  echo "<option value=\"\">以下から選択</option>\n";
  
  while($row = $rs->fetch(PDO::FETCH_ASSOC)){
  
   $selStr = $c_id==$row["c_id"] ? " selected" : "";//三項演算。selectedか何もないか。あるにせよないにせよechoする。一致すればselected、なければ""
  
   //option value="1"うどん</option>みたいなのを出力したい
   echo "<option value=\"{$row["c_id"]}\"{$selStr}>";
   echo htmlspecialchars($row["cat"],ENT_QUOTES);
   echo "</option>\n";
  }
  echo "</select>\n";
 }
 

さてform.php
編集だけでなく削除ボタンもやりたい
 
submitボタンは複数あってもいい
ただどちらが押されたかはname属性で判断させる

 
 
押されたほうだけの値が来ているのが分かる 
 
→1個のフォームから異なる挙動をすることができる
なんならupdateやなんとかもメソッドで呼び出して使える
 

jsからアクセスできるようにidもつけるよ
<p>
     <input type="submit" name="sub1" id="sub1" value="編集">
     <input type="submit" name="sub2" id="sub2" value="削除">
    </p>
 

プリベントデフォルトをやるので
 //編集ボタン
 $('#sub1').on('click',function(e){
  
 });
としておくよ
eが入るよ
 
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30