初心者ですが、php、mysqlにてネットの情報を参考にしながらなんとかDB上のレコードの一覧をユーザーごとに表示できるようになりました。一覧表示されているレコードのidから個別画面へ移動し、それを修正したいと思っています、個別画面にはレコードのidに格納されている情報がセットされそれを修正しUPDATEするイメージです。修正するボタンをクリックするとURLにはidが2つ入っている状況です。そして修正画面には何もデータが格納されていない状況です。
画面遷移はログイン画面→一覧表示画面(index.php)→個別の修正画面(update.php)という流れです。
開発環境はXAMPP、PHP7.4.6
コードがつぎはぎで醜いかもしれませんが、ご教示お願い致します。
※update.phpについては動作確認のため、不完全です
index.php
<?php session_start(); //データベースユーザー $user='root'; $password=''; //利用するデータベース $dbName='TEST'; //mySQLサーバ $host='localhost'; //mySQLのDSN文字列 $dsn="mysql:host={$host};dbname={$dbName};charset=utf8"; $pdo=new PDO($dsn,$user,$password); //プリペアドステートメントのエミュレーションを無効にする $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); //例外がスローされる設定にする $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //SQL作成 $sql="SELECT * from syuho where name='".$_SESSION['name']."'"; //プリペアドステートメントを作る $stm=$pdo->prepare($sql); $stm->execute(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>日報入力</title> <link rel="stylesheet" href="style.css"/> </head> <body> <div id="wrap"> <div id="head"> <h1>入力</h1> </div> <div id="content"> <p>ようこそ<u><?php echo htmlspecialchars($_SESSION['name']);?></u>さん</p> <h3>これまでの入力内容確認</h3> <table> <tr><th>id</th><th>勤務者</th><th>勤務日</th><th>勤務開始時刻</th><th>勤務終了時刻</th><th>休憩時間</th> <th>業務内容</th><th>その他</th><th>通勤区間</th><th>通勤距離</th><th>ユーザー名</th><th>修正</th></tr> <?php foreach($stm as $row):?> <tr><td><?php echo $row[0]?></td><td><?php echo $row[1]?></td><td><?php echo $row[2]?></td> <td><?php echo $row[3]?></td><td><?php echo $row[4]?></td><td><?php echo $row[5]?></td><td><?php echo $row[6]?></td> <td><?php echo $row[7]?></td><td><?php echo $row[8]?></td><td><?php echo $row[9]?></td><td><?php echo $row[10]?></td> <td> <form action="update.php" method="GET"> <input type="hidden" name="id" value="<?php echo $row[0];?>""> <input type="submit" value="修正する"> </td></tr> <?php endforeach;?> </table> <p> <a href="regist.php">管理画面へ</a> </p> </div> <a href="admin_login.php">管理者ログイン</a> <p> <form method="POST" action="logout.php"> <input type="submit" value="ログアウト" onclick="Location.href='logout.php'"> </form> </p> </body> </html>
update.php
session_start(); $id=$_POST['id']; //データベースユーザー $user='root'; $password=''; //利用するデータベース $dbName='NATURE'; //mySQLサーバ $host='localhost'; //mySQLのDSN文字列 $dsn="mysql:host={$host};dbname={$dbName};charset=utf8"; try{ $pdo=new PDO($dsn,$user,$password); //プリペアドステートメントのエミュレーションを無効にする $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); //例外がスローされる設定にする $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //SQL作成 $sql="SELECT id,kinmu FROM syuho where id=$id"; //プリペアドステートメントを作る $stm=$pdo->prepare($sql); //SQLを実行する while($row=$stm->fetch(PDO::FETCH_ASSOC)){ echo('<td>'.$row['id'].'</td>'); echo('<td>'.$row['kinmu'].'</td>'); } $stm->execute(); } catch (Exception $e){ echo '<span class="error">エラーがありました</span><br>'; echo $e->getMessage(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>修正</title> <link rel="stylesheet" href="style.css"/> </head> <body> <div id="wrap"> <div id="head"> <h1>修正</h1> </div> <div id="content"> <p>修正してください</p> <form method="POST" action="update_exe.php"> ID<br/> <input type="text" name="id" value="<?php echo $row['id'];?>"> 勤務者<br/> <input type="text" name="kinmu" value="<?php echo $rpw['kinmu'];?>"> </form> </div> </body> </html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/28 12:05