大学生のモノづくり記録

Webページ作成(主にHTML、CSS、PHP、jQuery)、ArduinoやRaspberry Piを使って物作りの勉強した記録を載せたり/趣味のことを書いていきたいなと思います。(クオリティはかなり低いです)

ポートフォリオサイトを作りなおしてみた 今の報告

 みなさまお久しぶりです。最近更新を停止して申し訳ございません。訳としましては、言い訳にも見られてもおかしくは、無いのですが、今のご時世の影響で、大学は、再開したものの出席ついての課題がかなり多く自分自身課題を処理するので、キャパオーバーな状態でしたが、段々慣れてきましたので、再開使用と思いますが今までのように1週間に1回は、厳しいような気がしますがなるべく頑張ります。

 

 今回は、前回まで作成をしてエラーが出て積んでいたポートフォリオサイトの作りなおしで、DB(データベース)ですが完全では、無いのですが、少し前進したので、記事にしていこうと思います。

 

 前回の記事では、接続まで行いましたが、その後、実際にDBをPHPの中にSQL文を記入してどうなるがをやってみたのですがまぁ、すごいエラーに襲われました。出たエラーは

*1

 

*2{

          $date=$row;
        }*///この文があるとUODATE文が受け取れないので不要

の部分が原因らしいのですか、$srmt->fetch()で行ってしまうと、UPDATE文が受け取れなくなると書かれているサイトがあり参考にして実行したのですが、更新しデータを入力すると、

今まで出来なかったDBへのデータの追加を行うことができましたが、画面上には、表示されません。

(実際の画面)

datataim(スペルも違うし、おかしいぞ自分)

f:id:kyozinnlove55:20200602021009p:plain

f:id:kyozinnlove55:20200602021029p:plain

のような結果でした、今後の課題、この問題の解決と解決後、ログインページを作成し、ログイン後情報を更新するような仕組みを作成していこうと思います。

 また、もしエラーの解決法、アドバイスがありましたら、コメント欄でお教えください。

 

 

ここにソースコードを示す

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="main.css">
  <link rel="stylesheet" type="text/css" href="style.php">
  <title>自分分析シート</title>
</head>
<body>
  <header class="header">
  <h1>Portfolio Site</h1>
  </header>

  <?php
    echo "<h1>氏名:ド素人</h1>";
    echo"<h2>現職業:大学3年 情報学部所属</h2>";
 ?>
 <img class="img1" src="img/megane.jpg" alt="プロフィール写真">
 <?php
    echo"<p>学歴としては、工業高校を卒業し情報について学んでみたいという思いから大学に進学しました。現在は、余裕があればプログラムの勉強したり趣味に時間(コチラが多い)を費やしたいですが、工業高校での学習の差で講義についていくのに精一杯な大学3年生です。よろしくお願いいたします。</p>"
 ?>
  <h1>現時点での技術力</h1>
 <div id=hyou>
  <table border="3">
    <tr class="th">
      <td>評価(令和2年4月28日時点)</td>
      <td>かなりできる</td>
      <td>できる</td>
      <td>普通</td>
      <td>怪しい</td>
      <td>はじめたばかり</td>
    </tr>
    <tr>
      <td>C言語(学習歴2年)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>C++言語(学習歴1年)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>JAVA言語(学習歴1年)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>HTML(学習歴半年)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>CSSを(学習歴2か月)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>jQuery(学習歴1k月)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>arduino(学習歴2年)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td>Go言語(学習歴1か月)</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
    </tr>
 </table>
 </div>
 <div class="butu">
  <h1>今までの成果物</h1>
  <li>練習で自分の趣味をまとめたサイト作成(HTML、CSS使用)</li>
  <li>自分用の予定メモ(HTML,PHP,CSSで作成)</li>
  <li>USB扇風機をarduinoで制御(arduino)</li>
  <li>超音波で人が来た時にLEDで報告する(arduino)</li>
  <p>今までの作成物はブログにまとめているので見てもらうとうれしいです→<a href="http://mychallengo.hatenablog.com/">ド素人のもの作り記憶の証</a></p>
 </div>
    <form action="main.php" method="post">
      <div>
        <label for="name">氏名</label>
        <input type="text" id="name" name="name"> 
      </div>
      <div>
        <label for="what">内容</label>
        <input type="text" id="what" name="what">
      </div>
       <input type="submit" name="send" value="送信する">
  </form>
  <h1>情報更新</h1>
  <?php
    $name="";
    $what="";
    $date=date("Y-m-d H:i:s");

    $name=$_POST['name'];
    $what=$_POST['what'];

  ?>

  <?php
    $dsn = 'mysql:dbname=sample3;host=localhost;charset=utf8';//データベースの情報を設定
    $user = 'root';//ユーザー選択
    $password = '';//パスワード
    
    // $dbh = new PDO($dsn, $user, $password);
      // $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      // echo '接続に成功しています';
      
    try{

      $dbh = new PDO($dsn$user$password);//データベースに接続
      $dbh->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);//エラーをどこまで報告するのかの指定
      // $sql="INSERT INTO user (id,name,message,date) VALUE (NULL :name, :message ,:date)";//SQL文でデータベースに追加    
      $sql="INSERT INTO user (name,what,datataim) VALUE (:name,:what,'{date}')";
        $stmt=$dbh->prepare($sql);//プリペアードステートメント
        //$stmt->bindValue(':id',id,PDO :: PARAM_INT);
        $stmt->bindValue(':name',$name,PDO :: PARAM_STR);
        $stmt->bindValue(':what',$what,PDO :: PARAM_STR);
       //$stmt->bindValue(':datetime',$date,PDO :: PARAM_INT);
        $stmt-> execute();
        $date = array();
        $count = $stmt->rowCount();
        /*while($row =$stmt->fetch(PDO::FETCH_ASSOC)){
          $date=$row;
        }*///この文があるとUODATE文が受け取れないので不要
        echo '処理が終了しました。';
        echo '接続に成功しています'
  }catch (PDOException $e){
      print('Connection failed:'.$e->getMessage());
      die();
  }

  var_dump($count);
  var_dump($date);
  ?>

  <table border=1>
    <tr>
    <th>氏名</th>
    <th>内容</th>
    <th>日にち</th>
    </tr>
    <?php foreach($date as $row):?>
    <tr>
   <!-- <td><!--?php echo $row['id']; ?--></td> -->
    <td><?php echo [$name?></td>
    <td><?php echo $row['what']; ?></td>
    <td><?php echo $row['datataim']; ?></td>
    </tr>
  <?php endforeach?>
  </table>
 <div class="google">
  <h1>もしよろしければ感想をお願いいたします。</h1>
 </div>
</body>
</html>

 

 

 

*1:Connection failed:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

*2:Error:SQLSTATE[HY000]: General error

 

が多かったです。

Connection failed:SQLSTATE[HY093]: Invalid parameter number: parameter was not definedのエラーの原因としては、SQL文のエラーが原因で発生していましたので、SQL文を修正すればエラーは、消えました。

 

Error:SQLSTATE[HY000]: General errorのエラーは、

 /*while($row =$stmt->fetch(PDO::FETCH_ASSOC