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

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

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

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

データベース

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

HTML

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

受付中

PHP データベースで動くプログラムを作成したい

garchomp.
garchomp.

総合スコア0

PHP

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

データベース

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

HTML

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

2回答

0評価

0クリップ

5閲覧

投稿2020/11/09 08:46

前提・実現したいこと

データベースを使った掲示板を作っています
編集判断用フォーム$karaがからの場合通常投稿でid 名前 コメント 時間を表示
削除フォームに該当id パスワード入力で削除
編集フォームに該当id パスワード入力で投稿フォームおよび編集判断用フォーム$karaにidを表示、文字を入力しなおし投稿するとidが該当する1文の名前、コメント差し替え(編集)という動きをしたいです

発生している問題・エラーメッセージ

名前、コメントのみを表示、削除、編集するコードを書いたら成功したのですが、時間とパスワード機能を付けたら通常投稿もできなくなってしまいました

### 該当のソースコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>51</title> </head> <body> <?php //データベースへの接続 $dsn = 'mysql:dbname=******;host=localhost'; $user = '**-******'; $password = '*******'; $pdo = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); //テーブル作成 $sql = "CREATE TABLE IF NOT EXISTS AAA" ." (" . "id INT AUTO_INCREMENT PRIMARY KEY," . "name char(32)" . "comment TEXT" . "date DATE" . "password TEXT" .");"; $stmt = $pdo->query($sql); //データ挿入 $sql = $pdo -> prepare("INSERT INTO AAA (name, comment, date, pass) VALUES (:name, :comment :date, :pass,)"); $sql -> bindParam(':name', $name, PDO::PARAM_STR); $sql -> bindParam(':comment', $comment, PDO::PARAM_STR); $sql -> bindParam(':date', $comment, PDO::PARAM_STR); $sql -> bindParam(':password', $comment, PDO::PARAM_STR); //name comment passが埋まっていて、編集判断用の$karaが空いていたら if (!empty($_POST['name']) && (!empty($_POST['comment']))&& (!empty($_POST['pass']))&& (empty($_POST['kara']))){ $name = ($_POST["name"]); $comment = ($_POST["comment"]); $pass = ($_POST["pass"]); $date = date("Y/m/d H:i:s"); $sql -> execute(); } //削除機能 if((!empty($_POST['delete'])) && (!empty($_POST['dpass']))){//deleteフォームが埋まっていたら $id = ($_POST["delete"]); $dpass = ($_POST["dpass"]); $sql = 'SELECT * FROM AAA WHERE id=:id '; //idが一致する行を抜き出し $stmt = $pdo->prepare($sql); // ←差し替えるパラメータを含めて記述したSQLを準備し、 $stmt->bindParam(':id', $id, PDO::PARAM_INT); // ←その差し替えるパラメータの値を指定してから、 $stmt->execute(); // ←SQLを実行する。 $results = $stmt->fetchAll(); foreach ($results as $row){ if($row['id'] == $id && $row['pass'] ==$dpass ){ //idが一致する行のidとpassが削除フォームと一致したら $sql = 'delete from AAA where id=:id'; $stmt = $pdo->prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->execute(); } } } //編集準備 if(!empty($_POST['edit'])&&(!empty($_POST['edipass']))){ //編集フォームが埋まっていたら $id = ($_POST["edit"]); $edipass = ($_POST["edipass"]); $sql = 'SELECT * FROM AAA WHERE id=:id'; //idが一致する行を抜き出し $stmt = $pdo->prepare($sql); // ←差し替えるパラメータを含めて記述したSQLを準備し、 $stmt->bindParam(':id', $id, PDO::PARAM_INT); // ←その差し替えるパラメータの値を指定してから、 $stmt->execute(); // ←SQLを実行する。 $results = $stmt->fetchAll(); foreach ($results as $row2){ //編集 if(!empty($_POST['kara'])){ //編集判断フォームが埋まっていたら $id = ($_POST["kara"]); if($row2['id'] == $id && $row2['pass'] ==$edipass){ //idが一致する行のidとpassが編集フォームと一致したら $name = ($_POST["name"]); $comment = ($_POST["comment"]); $sql = 'UPDATE AAA SET name=:name,comment=:comment WHERE id=:id'; $stmt = $pdo->prepare($sql); $stmt->bindParam(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':comment', $comment, PDO::PARAM_STR); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->execute(); } } } } //表示 $sql = 'SELECT * FROM AAA'; $stmt = $pdo->query($sql); $results = $stmt->fetchAll(); foreach ($results as $row3){ //$rowの中にはテーブルのカラム名が入る echo $row3['id'].','; echo $row3['name'].','; echo $row3['comment'].','; echo $row3['date'].','; echo "<hr>"; } ?> <!--変数をvalueに入れて投稿フォーム記述--> <form action="" method="post"> <input type="text" name="name" placeholder="名前" value="<?php echo $row2['name'];?>"></br> <input type="text" name="comment" placeholder="コメント" value="<?php echo $row2['comment'];?>"></br> <input type="text" name="pass" placeholder="パスワード"> <input type="submit" name="" value="投稿"></br> <!--編集判断材料text あとで隠す--> <input type="text" name="kara" value="<?php echo $row2['id'];?>"> </form></br> <!-- 削除フォームと編集フォーム--> <form action="" method="post"> <input type="text" name="delete" placeholder="削除対象番号"></br> <input type="text" name="dpass" placeholder="パスワード"> <input type="submit" name="" value="削除"></br> </form></br> <form action="" method="post"> <input type="text" name="edit" placeholder="編集対象番号"></br> <input type="text" name="epass" placeholder="パスワード"> <input type="submit" name="" value="編集"></br> </form></br> </body> </html>

試したこと

一度名前コメントのみを表示した場合はうまくいったので時間かパスワード機能が問題かと思いif文を中心に間違いを探したのですがうまくいかなくて困っています
このコードを見ておかしく感じた点をどんどん教えていただきたいです

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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

データベース

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

HTML

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