入力が終わったのでtest1.phpに戻りましょう
while文で回す
先にhogehogeを書いて、そこにphpを当てはめると良い
//<option value="">hogehoge</option>
↓
<option value="<?php echo $row["p_id"]; ?>">
文字列をPHPに書き出すときはサニタイズが必要
<?php echo $row["pref"]; ?>
↓
<?php echo htmlspecialchars($row["pref"],ENT_QUOTES); ?>
サニタイズ/関数の二階建て
よくあるエラー:
アンエクスペッド 予期しないところにある
アンディファインド 定義されてないぞ
トークン 記号とか識別子あたりがおかしくないか?
--->test1.php
<?php
$user="root";
$pass="";
$host="localhost";
$dbname="school";
$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
$pdo=new PDO($dsn,$user,$pass);
$sql="SELECT * FROM prefs";//全部取ってくる
$res=$pdo->query($sql);
//結果セットをばらすフェッチは下でやる
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>練習</title>
<link rel="stylesheet" href="css/style.css">
<script src="../jquery-3.4.1.min.js"></script>
</head>
<body>
<h1>test01</h1>
<div id="container">
<form action="" method="post">
<select name="s1" id="s1">
<?php while ($row=$res->fetch(PDO::FETCH_ASSOC)): ?>
<option value="<?php echo $row["p_id"]; ?>">
<?php echo htmlspecialchars($row["pref"],ENT_QUOTES); ?>
</option>
<?php endwhile; ?>
</select>
</form>
</div>
<script src="js/form.js"></script>
</body>
</html>
今回のエラーは見つけやすかった
$res=$pdo->query($sql);
pdoがpodになっていたので
では非同期通信で、大阪府を選択するとそこの名物を出力したい
APIを自前で用意する必要あり
最初は名前だけ書き出して、あとあとチェックボックス化する
APIのつくりかた
①DBに取りに行く
②取りに行った結果をジェイソンの形式に変換
③echo
④APIで使えるようになる
では新規ファイル
APIは原則として表示されないのでプログラムだけ
foods_api.phpで保存
またいつもの
ダラードスンはダブルクオート、マイエスキューエルコロン、ホストはふにふにかっこダラーホスト、フニフニ閉じ、セミコロン、ディービーネームはふにふにかっこダラーディービーネーム、ふにふに閉じ、セミコロン、チャーセット=utf8、ダブルとじ、セミコロン
ここまで
--->foods_api.php
<?php
if(empty($_GET["p_id"])){
exit();//処理を停止
$user="root";
$pass="";
$host="localhost";
$dbname="school";
$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
$pdo = new PDO($dsn,$user,$pass);
?>