1

PHPを使用して動的フォームを作成しようとしています。2 つのフォームを含む 1 つの Web ページが必要です。

  1. 上のフォームでは、mysql データベース内の要素 (名前など) を検索できます。
  2. 下のフォームは、データベースでこの名前に関連付けられているデータを示しています

上のフォームの [検索] ボタンを押すと、下のフォームが表示され、テキスト フィールドには、この名前に属するデータベースのデータが入力されます。ユーザー名を別の値に変更してもう一度「検索」を押すと、新しいレコードに関連付けられているデータが表示されます。

下部のフォームには、(下部の) テキスト ボックスに加えられた変更をデータベースに転送できる [更新] ボタンもあります。

今、私は次の問題を抱えています: 私のスクリプトでは、最初に name の値 (上のフォームから) を "" に設定しました。次に「検索」ボタンを押すと、フォームの下部が表示され、対応するデータが下部に表示されます。次に「更新」ボタンを押すと、名前に関連付けられたテキスト フィールドが空の文字列に設定されます。これは、スクリプトで最初に名前を "" に設定したためです。この場合、上のフォームに入力されたデータは変更されない、つまり同じままであってほしいと思います。

ここで何かが足りないと思います。これにはおそらく簡単な解決策があり、根本的に間違ったことをしています。お役に立てば幸いです。

それが私が試したことです...私は多くの詳細を削除しましたが、それで私が何をしようとしているのかがわかると思います. コード全体がファイル update.php にあることに注意してください。

<?php
function search_bus($mysql, $name)
{
 // do some stuff here...
}

function update_bus($mysql, $b_id)
{
    // do some stuff here...
}

// some global variables
$b_id = 0;
$username = ""; // username of business

// get b_id that corresponds to username
if (isset($_REQUEST['search']))
{
    $b_id =0; // business id
    if (isset($_POST['user']))
    {
        $username = $_POST['user'];
        $b_id = search_bus($mysql, $username);
    }
}
elseif(isset($_REQUEST['update']))
{
    update_bus($mysql, $b_id);
}


?>

<h2>Search:</h2> 
<form name="search_bus" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Username: <input type="text" name="user" value="<?= htmlentities($username) ?>"/>
<input type="submit" value="Suchen" name="search"/>
</form>

<?php 
if($b_id != 0) 
{
?>

<h2>Data:</h2> 
<form name="business_design" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<-- some form follows here -->

<?php 
}
?>
4

1 に答える 1

0

あなたが見逃しているのは、Name 変数の値を保持するために HTML Hidden フィールドを作成することだと思います。

<input type="hidden" name="name" value="<?php print $nameVar ?>" />

この入力を両方のフォームに追加して、ユーザーがどのボタンをクリックしても値を維持できるようにします。

お役に立てれば。

検証するコードを追加する

<h2>Search:</h2>  
<form name="search_bus" method="post" 
action="<?php echo $_SERVER['PHP_SELF'];?>">
Username: <input type="text" name="user" value="<?= htmlentities($username) ?>"/>
<input type="hidden" name="b_id" value="<?php print $b_id?>" />
<input type="submit" value="Suchen" name="search"/> 
</form>  


<?php  if($b_id != 0)  { ?>  
<h2>Data:</h2>  
<form name="business_design" method="post" action="<?php echo $_SERVER['PHP_SELF'];>">      
<input type="hidden" name="b_id" value="<?php print $b_id?>" />
<-- some form follows here -->  
<?php  } ?> 

Dont initialize $b_id if it already comes into the http request.
if (!isset($_POST['b_id']))
{
 $b_id = 0; 
}          
else
{
 $b_id = $_POST['b_id'];
}

このようにして、最後に選択された b_id の値を常に覚えておくことができます。これがあなたを助けることを願っています。

于 2012-07-09T21:24:07.983 に答える