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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

839閲覧

crudシステムのarray foreachを使った編集機能

kazumad

総合スコア9

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/04/11 04:47

編集2021/04/11 08:51

質問させてください。
現在php htmlでクラッドシステムを作っています。
編集の時の処理を今までキーと値を一つづついれていたのを
今後の拡張性を考えforeachを使い連想配列、追加に対応できるように色々コードを書き換えましたがうまくいきません
少しだけ動いたコードが下のコードですですが一番下の'birthday' => $input_birthdayしか編集できません
私の現在の問題解決力では解決できないと判断して質問しました 
回答よろしくお願いします
Crud.phpの下の部分です
public static function update($id, array $data)

{ $mysqli = self::connect(); foreach ($data as $key => $value); { var_dump($key, $value); $sql2 = "UPDATE `crud_test` SET `{$key}` = '{$value}' WHERE `id` = {$id}"; var_dump($sql2); $result = $mysqli->query($sql2); return $result; }

}
edit_post.php

php

1$data = array( 2 'name' => $input_name, 3 'tel' => $input_tel, 4 'email' => $input_email, 5 'birthday' => $input_birthday 6); 7$result = Crud::update($id,$data); 8header('location: ./index.php');

Crud.php

php

1public static function update($id, array $data) 2 3 { 4 $mysqli = self::connect(); 5 foreach ($data as $key => $value); 6 { 7 var_dump($key, $value); 8 $sql2 = "UPDATE `crud_test` SET `{$key}` = '{$value}' WHERE `id` = {$id}"; 9 var_dump($sql2); 10 $result = $mysqli->query($sql2); 11 return $result; 12 } 13}

php

1<?php 2ini_set( 'display_errors', 1 ); 3 4include './Crud.php'; 5?> 6<!doctype html> 7<html lang="ja"> 8<head> 9 <meta charset="UTF-8"> 10 11 12 <title>crud</title> 13</head> 14 15<body> 16<h1>CRUD 練習</h1> 17<a href="add.php">新規登録</a> 18<br> 19 20<?php $id = $_GET['id'] ?? null ?> 21<?php $name = $_GET['name'] ?? null ?> 22<?php $tel = $_GET['tel'] ?? null ?> 23<?php $email = $_GET['email'] ?? null ?> 24<?php $birthday = $_GET['birthday'] ?? null ?> 25 26<form action="" method="get"> 27 <input type="number" name="id" value="<?php echo $id ?>"> 28 <input type="text" name="name" value="<?php echo $name ?>"> 29 <input type="text" name="tel" value="<?php echo $tel ?>"> 30 <input type="text" name="email" value="<?php echo $email ?>"> 31 <input type="text" name="date_of_birth" value="<?php echo $birthday?>"> 32 <input type="submit" name="submit" value="検索"> 33 34</form> 35 36 37<!-- テーブル--> 38<table border="1"> 39 <tr> 40 <th>id</th> 41 <th>name</th> 42 <th>tel</th> 43 <th>email</th> 44 <th>birthday</th> 45 <th>編集</th> 46 <th>削除</th> 47 48 </tr> 49 50 51 <?php $result = Crud::get($id, $name, $tel, $email,$birthday); ?> 52 <?php while ($data = $result->fetch_assoc()): ?> 53 <tr> 54 <td><?php echo $data['id'] ?></td> 55 <td><?php echo $data['name'] ?></td> 56 <td><?php echo $data['tel'] ?></td> 57 <td><?php echo $data['email'] ?></td> 58 <td><?php echo $data['birthday'] ?></td> 59 <td><a href="/edit.php?id=<?php echo $data['id'] ?>">編集</a></td> 60<!-- 削除ボタン押すと削除--> 61 <td><a href="/delete.php?id=<?php echo $data['id'] ?>">削除</a></td> 62 63 </tr> 64 <?php endwhile; ?> 65 66</table> 67</body> 68</html> 69

php

1<?php 2include "./Crud.php"; 3//idなぜここで受け取れる?title.phpから下のコードでアドレスバーに表示させてGET方式で送ってきている 4/*<td><a href="/blog_edit.php?id=<?php echo $data['id'] ?>">編集</a></td>*/ 5$id = $_GET['id']; 6$result = Crud::get($id); 7$data = $result->fetch_assoc(); 8?> 9<html lang="ja"> 10<head> 11 <meta charset="UTF-8"> 12 <title>ブログテスト</title> 13 14 <style> 15 label { 16 display: block; 17 } 18 </style> 19</head> 20<body> 21 22<main> 23 <h1>顧客情報編集</h1> 24 25 <section> 26<!-- id手動でアドレスバーからgetでid送っていいる 遷移--> 27<!-- ここの書き方理解する事!! list.phpの編集ページへのリンクコード--> 28 <form action="/edit_post.php?id=<?php echo $data['id'] ?>" method="post"> 29 <!-- <input type="text" name="id" value="--><?php //echo $data['id'] ?><!--">--> 30 <label>name</label> 31 <input type="text" name="name" value="<?php echo $data['name'] ?>"> 32 <br> 33 <br> 34 <label>tel</label> 35 <input type="text" name="tel" value="<?php echo $data['tel'] ?>"> 36 <br> 37 <br> 38 <label>email</label> 39 <input type="text" name="email" value="<?php echo $data['email'] ?>"> 40 <br> 41 <br> 42 <label>birthday</label> 43 <input type="text" name="birthday" value="<?php echo $data['birthday'] ?>"> 44 <br> 45 <br> 46 <input type="submit" name="submit" value="更新"> 47 </form> 48 </section> 49</main> 50</body> 51</html> 52 53 54 55 56 57 58 59 60

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

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

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

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

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

guest

回答1

0

自己解決

foreach ($data as $key => $value);
{
ここの ; が邪魔していたみたいでした
あとreturn をforeach {}の外に出しました
foreach ($data as $key => $value)
{

public static function update($id, array $data) { $mysqli = self::connect(); foreach ($data as $key => $value); { var_dump($key, $value); $sql2 = "UPDATE `crud_test` SET `{$key}` = '{$value}' WHERE `id` = {$id}"; var_dump($sql2); $result = $mysqli->query($sql2); } return $result; }

それともっと良い書き方を書いておきます

public static function update($id, array $data) { $mysqli = self::connect(); $set = ''; foreach ($data as $key => $value) { if ( $set ) { $set .= ','; } $set .= "`{$key}` = '{$value}'"; } $sql2 = "UPDATE `crud_test` SET {$set} WHERE `id` = {$id}"; $result = $mysqli->query($sql2); return $result; }

投稿2021/04/12 06:02

kazumad

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問