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

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

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

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

HTML

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

5693閲覧

フォームに変数をvalue属性でいれることはできるでしょうか?【追記しました】

退会済みユーザー

退会済みユーザー

総合スコア0

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

HTML

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/10/21 15:46

編集2020/10/21 22:42

前提・実現したいこと

冒頭で設置したフォームのテキスト部分に、後半のif文を満たすと出てくる変数をvalue表示したいのですができるでしょうか?
$_POST[name] = $変数 →何も起こらず
もう一度nameとvalueを下に記述 valueに変数を代入すればいけるのでは→エラー
変数を代入する書式?は調べてわかりましたが変数が生まれたタイミングで書こうとしてもうまくいきません

PHP

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>mission_3-4</title> 6</head> 7<body> 8 9 <form action="" method="post"> 10   <input type="text" name="namae" value="名前"> 11   <input type="text" name="comment" value="コメント"> //ここに入れたい 12   <input type="submit" name="sousin"> 13 </form> 14 15 <form action="" method="post"> 16   <input type="text" name="delete" value="番号"> 17   <input type="submit" name="削除" value="削除"> 18 </form> 19 20 <form action="" method="post"> 21   <input type="text" name="edit" value="番号"> 22   <input type="submit" name="edit" value="編集"> 23 </form> 24 25<?php 26 $filename="mission_3-4.txt"; 27 $namae= ($_POST["namae"]); 28 $comment = ($_POST["comment"]); 29 $date = date("Y年m月d日 H:i:s"); 30 $delete = ($_POST[delete]); 31      32 33 if (file_exists($filename)) { 34 $num = count(file($filename))+1; 35 } else { 36 $num = 1; 37 } 38 39$format = $num."<>".$namae."<>".$comment."<>".$date; 40 41 if ( !empty($namae)||!empty($comment) ){ 42 $ret_array = file(filename); 43 $fp = fopen($filename,'a+'); 44 fwrite($fp, $format.PHP_EOL); 45 fclose($fp); 46 } 47 48 if( !empty($delete) ){ 49 $ret_array=file($filename); 50 $fp2 = fopen($filename,'w'); 51 for($a=0; $a < count($ret_array); $a++){ 52 if($a == $delete -1){ 53 continue; //スキップ 54 } 55 fwrite($fp2, $ret_array[$a]); 56 } 57 fclose($fp2); 58 } 59 60//編集 61 if(!empty ($edit)){ 62 $ret_array=file($filename); 63 for($i=0; $i<count($ret_array);$i++){ 64 $ex=explode("<>",$ret_array[$i]); 65 if($i==$edit-1){ 66 $editbango=$ex[0]; 67 $editnamae=$ex[1]; // 68 $editcomment=$ex[2]; // 69 //この2つを冒頭のnamae,commentにvalueで入れたい 70 } 71 } $_POST[namae]=$editnamae //試したこと① 72       <input type="text" name="namae" value="php echo $editnamae ?>"> 73   <input type="text" name="comment" value="php echo $editcomment ?>"> //試したこと② 74                                     //error 75 } 76 $filename="mission_3-4.txt"; 77 $lines = file($filename,FILE_IGNORE_NEW_LINES); 78 foreach($lines as $line){ 79 $lin = explode("<>", $line); 80 print $lin[0]." ".$lin[1]." ".$lin[2]." ".$lin[3]."<br/>"; 81 } 82 83?> 84</body> 85</html>

試したこと

質問をあさりましたが、先に出ているフォームをいじるスタイルのものが見つかりませんでした
かなり面倒くさいスタイルをとっているのでしょうか

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

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

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

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

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

m.ts10806

2020/10/21 22:54

テキストに保存する形式とはいえ、一通り作りなおさないとマズいですね。 そもそもこのままのコードでは別の場所でエラーでまくってるんでは。定数の未定義エラーとか、配列の参照エラーとか。 質問者さん自身も「基本的なこと」あたりからやり直す必要もあります。 https://www.php.net/manual/ja/language.variables.basics.php
退会済みユーザー

退会済みユーザー

2020/10/21 23:03

試したこと①②のあたりは試せることとりあえずやってみようと思って書いたので無茶苦茶だと思うのですが、他もぐちゃぐちゃになってますかね·····?今のところそれっぽく動いてはいるのですが·····
m.ts10806

2020/10/21 23:14

コードは書いたとおりにしか動かないので「惜しい」とかはないです。 「それっぽく」というもありません。true/falseのみ。
退会済みユーザー

退会済みユーザー

2020/10/22 03:54

今のところ編集機能以外は想像通りに動いていると思います それと回答ありがとうございます 正直わからない関数もあるので試しつつ調べて理解を目指します 今までテキストファイル形式のインターン教材でしたが、この簡易掲示板がおわったらデータベース方式に移るようです!
m.ts10806

2020/10/22 03:56

>この簡易掲示板がおわったらデータベース方式に移るようです! 環境は幾つでも作ろうと思ったら作れるので、自分で先にやってみては。
guest

回答2

0

ベストアンサー

冒頭で設置したフォームのテキスト部分に、後半のif文を満たすと出てくる変数をvalue表示したいのですがどう書くのでしょうか

そのままでは書けません。PHPコードは上から実行しますので、上の方で出力するHTMLに、下の方で生成される値を混ぜることはできません。

投稿2020/10/21 22:41

maisumakun

総合スコア146018

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

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

maisumakun

2020/10/21 22:44

いちおう、「PHPからJavaScriptを出力して、JavaScriptでフォームを書き換える」という方法はありますが、必要以上に煩雑になるだけですので、全くおすすめしません。
maisumakun

2020/10/21 22:46

あとは、「フォームの値を代入したい部分を関数化して、HTML内から呼ぶ」という方法も考えられます。
退会済みユーザー

退会済みユーザー

2020/10/21 23:00

やはり普通のやり方だとできませんよね どちらにせよ複雑になりそうです、ありがとうございました!
guest

0

フォームに変数をvalue属性でいれることはできるでしょうか?

若干日本語おかしいですが、「できます」
変数とはいえ単なる文字列を保管しているだけ。
HTMLとはいえそういう文字列の集合体。
HTMLとして正しく組めれば、「できます」

「どういうHTMLにすれば目的が達成できるか」が分かれば、
そのHTMLを出力するように組むだけです。
そのために「モック」といって、静的HTMLを作る工程が実装前にはあります。

あとはPHPの基本的な部分です。

すごく勘違いされている部分があるのですけど、form送信した場合は、結局送信先の冒頭からコードは流れます。「リクエスト」ですからね。

現状のコードだと、フォームのHTML出力の後にPOSTの情報を受け取る記述が書かれているので、フォームの初期値に入れられるような処理順になってないだけです。

例えば下記のようにすれば、「送信した値」を元のフォームの初期値にできます。
※動作未検証。処理順にのみフォーカスしたミニマムコード

php

1<?php 2$v = ""; 3if($_SERVER ['REQUEST_METHOD'] === 'POST'){ 4 $v = filter_input('INPUT_POST','v'); 5} 6 7?> 8<form method="post"> 9<input name="v" value="<?=$v ?>"/> 10<input type="submit" name="" value="送信"> 11</form> 12 13

テンプレートとロジックは分けろという実装における基本概念もあります。

「出力」は最後に来るものです。
「ロジック」部分は出力より前に書いておくのが通常です。

投稿2020/10/21 23:13

編集2020/10/21 23:17
m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問