1

配列'name'の一部をエコーし​​、その横に送信ボタンを配置して、配列の残りの部分をエコーする新しいページにリダイレクトしたいと思います。住所、電話番号など。ただし、リダイレクトすると情報が失われます。これを回避する方法はありますか。このコードは、私が何をしているのかを説明するはずです。

ページ1:

<?php
   $info = mysql_query ("SELECT * FROM table WHERE name= 'something'");
   $info = mysql_fetch_assoc($info));
?>

<html>
  <form action='page2.php' method='POST'>
    <?php echo $info['name']; ?>
    <input type='submit' value='see other details'>
  </form>
</html> 

2ページ:

<?php
   echo $info['address'].$info['address'].$info['address'];
?>
4

2 に答える 2

0

これがあなたがやろうとしていることの非常に単純化されたバージョンでない限り、ここでフォームを使用する理由はありません。フォームにデータを投稿するのではなく、データを使用して別のページに移動します。これは、技術的にはリンクの目的です。それは明らかに間違ったフォームの使用ではありませんが、実際にはそれだけではありません。

次のページへのリンクを使用して値をエコーするだけです。jQueryボタンのようなものを使用して、または必要に応じてボタンを模倣する画像を使用して、a:linkのスタイルを設定できます。

したがって、たとえば:

<?php
   $info = mysql_query ("SELECT * FROM table WHERE name= 'something'");
   $info = mysql_fetch_assoc($info));
?>

<html>
    <?php echo $info['name']; ?>
    <a href="page2.php">Submit</a>
</html> 

もう1つの方法は、2つのスタックされたdivを実行し、ボタンをクリックするだけでそれらを表示/非表示にすることです。少しのjQueryまたはjavascriptが必要ですが、その間のサーバーへのヒットを排除し、よりスムーズなユーザーエクスペリエンスを実現します。あなたがやろうとしていることの詳細がなければ、何が最善かを言うのは難しいです。

最後に、セッションは機能しますが、問題が発生する可能性があることに注意してください。たとえば、一部の企業や人々は、セッションをオフにする(または完全にブロックする)ため、100%信頼できません。特にIE(一部のバージョン)は、Cookieをブロックしてセッションもブロックするというユーザーの選択を解釈しました。アプリを2つのタブで開いていると、値が混乱し、望ましくない結果が生じる可能性があります。少なくとも、それほど大したことではないのに、アプリケーションがユーザーを怖がらせるあらゆる種類のダイアログをスローする可能性があります。

于 2012-12-14T17:29:02.397 に答える
0

リダイレクトすると情報が失われます。これを回避する方法はありますか

はい、PHPセッションを使用します。配列をとして保存する$_SESSION['info']と、次のページで利用できるようになります。session_start()両方のページで忘れないでください。

ページ1:

<?php
   session_start();
   $info = mysql_query ("SELECT * FROM table WHERE name= 'something'");
   $info = mysql_fetch_assoc($info));
   $_SESSION['info'] = $info;
?>

2ページ:

<?php
   session_start();
   $info = $_SESSION['info'];
   echo $info['address'].$info['address'].$info['address'];
?>
于 2012-12-14T16:57:43.407 に答える