質問編集履歴

3 追加

dog57

dog57 score 123

2017/08/29 20:29  投稿

PHPで編集機能を作成していますが、変更画面に遷移しません。
###前提・実現したいこと
PHPでテーブル一覧(①)を表示させた後に、変更画面(②)に遷移させたいです。
![イメージ説明](370184c066c4bb735750b483e451f695.png)
![イメージ説明](639d2ab9380ce8d785b96e9b997b89d9.png)
 
データベース内容  
![イメージ説明](91ac116fe2678b7ebb10df6487eed57d.png)  
###発生している問題・エラーメッセージ
テーブル一覧を表示させることはできました、変更画面に遷移しません。
![イメージ説明](90b9d5046aa6a60b87719b71d30d47d7.png)
編集ボタンを押すと、下記の画像のようになる。
![イメージ説明](c66c584e165492e7d6913125beeb1c44.png)
```
192.168.33.1:64947 [500]: /update2.php - Cannot use try without catch or finally in /home/vagrant/public_php/update2.php on line 43
```
###該当のソースコード
テーブル一覧画面 update1.php
```php
<?php
header("Content-type: text/html; charset=utf-8");
require_once("index_db.php");
$sql = "SELECT id, rank, nation, food, reason FROM country";
$statement = $pdo->query($sql);
// 結果の取得
$country = array();
foreach ($statement as $row) {
   $country[] = $row;
}
var_dump($country);
// データベース切断
$pdo = null;
?>
<!DOCTYPE html>
<html>
<head>
<title>国一覧</title>
</head>
<body>
<h1>国一覧</h1>
<table border='1'>
<tr><td>id</td><td>順位</td><td>国名</td><td>食べたい食べ物</td><td>理由</td></tr>
<?php
foreach($country as $row){
?>
<tr>
<td><?=$row['id']?></td>
<td><?=htmlspecialchars($row['rank'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['nation'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['food'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['reason'], ENT_QUOTES, 'UTF-8')?></td>
<td>
  <form action="update2.php" method="post">
  <input type="submit" value="編集">
  <input type="hidden" name="id" value="<?=$row['id']?>">
  </form>
</td>
</tr>
<?php
}
?>
</table>
</body>
</html>
```
変更画面 update2.php
```php
<?php
header("content-type: text/html; charset=utf-8");
require_once("index_db.php");
try {
if(empty($_POST)) {
  echo "<a href='update1.php'>update1.php</a>←こちらのページからどうぞ";
  exit();
}else {
 if (!isset($_POST['id']) || !is_numeric($_POST['id']) ){
      echo "idエラー";
      exit();
  }else {
   //プリペアドスタートメント
   $stmt = $dbh->prepare('select * from country where id=?');
   if ($stmt) {
     //プレースホルダへ実際の値を設定する
     $stmt->bind_param('id',$id);
     $id = $_POST['id'];
 //クエリの実行
 $stmt->execute();
 //結果変数のバインド
 $stmt->bind_result($id,$name);
 //値の取得
 $stmt->fetch();
 //ステートメント切断
 $stmt = null;
}else {
   echo $mysqli->errno . $mysqli->error;
}
}
}
}
//データベース切断
$pdo = null;
?>
<iDOCTYPE html>
 <!DOCTYPE html>
 <html>
<head>
 <title>変更画面</title>
</head>
<body>
<p>変更してください</p>
<form action="update3.php">
<input type="text" name="rank" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="nation" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="food" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="reason" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="submit" value="変更する">
</form>
</body>
 </html>
```
ご教授いただけたら嬉しいです。
宜しくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
PHP 5.6.30,mysql Ver 14.14,vagrant
  • PHP

    38950 questions

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

  • MySQL

    12106 questions

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

  • データベース

    2945 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

2 誤字

dog57

dog57 score 123

2017/08/29 20:27  投稿

PHPで編集機能を作成していますが、変更画面に遷移しません。
###前提・実現したいこと
PHPでテーブル一覧(①)を表示させた後に、変更画面(②)に遷移させたいです。
![イメージ説明](370184c066c4bb735750b483e451f695.png)
![イメージ説明](639d2ab9380ce8d785b96e9b997b89d9.png)
###発生している問題・エラーメッセージ
テーブル一覧を表示させることはできました、変更画面に遷移しません。
![イメージ説明](90b9d5046aa6a60b87719b71d30d47d7.png)
編集ボタンを押すと、下記の画像のようになる。
![イメージ説明](c66c584e165492e7d6913125beeb1c44.png)
```
192.168.33.1:64947 [500]: /update2.php - Cannot use try without catch or finally in /home/vagrant/public_php/update2.php on line 43
```
###該当のソースコード
テーブル一覧画面 update1.php
```php
<?php
header("Content-type: text/html; charset=utf-8");
require_once("index_db.php");
$sql = "SELECT id, rank, nation, food, reason FROM country";
$statement = $pdo->query($sql);
// 結果の取得
$country = array();
foreach ($statement as $row) {
   $country[] = $row;
}
var_dump($country);
// データベース切断
$pdo = null;
?>
<!DOCTYPE html>
<html>
<head>
<title>国一覧</title>
</head>
<body>
<h1>国一覧</h1>
<table border='1'>
<tr><td>id</td><td>順位</td><td>国名</td><td>食べたい食べ物</td><td>理由</td></tr>
<?php
foreach($country as $row){
?>
<tr>
<td><?=$row['id']?></td>
<td><?=htmlspecialchars($row['rank'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['nation'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['food'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['reason'], ENT_QUOTES, 'UTF-8')?></td>
<td>
  <form action="update2.php" method="post">
  <input type="submit" value="編集">
  <input type="hidden" name="id" value="<?=$row['id']?>">
  </form>
</td>
</tr>
<?php
}
?>
</table>
</body>
</html>
```
変更画面 update2.php
```php
<?php
header("content-type: text/html; charset=utf-8");
require_once("index_db.php");
try {
if(empty($_POST)) {
  echo "<a href='update1.php'>update1.php</a>←こちらのページからどうぞ";
  exit();
}else {
 if (!isset($_POST['id']) || !is_numeric($_POST['id']) ){
      echo "idエラー";
      exit();
  }else {
   //プリペアドスタートメント
   $stmt = $dbh->prepare('select * from country where id=?');
   if ($stmt) {
     //プレースホルダへ実際の値を設定する
     $stmt->bind_param('id',$id);
     $id = $_POST['id'];
 //クエリの実行
 $stmt->execute();
 //結果変数のバインド
 $stmt->bind_result($id,$name);
 //値の取得
 $stmt->fetch();
 //ステートメント切断
 $stmt = null;
}else {
   echo $mysqli->errno . $mysqli->error;
}
}
}
}
//データベース切断
$pdo = null;
?>
<iDOCTYPE html>
 <!DOCTYPE html>
 <html>
<head>
 <title>変更画面</title>
</head>
<body>
<p>変更してください</p>
<form action="update3.php">
<input type="text" name="rank" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="nation" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="food" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="reason" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="submit" value="変更する">
</form>
</body>
 </html>
```
ご教授いただけたら嬉しいです。
宜しくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
PHP 5.6.30,mysql Ver 14.14,vagrant
  • PHP

    38950 questions

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

  • MySQL

    12106 questions

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

  • データベース

    2945 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

1 誤字

dog57

dog57 score 123

2017/08/29 20:26  投稿

PHPで編集機能を作成していますが、変更画面に遷移しません。
###前提・実現したいこと
PHPでテーブル一覧を表示させた後に、変更画面に遷移させたいです。
PHPでテーブル一覧(①)を表示させた後に、変更画面(②)に遷移させたいです。
![イメージ説明](370184c066c4bb735750b483e451f695.png)
 
![イメージ説明](639d2ab9380ce8d785b96e9b997b89d9.png)
###発生している問題・エラーメッセージ
テーブル一覧を表示させることはできました、変更画面に遷移しません。
![イメージ説明](90b9d5046aa6a60b87719b71d30d47d7.png)
編集ボタンを押すと、下記の画像のようになる。
![イメージ説明](c66c584e165492e7d6913125beeb1c44.png)
```
192.168.33.1:64947 [500]: /update2.php - Cannot use try without catch or finally in /home/vagrant/public_php/update2.php on line 43
```
###該当のソースコード
テーブル一覧画面 update1.php
```php
<?php
header("Content-type: text/html; charset=utf-8");
require_once("index_db.php");
$sql = "SELECT id, rank, nation, food, reason FROM country";
$statement = $pdo->query($sql);
// 結果の取得
$country = array();
foreach ($statement as $row) {
   $country[] = $row;
}
var_dump($country);
// データベース切断
$pdo = null;
?>
<!DOCTYPE html>
<html>
<head>
<title>国一覧</title>
</head>
<body>
<h1>国一覧</h1>
<table border='1'>
<tr><td>id</td><td>順位</td><td>国名</td><td>食べたい食べ物</td><td>理由</td></tr>
<?php
foreach($country as $row){
?>
<tr>
<td><?=$row['id']?></td>
<td><?=htmlspecialchars($row['rank'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['nation'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['food'], ENT_QUOTES, 'UTF-8')?></td>
<td><?=htmlspecialchars($row['reason'], ENT_QUOTES, 'UTF-8')?></td>
<td>
  <form action="update2.php" method="post">
  <input type="submit" value="編集">
  <input type="hidden" name="id" value="<?=$row['id']?>">
  </form>
</td>
</tr>
<?php
}
?>
</table>
</body>
</html>
```
変更画面 update2.php
```php
<?php
header("content-type: text/html; charset=utf-8");
require_once("index_db.php");
try {
if(empty($_POST)) {
  echo "<a href='update1.php'>update1.php</a>←こちらのページからどうぞ";
  exit();
}else {
 if (!isset($_POST['id']) || !is_numeric($_POST['id']) ){
      echo "idエラー";
      exit();
  }else {
   //プリペアドスタートメント
   $stmt = $dbh->prepare('select * from country where id=?');
   if ($stmt) {
     //プレースホルダへ実際の値を設定する
     $stmt->bind_param('id',$id);
     $id = $_POST['id'];
 //クエリの実行
 $stmt->execute();
 //結果変数のバインド
 $stmt->bind_result($id,$name);
 //値の取得
 $stmt->fetch();
 //ステートメント切断
 $stmt = null;
}else {
   echo $mysqli->errno . $mysqli->error;
}
}
}
}
//データベース切断
$pdo = null;
?>
<iDOCTYPE html>
 <!DOCTYPE html>
 <html>
<head>
 <title>変更画面</title>
</head>
<body>
<p>変更してください</p>
<form action="update3.php">
<input type="text" name="rank" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="nation" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="food" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="text" name="reason" value="<htmlspecialchars($rank, ENT_QUOTES, 'UTF-8')?>">
<input type="submit" value="変更する">
</form>
</body>
 </html>
```
###補足情報(言語/FW/ツール等のバージョンなど)
PHP 5.6.30,mysql Ver 14.14,vagrant
  • PHP

    38950 questions

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

  • MySQL

    12106 questions

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

  • データベース

    2945 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る