0

私はphpフォームとたくさんのマークアップを持っているので、新しいページエントリを作成するために同じフォームを繰り返し、編集するために同じフォームを繰り返す必要があります。たとえば、現在何をしているのか

if($_GET['page'] == 'hello') {
   //A whole lot of markup goes here
   <form method="post">
     <input type="text" name="whatever" />
     <input type="submit" name="create_new" />
   </form>
} elseif ($_GET['page'] == 'edit_hello') {
   //Same form markup is here, only change is the retrieved 
   //data values are echo'ed out in respective fields
   $query = mysqli_fetch_array(mysqli_query(...));
   <form method="post">
     <input type="text" name="whatever" value="<?php echo $query['column_name']; ?>" />
     <input type="submit" name="create_new" />
   </form>
}

したがって、同じコードを使用して新しいエントリを作成したり、フォームの値を更新したりするにはどうすればよいでしょうか。

4

3 に答える 3

1

変数を使用して、空の文字列のデフォルト値を指定します。

if($_GET['page'] == 'hello') {
   $whatever = "";
} elseif ($_GET['page'] == 'edit_hello') {
   $query = mysqli_fetch_array(mysqli_query(...));
   $whatever = $query['column_name'];
}

<form method="post">
   <input type="text" name="whatever"
      value="<?php echo htmlspecialchars($whatever); ?>" />
   <input type="submit" name="create_new" />
</form>

XSS攻撃を回避できるように、適切なエスケープも追加したことに注意してください。

于 2013-01-14T18:54:31.303 に答える
0

このようなものは機能するはずです(テストされていません)

$value = '';

if ($_GET['page'] == 'edit_hello') $value = $query['column_name'];

if (in_array($_GET['page']), array('hello', 'edit_hello')) { ?>
<form method="post">
     <input type="text" name="whatever" value="<?php echo $value; ?>" />
     <input type="submit" name="create_new" />
   </form>
<?php } ?>
于 2013-01-14T18:55:08.027 に答える
0

私はあなたの質問を正しく理解しているかどうかわかりません。同じフォームを使用して、新しいエントリを作成したり、編集したりしますか?たとえば、簡単な方法はこれですが、他にも多くの方法があります。

編集モードのフォームを作成する場合は、フォームに非表示のフィールドを追加します。フォームのPOSTリクエストの後、この変数を確認できます。注意:適切なデータベースレコードを更新できるように、いくつかのキーを更新する必要があります。

if (isset($_POST["variable"]))
{
//updateaction
}
else 
{ //insertaction 
}

敬具

于 2013-01-14T18:58:48.557 に答える