忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

基本(8) コロン:を使ったfor文

×

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

基本(8) コロン:を使ったfor文

データの編集画面 
 
追加:
<th>ID</th><th>テスト名</th><th>学年</th><th>学期</th><th>タイプ</th><th>編集</th>
echo("<td><a href=\"#\">編集</a></td>");
 
エスケープシーケンスで""の中に\"\"を入れる。

リンクを張ります。こういう風に。
<a href=\"tests_form.php?t_id={$row["t_id"]}\">編集</a>
 
[#IMAGE|a0396706_09222286.png|202001/30/06/|mid|1291|511#]
 

テスト登録画面も登録/編集になる

冒頭で分岐 
urlについてきたやつを:t_idに格納

無害化:
$t_name=htmlspecialchars($row["t_name"],ENT_QUOTES);
外から来たのは必ずhtmlspecialcharsする
 
これを付け足す
この中にデータベースの1番の内容などをechoしたい

なおfor文の「)」を閉じ忘れたとき出たエラー
Parse error: syntax error, unexpected '{', expecting ')' in C:\xampp\htdocs\php\makino\school\tests_form.php on line 59
 

    <?php for ($i=1;$i<=3;$i++) : ?>
     <label>
      <?php echo $i; ?>年<input type="radio" name="grade" id="grade<?php echo $i; ?>" value="<?php echo $i; ?>">
     </label>
    <?php endfor; ?>
 
for文の{}を使わない書き方
: つづく
endfor おしまい
 


駒井コナン君が解決してくれた。ありがたい。 
これが必要だった
 
<?php
 if(empty($_GET["t_id"])){
  //insert
  $title="作成";//
  $t_name="";//これを入れてないとエラーが出る
  $grade="";
  $term="";
  $type="";
 
ここまで
--->tests_form.php
 
<?php
 if(empty($_GET["t_id"])){
  //insert
  $title="作成";//
  $t_name="";//これらを入れてないとエラーが出る
  $grade=0;
  $term=0;
  $type=0;
  
  $background="<div class=\"insert\">";
 }else{
  //edit
  $title="編集";
  $background="<div class=\"edit\">";
  $user = "root";
  $pass = "";
  $host = "localhost";
  $dbname="school";
  $dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
  $pdo= new PDO($dsn,$user,$pass);
  $sql="SELECT * FROM tests WHERE t_id=:t_id";
  $stmt=$pdo->prepare($sql);
  $stmt->bindValue(":t_id",$_GET["t_id"],PDO::PARAM_INT);
  $stmt->execute();
  $row=$stmt->fetch(PDO::FETCH_ASSOC);
  $t_name=htmlspecialchars($row["t_name"],ENT_QUOTES);
  $grade=$row["grade"];
  $term=$row["term"];
  $type=$row["type"];
 
  if($row==1){
   $gradechk[]="checked=\"checked\"";
  }
 }
 $typeArr = ["","中間","期末","その他"];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
 <meta charset="utf-8">
 <title>テストの<?php echo $title ?></title>
 <link rel="stylesheet" href="css/style.css">
 <script src="../jquery-3.4.1.min.js"></script>
</head>
<body>
 <?php echo $background ?><!--div-->
 <div id="container">
  <h1>テストの<?php echo $title ?></h1>
  <form action="insert_t.php" method="post">
  
  <!--4行2列-->
  <table>
   <tr>
    <th><label for="t_name">テスト名</label></th>
    <td><input type="text" name="t_name" id="t_name" value="<?php echo $t_name; ?>"></td>
   </tr>
   
   <tr>
    <th>学年</th>
    <td>
    <?php for ($i=1;$i<=3;$i++) : ?>
     <label>
      <?php echo $i; ?>年
      <?php if($grade == $i): ?>
       <input type="radio" name="grade" id="grade<?php echo $i; ?>" value="<?php echo $i; ?>" checked="checked">
      <?php else : ?>
       <input type="radio" name="grade" id="grade<?php echo $i; ?>" value="<?php echo $i; ?>">
      <?php endif ?>
     </label>
    <?php endfor; ?>
    </td>
   </tr>
   
   <tr>
    <th>学期</th>
    <td>
    <?php for ($i=1;$i<=3;$i++) : ?>
     <label>
      <?php echo $i; ?>学期
      <?php if($term == $i) : ?>
       <input type="radio" name="term" id="term<?php echo $i; ?>" value="<?php echo $i; ?>" checked="checked">
      <?php else : ?>
       <input type="radio" name="term" id="term<?php echo $i; ?>" value="<?php echo $i; ?>"
      <?php endif ?>
     </label>
    <?php endfor; ?>
    </td>
   </tr>
   
   <tr>
    <th>テストの種類</th>
    <td>
    <?php for ($i=1;$i<=3;$i++) : ?>
     <label>
      <?php echo $typeArr[$i] ?>
      <?php if($type == $i): ?>
       <input type="radio" name="type" id="type<?php echo $i; ?>" value="<?php echo $i; ?>" checked="checked">
      <?php else: ?>
       <input type="radio" name="type" id="type<?php echo $i; ?>" value="<?php echo $i; ?>"
      <?php endif; ?>
     </label>
    <?php endfor; ?>
    </td>
   </tr>
  
  </table>
  <p><button type="submit">登録</button></p>
  
  </form>
  <p id="msg"></p>
 </div>
 
 </div>
 <script src="js/form.js"></script>
</body>
</html>
--->insert_t.php
<?php
 //デバック用の関数
 print_r($_POST);//どっちの記述でもよろしい
 
 if(empty($_POST["t_name"])
 ||empty($_POST["grade"])
 ||empty($_POST["term"])
 ||empty($_POST["type"])){
  header("Location:tests_form.php");
  exit();
  
 }else{
  //PDOでデータベースへの登録
  
  //まず基本の4セット
  $user = "root";
  $pass = "";
  $host = "localhost";
  $dbname="school";
  
  //データソースネーム
  $dsn = "mysql:host={$host};dbname={$dbname};charset=utf8";
  
  //PDOを生成
  $pdo= new PDO($dsn, $user, $pass);
  print_r($_POST);
  
  /*
  $sql="INSERT INTO tests(t_name,grade,term,type) VALUES (:t_name,:grade,:term,:type)";
  $stmt = $pdo->prepare($sql);//こんがり。
  
  $stmt->bindValue(":t_name",$_POST["t_name"],PDO::PARAM_STR);
  $stmt->bindValue(":grade",$_POST["grade"],PDO::PARAM_INT);
  $stmt->bindValue(":term",$_POST["term"],PDO::PARAM_INT);
  $stmt->bindValue(":type",$_POST["type"],PDO::PARAM_INT);
  $stmt->execute();
  header("Location: tests_list.php");
  exit();
   */
 }
?>
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R