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

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

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

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

Q&A

解決済

1回答

3066閲覧

【PHP】フォームデータの更新でテキストファイルの配列を入れ替える方法($_GET/ array_splice)

mako_0221

総合スコア87

PHP

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

0グッド

0クリップ

投稿2015/08/20 14:22

【PHP関連】初心者のため読みづらいコードを書いている事は理解しております、何卒、ご容赦ください。
以下のForm.php側でテキスト内容を更新する場合に、修正したい配列の要素をうまく指定できません。原因をご教示願います。(恐らく★のついている行の$_GET["lineno"]に原因があると考えています。)
そもそも本を読みながら作っており、なぜどのファイルでも$_GETをフォームでメソッド指定しておらず、まだname属性も指定していないのに、データの受け渡しが使えるのかも調べてもわかりません。素人で、大変恐縮ですが、$_GETの使い方を含めご教示を願います。(例えばisset($_GET["lineno"])というのは、どのデータを受け渡された又はセットしたことを意味するのかがピントきません、$_POSTであれば、必ずHTML1側のフォームタグにメソッドとname属性を指定するので、その中にある、データをsubmitすることによりデータが受け渡される事はりかいできるのですが、素人で本当にすみません)
何卒、宜しくお願い申し上げ上げます。

【Form.php】

<?php $filename ="//Applications/MAMP/htdocs/date.txt"; #上書きモードの場合 if(isset($_POST["uwagaki"])) { $Tenkai=file($filename); ★array_splice($Tenkai,$_GET["lineno"],1,$_POST["uwagaki"]."\n"); $fp2 = fopen ($filename,"w"); for ($i=0; $i<=count($Tenkai);$i++) { fwrite($fp2,$Tenkai[$i]); } fclose($fp2); }else{ #登録モードの場 合 $fp = fopen($filename, "a"); if(isset($_POST["date"])) { $date= $_POST["date"]."\n"; fwrite($fp,$date); fclose($fp); header("Location: http://localhost/List.php"); exit; } } ?> <html lang=ja>

<h>Non-titled</h></br>

<form action="Form.php" method="post"> <?php if (isset($_GET["lineno"])){

echo "<input type="text" name="uwagaki"" ;
}else{

echo "<input type="text" name="date"";
}

/*もし、入力後の?**であれば、 valueを入力しておく/

if (isset($_GET["lineno"]))
{
$pick = file ($filename);
//txtファイルから配列を取得する
$switch = $pick[$_GET["lineno"]];
//$pick配列から、lineno番目の要素を向いてくる
echo "value="$switch"";
}
?>
id="date">日
<input type="submit" name="regist"

<?php if (isset($_GET["lineno"])) { echo "value=\"更新する\">"; }else{ echo "value=\"登録する\">"; } ?> </form> </html>

【List.php】
<!登録したものをlist化したページ>

<?php $filename ="//Applications/MAMP/htdocs/date.txt"; $list = file($filename); foreach ($list as $lineno => $contents) { $contents= str_replace("|","",$contents); echo $lineno.":".$contents; echo "<a href= \"Form.php?lineno=$lineno\">編集する</a>"; echo "<br>"; } ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

$_GETか、$_POSTかですが、上記の例ではHTML本文中にPOSTメソッドを
指定されておられますので$_POSTに値が入るのではないでしょうか。

HTML

1 <form action="Form.php" method="post">

GETメソッドとは、例えば、

http://localhost/List.php?regist=20150821&uwagaki=NANTOKA

の?より右側のようにURIとして name=valueの形で渡される形式になります。
今回の用途では、POSTが適していると思います。

プログラムには触れませんでしたが参考になれば幸いです。

投稿2015/08/20 21:46

Ken.sakanakana

総合スコア1768

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

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

mako_0221

2015/08/21 09:38

ご回答頂き、有り難うございます。 GETとPOSTについては理解が深まりました。 ①http://localhost/List.php?××× ②http://localhost/List.php を同じ.phpファイルで操作するときに、②では$_POSTの値を引き渡したいが①の時に、同じPHPファイル内で,URIの?以降の値を取得する事は可能なのでしょうか、、、
Ken.sakanakana

2015/08/21 11:55

<form action="Form.php" method="get"> methodをPOSTからGETに書き直して、 $_GET['NAME'] でフォーム中のVALUEを得ることが出来ます。 フォームとプログラムで連動して変更すればOKです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問