質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

292閲覧

配送リスト管理システのコード(php)

bigin

総合スコア67

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/10/09 13:50

編集2017/10/09 14:37

現在配送システムの管理ページを政策しているのですが、エラーが出まくっていて先に進めません、、、以下エラー内容です。

Parse error: parse error, expecting `'('' in /Library/WebServer/Documents/system.php on line 18

お尋ねしたいこと
①フォームから格納したデータを呼び出すプログラムのやり方は問題ないでしょうか?
<?php ?>のつけどころがわからない。これであっていますでしょうか?

以下コードです。
よろしくお願いいたします。

<!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> <link rel="stylesheet" href="style.css" type="text/css"> <title>システム管理</title> <body> <?php $dsn = "mysql:dbname=delivery_system;host=localhost;charset=utf8"; $user = "root"; $password = ""; try{ $db = new PDO($dsn,$user,$password); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql='insert into delivery_list (name,prefecture,city,address,type,tel,person_name,copies,set_type) values(:name,:prefecture,:city,:address,:type,:tel,:person_name,:copies,:set_type)'; $stt = &db -> prepare(&sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stt ->execute(array(':name' => [$_POST['name'],':prefecture' => $_POST['prefecture'],':city' => $_POST['city'],':address' => $_POST['address'],':type' => $_POST['type'],':tel' => $_POST['tel'],':peron_name' => $_POST['person_name'],':copies' => $_POST['copies'],':set_type' => $_POST['set_type']])); }catch(PDOException $error){ echo "接続失敗:".$error->getMessage(); die(); } <table border='1' class="TableStyle1" width="1000"> <tr><th>編集</th><th>名称</th><th>都道府県</th><th>市区町村</th><th>番地</th><th>区分</th><th>電話番号</th><th>担当者名</th><th>部数</th><th>設置/配布</th><th>消去</th></tr> <?php $sql = "SELECT * FROM table_name"; $stmt = $db->query($sql) foreach($stmt as $row){ ?> <tr> <td><?php echo htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['prefecture'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['city'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['address'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['type'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['tel'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['person_name'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['copies'],ENT_QUOTES,'UTF-8'); ?></td> <td><?php echo htmlspecialchars($row['set_type'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <?php } ?> </table> </body> ?> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/09 14:12

ツッコミどころが複数あって、何が聞きたいのかわかりません。エラーメッセージなどは明記してください。また、何を聞きたいのか絞って質問してください。
bigin

2017/10/09 14:21

失礼しました。ご確認ください。
guest

回答2

0

エラー内容に記載のエラーの発生箇所は特定できませんでした。
ご提示いただいているコードがsystem.phpということで認識あっておりますでしょうか。

①フォームから格納したデータを呼び出すプログラムのやり方は問題ないでしょうか?

処理の前半ではINSERT文によりデータの登録が行われているように見えます。
いずれかのページからPOSTでフォームデータが渡される画面なのでしょうか。

後半の処理では取得したデータを表示するような記述がありますが、これがファイルの全文なのであれば、SELECT文等によるデータの取得はどこにも記述されていないようです、と書いていましたが追記されているようですね。詳しく見ていませんが、こちらはデータがあれば動作するのではないでしょうか。

INSERTの箇所にもおかしいと思われる点があります。
':name' =>の直後から最後の記述までが[ ]で囲まれているため、下記のように解釈されます。
これは想定の内容になっているでしょうか?

Array ( [:name] => Array ( [0] => [:prefecture] => [:city] => [:address] => [:type] => [:tel] => [:peron_name] => [:copies] => [:set_type] => ) )

<?php ?>のつけどころがわからない。これであっていますでしょうか?

最初の<?phpと最後の?>が対応するのだとすれば、記述がネストしています。
<?php ?>はネストして記述することはできません。
一部を抜粋し、ついでにheadタグの不存在など修正すると下記のような<?php ?>の記載対応となるものと思われます。

php

1<!DOCTYPE html> 2<html> 3<head> 4(略) 5 <title>システム管理</title> 6</head> 7<body> 8<?php 9$dsn = "mysql:dbname=delivery_system;host=localhost;charset=utf8"; 10() 11 die(); 12} 13?> 14 <table border='1' class="TableStyle1" width="1000"> 15(略) 16<?php 17$sql = "SELECT * FROM table_name"; 18$stmt = $db->query($sql); 19foreach($stmt as $row){ 20?> 21 <tr> 22(略) 23 </tr> 24<?php 25} 26?> 27 </table> 28</body> 29</html>

追記:
下記コメントでも触れましたが、質問に記載のエラーメッセージは下記行の記述が原因と思われます。

php

1$stt = &db -> prepare(&sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));

bash

1$ cat -n 95631.php 2 1 <?php 3 2 $dsn = "mysql:dbname=delivery_system;host=localhost;charset=utf8"; 4 3 $user = "root"; 5 4 $password = ""; 6 5 try{ 7 6 $db = new PDO($dsn,$user,$password); 8 7 $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 9 8 $sql='insert into delivery_list (name,prefecture,city,address,type,tel,person_name,copies,set_type) 10 9 values(:name,:prefecture,:city,:address,:type,:tel,:person_name,:copies,:set_type)'; 11 10 $stt = &db -> prepare(&sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); 12 11 $stt ->execute(array(':name' => [$_POST['name'],':prefecture' => $_POST['prefecture'],':city' => $_POST['city'],':address' => $_POST['address'],':type' => $_POST['type'],':tel' => $_POST['tel'],':peron_name' => $_POST['person_name'],':copies' => $_POST['copies'],':set_type' => $_POST['set_type']])); 13 12 }catch(PDOException $error){ 14 13 echo "接続失敗:".$error->getMessage(); 15 14 die(); 16 15 } 17$ php -l 95631.php 18PHP Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting '(' in 95631.php on line 10 19 20Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting '(' in 95631.php on line 10 21Errors parsing 95631.php

対応としては、&を$に置き換えてください。

php

1$stt = $db -> prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));

また、下記箇所の記述もSQL中に改行が含まれるので望ましくありません。

php

1 $sql='insert into delivery_list (name,prefecture,city,address,type,tel,person_name,copies,set_type) 2 values(:name,:prefecture,:city,:address,:type,:tel,:person_name,:copies,:set_type)';

コード中で改行する場合は、文字列を分割して結合するような対応とした方がよいかと思います。

php

1 $sql='insert into delivery_list (name,prefecture,city,address,type,tel,person_name,copies,set_type)' 2 . ' values(:name,:prefecture,:city,:address,:type,:tel,:person_name,:copies,:set_type)';

投稿2017/10/09 14:48

編集2017/10/10 05:56
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigin

2017/10/09 15:03

ご回答ありがとうございます。 >いずれかのページからPOSTでフォームデータが渡される画面なのでしょうか。 はい、そうです。 >INSERTの箇所にもおかしいと思われる点があります。 こちらも修正しました。 ><?php ?>はネストして記述することはできません。 確かにネストされていました。 ご指摘いただいた点おっしゃる通りでした。ありがとうございます。ただ、まだエラーが変わらないので他もおかしな点がありそうです、、、ちょっと地道に調べて見ます。
退会済みユーザー

退会済みユーザー

2017/10/09 15:19

エラーの発生箇所がもし提示されていない部分にあるのだとすれば、指摘のしようもありません。エラー発生箇所の特定のために、まずは全てコメントアウトするなどして動作ができる状態にしてから、部分ごとに確認を進められるとよいでしょう。
退会済みユーザー

退会済みユーザー

2017/10/09 15:22

読み飛ばしていましたが、下記の&は$db、$sqlなのではありませんか? $stt = &db -> prepare(&sql
bigin

2017/10/10 11:51

ご指摘ありがとうございます。ただ、エラー状態が変わらなかったので初めから検証してみますm(._.)m
guest

0

①フォームから格納したデータを呼び出すプログラムのやり方は問題ないでしょうか?

データを呼び出す記述はどこにも書かれていません。

<?php ?>のつけどころがわからない。これであっていますでしょうか?

問題ないと思います。

投稿2017/10/09 14:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bigin

2017/10/09 14:35

ありがとうございます。 >データを呼び出す記述はどこにも書かれていません。 SELECT文を追加して見ました。もしよろしければ再度ご確認頂けますと幸いです。
退会済みユーザー

退会済みユーザー

2017/10/09 14:35

何を確認して欲しいんですか?
bigin

2017/10/09 14:38

①フォームから格納したデータを呼び出すプログラムのやり方は問題ないでしょうか? 上記についてです。
退会済みユーザー

退会済みユーザー

2017/10/09 14:40

動かしてみればわかることだと思いますが、あっていればテーブルにレコードセットが表示されるはずですね。動作させて動かないのでしたら、間違っていると言うことです。 まず、$row がなんの値も代入されることなく、突然出ていることに気づいていますか?
bigin

2017/10/09 15:04

>$row がなんの値も代入されることなく、突然出ていること foreachで&stmtの値を代入するために登場させたつもりですが、その前に値を代入しておかなければいけないということでしょうか?勉強不足ですみません。もう一度foreachについて調べて見ます。
退会済みユーザー

退会済みユーザー

2017/10/09 15:18

PDOについて、公式マニュアルを調べましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問