質問編集履歴

1 質問内容にソースコード追加

uep3vjz9wp

uep3vjz9wp score 18

2018/09/05 22:54  投稿

phpからsqlのupdate時に連番変数を繰り返し処理したい
お世話になります。
やりたいこと下記元コード
やりたいこと下記update.php 
1.1箇所目 sql ren1 = ?, ~(略)~ren10 = ?
2.2箇所目 $stmt->bindValue(5, $ren1, PDO::PARAM_STR);
       ren1 ~(略)~ren10
ren1 ~(略)~ren10のカラムを一つ一つ記述することなく行いたいです。
実際にはren100とか、もっと増えます。データ型はvarchar(300)です。
forとかで連番の変数を一気に格納したいと思っています。
for ($i = 1; $i <= 10; $i++) {
$array[$i] = ${"v".$i};
}
 このような形、又は100個とか記述することなく処理できないでしょうか?
処理の順番  
1.edit.php でデータベースから呼び出し編集する。  
2.update.php へpost。  
3.update.php でconfig_post.phpを読み込む。  
```php
//元コード
//edit.php
<?php
require_once ( __DIR__ .'/config_ken/db_kensaconfig.php');
try {
   if (empty($_GET['id'])) throw new Exception('Error');
   $id = (int) $_GET['id'];
   $dbh = new PDO("mysql:host=localhost;dbname=$databasename;charset=utf8", $user, $pass);
   $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $sql = "SELECT * FROM $dbtablename WHERE id = ?";
   $stmt = $dbh->prepare($sql);
   $stmt->bindValue(1, $id, PDO::PARAM_INT);
   $stmt->execute();
   $result = $stmt->fetch(PDO::FETCH_ASSOC);
   $dbh = null;
} catch (Exception $e) {
   echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>";
   die();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>内容変更フォーム</title>
</head>
<body>
<h2>内容変更</h2>
<form method="post" action="update.php">
<font size="4">
<pre>     <a href='list.php'>変更せず一覧に戻る</a></pre>
<br>
<input type="hidden" name="id" value="<?php echo htmlspecialchars($result['id'], ENT_QUOTES, 'UTF-8'); ?>">
<pre>     <input type="submit" value="変更する"></pre>
</form>
<table width=100% border=1 cellspacing=1>
<tr>
 <td>
管轄:
<select name="kankatsu">
<option value="A" <?php if($result['kankatsu'] === A) echo "selected" ?>>A</option>
<option value="B" <?php if($result['kankatsu'] === B) echo "selected" ?>>B</option>
<option value="C" <?php if($result['kankatsu'] === C) echo "selected" ?>>C</option>
<option value="D" <?php if($result['kankatsu'] === D) echo "selected" ?>>D</option>
</select>
 </td>
 <td>
状況:
<select name="subject">
<option value="指導中" <?php if($result['subject'] === 指導中) echo "selected" ?>>指導中</option>
<option value="その他" <?php if($result['subject'] === その他) echo "selected" ?>>その他</option>
<option value="完結" <?php if($result['subject'] === 完結) echo "selected" ?>>完結</option>
</select>
 </td>
</tr>
<tr>
 <td>
担当:
<input type="text" name="tantou" value="<?php echo htmlspecialchars($result['tantou'] , ENT_QUOTES, 'UTF-8'); ?>">
 </td>
</tr>
<!-- 以下が前の質問の箇所です -->
<tr>
<?php
$renban = 1;
while ($renban <= 50) {
?>
<td><?php echo "連絡".$renban;?><br><br>平成年月日時分
</td>
 <td colspan="2">
<textarea name="<?php echo "rensuru"."$renban"; ?>" cols="120" rows="8">
<?php echo htmlspecialchars($result["ren"."$renban"], ENT_QUOTES, 'UTF-8');
     $renban++; ?>
 </textarea>
</td>
</tr>
<?php } ?>
</table>
</font>
</body>
</html>
```
```php
//update.php 
<?php
require_once ( __DIR__ .'/config_ken/db_kensaconfig.php');
require_once ( __DIR__ .'/config_ken/config_post.php');
try {
   if (empty($_POST['id'])) throw new Exception('Error');
   $id = (int) $_POST['id'];
   $dbh = new PDO("mysql:host=localhost;dbname=$databasename;charset=utf8", $user, $pass);
   $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//1箇所目
   $sql = "UPDATE $dbtablename
       SET kankatsu = ?, subject = ?,
       naiyou = ?, tantou = ?,
       ren1 = ?, ren2 = ?, ren3 = ?,
          ~(略)~
       ren9 = ?, ren10 = ?
       WHERE id = ?";
   $stmt = $dbh->prepare($sql);
   $stmt->bindValue(1, $kankatsu, PDO::PARAM_STR);
   $stmt->bindValue(2, $subject, PDO::PARAM_STR);
   $stmt->bindValue(3, $naiyou, PDO::PARAM_STR);
   $stmt->bindValue(4, $tantou, PDO::PARAM_STR);
//2箇所目
   $stmt->bindValue(5, $ren1, PDO::PARAM_STR);
          ~(略)~
   $stmt->bindValue(14, $ren10, PDO::PARAM_STR);
   $stmt->bindValue(15, $id, PDO::PARAM_STR);
   $stmt->execute();
   $dbh = null;
   echo "ID: " . htmlspecialchars($id,ENT_QUOTES,'UTF-8') ."更新が完了しました。<br>";
echo "<br>";
echo "<a href='list_kensa.php'>一覧に戻る</a>";
} catch (Exception $e) {
   echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>";
   die();
}
```
```php
//require_once ( __DIR__ .'/config_ken/config_post.php');の内容
<?php
   $kankatsu = $_POST['kankatsu'];
   $subject = $_POST['subject'];
   $naiyou = $_POST['naiyou'];
   $tantou2 = $_POST['tantou'];
$renban = 1;
while ($renban <= 50) {
   ${"ren".$renban} = $_POST{"rensuru".$renban};
   $renban++;
}
```
  • PHP

    28029 questions

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

  • SQL

    3655 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

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