前提・実現したいこと
今回は「いきなりはじめるPHP ワクワク・ドキドキの入門教室」からの質問です。
単刀直入に言うと、本書のp122~125「アンケート自動保存機能を追加しよう!」で詰まっています。
具体的には、入力したアンケートデータがphpMyAdminのテーブルに来ないのです。
本書で言えばp125のように「解答を入力して、サンクスページまで進む」→「アンケートデータが(phpMyAdminのテーブル「anketo」内)に保存される」のようにしたいのですが、現在「解答を入力してサンクスページまで進めることはできるが、アンケートデータば保存されない」といった状態です。
現在の状況
最初に、「thanks.php」のコードを置いておきます。
SQL起動のコードは、以下のホームページより、「パスワードも入力しないとphpMyAdminに接続できない」という意見を参考にしています。
https://royal-fummy.com/blog/php-startup-with-mamp/
php
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>PHP基礎</title> 8</head> 9<body> 10 11<?php 12 13 // phpMyAdminに接続する 14 15 $dsn='mysql:dbname=phpkiso;host=localhost;charset=utf8'; 16 $user='root'; 17 $password='root'; 18 $dbh=new PDO($dsn, $user, $password); 19 20 ini_set('error_reporting', E_ALL); 21 22 $postNN = $_POST['nickname']; 23 $postEMAIL = $_POST['email']; 24 $postCOMMENT = $_POST['comment']; 25 26 $postNN = htmlspecialchars($postNN); 27 $postEMAIL = htmlspecialchars($postEMAIL); 28 $postCOMMENT = htmlspecialchars($postCOMMENT); 29 30 echo $postNN; 31 echo 'さん'.'<br>'; 32 echo 'ご意見ありがとうございました!'; 33 echo '<br>'; 34 echo '頂いたご意見『'; 35 echo $postCOMMENT; 36 echo '』'; 37 echo '<br>'; 38 echo $postEMAIL.'にメールをお送りしたのでご確認ください。'; 39 40 $mail_sub = 'アンケートを受け付けました。'; 41 $mail_body = $postNN."様へ/nアンケートご協力ありがとうございました。"; 42 $mail_body = html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); 43 $mail_head = 'From: xxx@xxx.co.jp'; 44 mb_language('Japanese'); 45 mb_internal_encoding("UTF-8"); 46 mb_send_mail($postCOMMENT,$mail_sub,$mail_body,$mail_head); 47 48 $sql='INSERT INTO anketo(nickname,email,comment) VALUES("'.$postNN.'","'.$postEMAIL.'","'.$postCOMMENT.'")'; 49 $stmt=$dbh->prepare($sql); 50 $stmt->execute(); 51 52 $dbh=null; 53 54 ?> 55 56</body> 57</html>
次に、ファイルの構成です。
このファイル内で、それぞれ「check_2.php」が「index.html」、「ifset.php」が「check.php」にあたります。「thanks.php」は本書と同じです。
git
1input -----------$ ls 2check_2.php ifset.php input.php thanks.php
データベース名は「phpkiso」、テーブル名は「anketo」です。
試したこと
基本的に本書の通りにコードは入力したので、スペルやクォーテーションのチェックを行いました。
ただし、クォーテーションは変えてしまうとサンクスページ自体表示できなくなってしまいます。
google検索も試しましたが、本書でつまずいた内容が乗っていることは少なく、目当ての情報も見つかりませんでした。
###最終目標
冒頭でもあげた通り、解答を入力してサンクスページまで進んだ後、サンクスページにまで来たデータを「code」2番目のデータとしてテーブルに追加されるようにすることです。
要は、「アンケート回答者がフォームから送ってきた解答をphpMyAdminで管理できるようにする」ことが最終目標です。
補足情報(FW/ツールのバージョンなど)
OS:mac
ブラウザ:chrome(最新のバージョン)
テキストエディタ:atom(ver:1.32.2)
サーバー:MAMP(free)5.2
以下、MAMP内の情報
PHP:7,1.12
mySQL:5.7.23