🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

解決済

1回答

684閲覧

Wordpressに設置した独自関数が、1度保存した部分を空にして保存しても、前に入力した内容のままになってしまう。

NNC

総合スコア22

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

1クリップ

投稿2021/02/26 13:41

編集2021/03/01 11:03

Wordpressを用いた情報サイト制作にて、
独自関数にて任意の文字を入力できるフォームを実装しましたが
入力を行い、変更を保存すると入力内容は保存されるのですが、
空の状態にし、変更を保存するをクリックしても、前に入力したデータが残ったままになってしまいます。

試した事

【functions.php】 // 広告コードセット add_menu_page('広告コード設定', '広告コード設定', 'manage_options', 'my_setting', 'add_my_setting', 'dashicons-welcome-learn-more', 6); function add_my_setting() { include TEMPLATEPATH ."/ad_settings.php"; } 【ad_settings.php】 <h2>広告コード設定</h2> <?php echo '<form method="post" action="admin.php?page=my_setting">'; echo '<table>'; // 1~10 echo '<tr>'; echo '<td>'; echo '<h3 class="code_ttl">コード001</h3>'; add_option('ads_name001'); if ($_REQUEST['ads_name001']) update_option('ads_name001', $_REQUEST['ads_name001']); echo '媒体名登録:<input type="text" name="ads_name001" value="'. get_option('ads_name001') .'" />'; echo '<br>'; echo '<br>'; add_option('ads_code001'); if ($_REQUEST['ads_code001']) update_option('ads_code001', $_REQUEST['ads_code001']); echo 'コード登録:<input type="text" name="ads_code001" value="'. get_option('ads_code001') .'" />'; echo '<br>'; echo '<br>'; echo '備考'; echo '<br>'; add_option('ads_biko001'); if ($_REQUEST['ads_biko001']) update_option('ads_biko001', $_REQUEST['ads_biko001']); echo '<textarea name="ads_biko001" />'. get_option('ads_biko001') .'</textarea>'; echo '</td>'; echo '<td>'; echo '<h3 class="code_ttl">コード002</h3>'; add_option('ads_name002'); if ($_REQUEST['ads_name002']) update_option('ads_name002', $_REQUEST['ads_name002']); echo '媒体名登録:<input type="text" name="ads_name002" value="'. get_option('ads_name002') .'" />'; echo '<br>'; echo '<br>'; add_option('ads_code002'); if ($_REQUEST['ads_code002']) update_option('ads_code002', $_REQUEST['ads_code002']); echo 'コード登録:<input type="text" name="ads_code002" value="'. get_option('ads_code002') .'" />'; echo '<br>'; echo '<br>'; echo '備考'; echo '<br>'; add_option('ads_biko002'); if ($_REQUEST['ads_biko002']) update_option('ads_biko002', $_REQUEST['ads_biko002']); echo '<textarea name="ads_biko002" />'. get_option('ads_biko002') .'</textarea>'; echo '</td>'; echo '<td>'; echo '<h3 class="code_ttl">コード003</h3>'; add_option('ads_name003'); if ($_REQUEST['ads_name003']) update_option('ads_name003', $_REQUEST['ads_name003']); echo '媒体名登録:<input type="text" name="ads_name003" value="'. get_option('ads_name003') .'" />'; echo '<br>'; echo '<br>'; add_option('ads_code003'); if ($_REQUEST['ads_code003']) update_option('ads_code003', $_REQUEST['ads_code003']); echo 'コード登録:<input type="text" name="ads_code003" value="'. get_option('ads_code003') .'" />'; echo '<br>'; echo '<br>'; echo '備考'; echo '<br>'; add_option('ads_biko003'); if ($_REQUEST['ads_biko003']) update_option('ads_biko003', $_REQUEST['ads_biko003']); echo '<textarea name="ads_biko003" />'. get_option('ads_biko003') .'</textarea>'; echo '</td>'; echo '<td>'; echo '<h3 class="code_ttl">コード004</h3>'; add_option('ads_name004'); if ($_REQUEST['ads_name004']) update_option('ads_name004', $_REQUEST['ads_name004']); echo '媒体名登録:<input type="text" name="ads_name004" value="'. get_option('ads_name004') .'" />'; echo '<br>'; echo '<br>'; add_option('ads_code004'); if ($_REQUEST['ads_code004']) update_option('ads_code004', $_REQUEST['ads_code004']); echo 'コード登録:<input type="text" name="ads_code004" value="'. get_option('ads_code004') .'" />'; echo '<br>'; echo '<br>'; echo '備考'; echo '<br>'; add_option('ads_biko004'); if ($_REQUEST['ads_biko004']) update_option('ads_biko004', $_REQUEST['ads_biko004']); echo '<textarea name="ads_biko004" />'. get_option('ads_biko004') .'</textarea>'; echo '</td>'; echo '<td>'; echo '<h3 class="code_ttl">コード005</h3>'; add_option('ads_name005'); if ($_REQUEST['ads_name005']) update_option('ads_name005', $_REQUEST['ads_name005']); echo '媒体名登録:<input type="text" name="ads_name005" value="'. get_option('ads_name005') .'" />'; echo '<br>'; echo '<br>'; add_option('ads_code005'); if ($_REQUEST['ads_code005']) update_option('ads_code005', $_REQUEST['ads_code005']); echo 'コード登録:<input type="text" name="ads_code005" value="'. get_option('ads_code005') .'" />'; echo '<br>'; echo '<br>'; echo '備考'; echo '<br>'; add_option('ads_biko005'); if ($_REQUEST['ads_biko005']) update_option('ads_biko005', $_REQUEST['ads_biko005']); echo '<textarea name="ads_biko005" />'. get_option('ads_biko005') .'</textarea>'; echo '</td>'; echo '</tr>'; echo '</table>'; submit_button(); echo '</form>'; ?>

実際に、この方法で入力と保存は出来るのですが、
1度保存した入力欄の中身を消して、何も入っていない状態で保存をクリックしてもその内容が保存できない状態です。

どのような記述を行えば、元々入力していた項目を空にした状態を保存できるか、
お調べしていても、見つからず状態ですので、お知恵貸して頂ければ幸いです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ざっと見た限り、値がセットされてたらそれで更新するって処理なのだから、その反対条件の分岐処理を作れば良いでしょう。空というのが空白なのかNULLなのかは分からないのでお任せします。

php

1if ($_REQUEST['ads_name001']) update_option('ads_name001', $_REQUEST['ads_name001']); 2else update_option('ads_name001', NULL);

投稿2021/03/01 12:53

編集2021/03/03 11:50
yuki84web

総合スコア1857

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

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

NNC

2021/03/01 15:21

回答ありがとうございます。 最初は反対条件の分岐処理を作れば良いと思っていたのですが ─────────────────────────────────── add_option('ads_name001'); if ($_REQUEST['ads_name001']) update_option('ads_name001', $_REQUEST['ads_name001']); echo '媒体名登録:<input type="text" name="ads_name001" value="'. get_option('ads_name001') .'" />'; elseif ($_REQUEST['ads_name001']) update_option('ads_name001', $_REQUEST['']); echo '媒体名登録:<input type="text" name="ads_name001" value="" />'; echo '<br>'; echo '<br>'; add_option('ads_code001'); if ($_REQUEST['ads_code001']) update_option('ads_code001', $_REQUEST['ads_code001']); echo 'コード登録:<input type="text" name="ads_code001" value="'. get_option('ads_code001') .'" />'; elseif ($_REQUEST['ads_code001']) update_option('ads_code001', $_REQUEST['']); echo 'コード登録:<input type="text" name="ads_code001" value="'. get_option('ads_code001') .'" />'; echo '<br>'; echo '<br>'; echo '備考'; echo '<br>'; add_option('ads_biko001'); if ($_REQUEST['ads_biko001']) update_option('ads_biko001', $_REQUEST['ads_biko001']); echo '<textarea name="ads_biko001" />'. get_option('ads_biko001') .'</textarea>'; elseif ($_REQUEST['ads_biko001']) update_option('ads_biko001', $_REQUEST['']); echo '<textarea name="ads_biko001" />'. get_option('ads_biko001') .'</textarea>'; ─────────────────────────────────── このようにelseifを追記すると 重大なエラーが~・・・の画面になってしまい、 今は元に戻している状態です。 空の状態はNullの状態でできればと思っています・・・。
yuki84web

2021/03/02 12:16

elseifの条件が反対ではなく同じになっているし、$_REQUEST['']という記述がそもそもエラーの原因です。空なら’’でnullならnullです。
NNC

2021/03/02 16:58

ご回答頂きありがとうございます。 >$_REQUEST['']という記述がそもそもエラーの原因です。 こちらご指摘ありがとうございます。 確認させて頂いてから、はじめの方はelseif部分の最初の$_REQUEST['ads_name001']は残しておかないとまずいような・・?と思い ─────────────────────────── elseif ($_REQUEST['ads_name001']) update_option('ads_name001', Null); echo '媒体名登録:<input type="text" name="ads_name001" value="" />'; ─────────────────────────── などにもしてみたのですが変わらずエラーのままになってしまい、 かと言って、elseifの最初の$_REQUEST['ads_name001']を変えてしまうと何を格納しているのか不明になってしまう気がして、 かなりこんがらがってしまっている状態です;
yuki84web

2021/03/03 11:50

回答を追記しました。
NNC

2021/03/03 13:29

ご回答&記述のご提示ありがとうございます。 その記述は最初の方にも試していたのですが、エラーにはならないのですが、最初の挙動と同じく、 1度保存した入力欄の中身を消して、何も入っていない状態で保存をクリックしてもその内容が保存できない結果になってしまっていたので悩んでいました・・;
yuki84web

2021/03/04 11:33

何か入力した場合はそれが反映されるのですね?であれば処理自体は実行されるはずですが、NULLを''に変えても変わらないのであれば、申し訳ないですが正直お手上げです。
NNC

2021/03/04 16:51

ご回答ありがとうございます。 >何か入力した場合はそれが反映されるのですね? 反映はされます。 そして、当たり前ではありますが、全角や半角のスペースを入れた場合は、 前に入力した内容が全角や半角のスペースになった状態で上書きされます。 NULLを''に変えた場合でも行ってみましたが、 前に1度保存した入力欄の中身が反映されてしまうままです・・。
NNC

2021/03/05 03:18

五月雨式で失礼致します。 ───────────────── <?php add_option('ads_name001'); if ($_REQUEST['ads_name001']) update_option('ads_name001', $_REQUEST['ads_name001']); else update_option('ads_name001', NULL); echo '媒体名登録:<input type="text" name="ads_name001" value="'. get_option('ads_name001') .'" />'; ?> ───────────────── このように1つ1つ区切ったら、空の値でも更新できるようになりました。 記述を隅から隅まで確認しても漏れがなかったので、 理屈はわかりませんが、とりあえず理想の挙動にはなりました。 ご回答やご教授いただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問