SQLのデータベースの一覧表示やデータの追加,削除,編集機能を追加するとき,
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>ページのタイトル</title> 6</head> 7<body> 8 <h2>データ一覧&検索&削除</h2> 9 <form method="get" action="test2018-20.php"> 10 <input type"text" name="price">円以上で絞り込む 11 <input type="submit" value="検索"><br> 12 </form> 13 <form method="get" action="test2018-20.php"> 14 <input type"text" name="search">から始まる品名で絞り込む 15 <input type="submit" value="検索"> 16 </form> 17 <?php 18 //ini_set('display_errors',1); 19 20 //MySQLのデータベースサーバへ接続(サーバ名、接続ユーザ名、パスワード、データベース名の順に指定) 21 $link=mysqli_connect("localhost","root","root","test2018"); 22 23 //SQL文を指定 24 if($_GET['price']>=0) 25 $query="SELECT * FROM shouhin where kakaku >= {$_GET['price']};"; 26 if($_GET['search']) 27 $query="SELECT * FROM shouhin where hinmei LIKE '{$_GET['search']}%';"; 28 else 29 $query="SELECT * FROM shouhin;"; 30 31 //PHPからSQL文を実行(接続名 $link に対して $query のSQL文を実行) 32 //結果は $result に格納される 33 $result=mysqli_query($link,$query); 34 35 //$resultから1行取り出して1項目ごとに配列$row(フィールド名をキーとした連想配列)に格納 36 //$row=mysqli_fetch_assoc($result); 37 38 //$row 配列の中身を表示 39 echo "<table border=1>"; 40 echo "<tr><th>番号</th><th>品名</th><th>価格</th><th>編集リンク</th><th>削除ボタン</th></tr>"; 41 while($row=mysqli_fetch_assoc($result)){ 42 echo "<tr><td>{$row['num']}</td> 43 <td>{$row['hinmei']}</td> 44 <td>{$row['kakaku']}</td> 45 <td> <a href=\"test2018-21.php?hinmei={$row['hinmei']}\">編集</a></td> 46 <td> <a href=\"test2018-20.php?num={$row['num']}\">削除</a></td></tr>"; 47 } 48 echo "</table>"; 49 50 if($_GET['num']){ 51 $query="DELETE FROM shouhin WHERE num = '{$_GET['num']}';"; 52 $result=mysqli_query($link,$query); 53 } 54 55 echo "<br><a href=\"test2018-22.php\">新規登録</a>"; 56 ?> 57 58</body> 59</html>
このソースの
PHP
1//SQL文を指定 2 if($_GET['price']>=0) 3 $query="SELECT * FROM shouhin where kakaku >= {$_GET['price']};"; 4 if($_GET['search']) 5 $query="SELECT * FROM shouhin where hinmei LIKE '{$_GET['search']}%';"; 6 else 7 $query="SELECT * FROM shouhin;";
この部分のelseがないと,最初にsafariで開いたときにはデータが表示されず,elseを加えると削除ボタンを押しても,一度自分で更新をかけないとデータが正しく表示されません.
どのように改良すれば良いのでしょうか
sqlに
番号,品名,価格
のデータが入っています
safari とありますが、おそらくブラウザの種類は関係ないと思います(試してみてください)
差し支えなければ実際に解決した方法を回答にコメントいただければと。https://teratail.com/help/question-tips#questionTips4-2
回答2件
あなたの回答
tips
プレビュー