2

誰かが私を助けてくれるのではないかと思います。

私はこれに慣れていないので、最初に謝罪します。そのため、これは非常に基本的なエラーのように見えるかもしれません。

以下のフォームを使用して、ユーザーがすべて「場所」レコードに基づいて異なるページ間を移動できるようにしています。

<form name="locations" id="locations" method="post" action="locationsaction.php">

    <?php

        <table width="538" border="0">
        <tr>
        <th width="119"><div align="left">Location Name</div></th>
        <th width="159"><div align="left">Address</div></th>
        <th width="94"><div align="center">No. Of Finds</div></th>
        <th width="69"></th>
        <th width="66"></th>
        <th width="5"></th>

        </tr>
        <tr>
        <td><div align="left"><?php echo $lid;?></div></td>
        <td><div align="left"><?php echo $lname;?></div></td>
        <td><div align="left"><?php echo $laddress;?></div></td>
        <td><div align="center"><?php echo $findscount?></div></td>
        <td><div align="center"><input name="type" type="submit" value="View Details"/></div></td>
        <td><div align="center"><input name="type" type="submit" value="Add Finds"/></div></td>
        <td><div align="center"><input name="type" type="submit" value=" Add Images"/></div></td>
        </tr>
        <tr><th colspan="8"><br/><hr width="100%"></th></tr>
        </table>
        <?php
</form>

フォームの最後に、ユーザーを別のページに移動させる 3 つの [送信] ボタンがあることに気付くでしょう。次の PHP スクリプトは、どのボタンが選択されているかを判断するために使用され、上記のForm POSTアクションでは次のように示されています。locationsaction.php

<?php
if (isset($_POST['type'])) {
    $urls = array(
        'View Details' => 'updatelocation.php',
        'Add Finds' => 'addfinds.php',
        'Add Images' => 'image.php'
    );
    $url = $urls[$_POST['type']];
    header("Location: " . $url);
}
?>

ボタンは正常に機能しますが、ユーザーを正しいページに移動させるため$lid、3 つの受信ページのいずれにも変数を渡すことができず、次のエラーが表示されます。 Notice: Undefined index: lid in /homepages/2/d333603417/htdocs/updatelocation.php

$lidこれは、すべての受信ページで変数を取得しようとしている方法です。

$lid = $_POST['lid'];

このサイトのいくつかのチュートリアルと投稿に目を通しましたが、どこが間違っているのかわかりません。

誰かがこれを見て、どこが間違っているのか教えてくれるかどうか疑問に思いましたか?

多くの感謝と親切な敬意

4

7 に答える 7

1

$lid 変数は locationaction.php に送信されますが、updatelocation.php には送信されません。

これを回避するには、 $_SESSION['lid'] = $lid; を定義できます。locationaction.php で

于 2012-06-14T13:33:22.603 に答える
1

わかりましたので、ここにあなたのアーキテクチャを概略的に示します:

form > locationsaction.php > updatelocation.php (または別のもの、ボタンによって異なります)

フォームの送信ボタンを使用して実際にデータを投稿したため、locationsaction.php に POST にアクセスできます。しかし、現在、 でデータが必要な場合、データを再度 POST しない限り、 をupdatelocation.php使用して取得することはできません。$_POST

代わりに、$_SESSION配列を使用して値を保存し、別の php ページで使用することをお勧めします。

于 2012-06-14T13:33:32.590 に答える
1

入力要素は、フォームで値を渡すための必須 (hidden など) です。locationaction.php を使用するのがそれほど重要でない場合は、直接アクション フォームを最初のページに変更することをお勧めします。

<td><div align="center"><input name="type" type="submit" onclick="window.locations.action='updatelocation.php'" value="View Details"/></div></td>
        <td><div align="center"><input name="type" onclick="window.locations.action='addfind.php'" type="submit" value="Add Finds"/></div></td>
        <td><div align="center"><input name="type" type="submit" onclick="window.locations.action='image.php'" value=" Add Images"/></div></td>
        </tr>

ただし、中間ページを使用してポスト値を取得および送信する場合は、このコードを使用できます

<form name="iaminthemiddle" action="finaldest.php" method="post">
<?php
foreach($_POST as $k => $v)
 echo "<input type=\"hidden\" name=\"$k\" value=\"$v\">";
?>
</form>
<script>window.iaminthemiddle.submit();</script>

これは $_POST 要素の場合、$_GET または $_REQUEST の両方を使用してクエリ文字列の値を取得することもできます

于 2012-06-14T14:15:04.283 に答える
1

lidPOST を介してどのスクリプトにも値を渡していません。渡したい場合は、次のようなものをフォームに入れます。

<input type = "hidden" value = "<?= $lid ?>" name = "lid" />
于 2012-06-14T13:29:52.183 に答える
1

投稿するものはすべてinput(またはselectまたはtextarea) 内にあり、名前が必要です。

それはあなたの形ではそうではありません。

于 2012-06-14T13:30:00.670 に答える
1

$lid変数を含むフォーム要素を使用する必要があります。このようなもの:

<input type="hidden" name="lid" value="<?php echo $lid; ?>" />
于 2012-06-14T13:30:16.863 に答える
1

まず、$lid 変数を入力に入れます。

<input type="hidden" name="lid" value="<?=$lid?>" />

そうしないと、フォームに投稿されません。

また、リダイレクトすると、POST 変数はリダイレクトされません。それらを URL (http://url.tld?lid=value) に追加して、次のように取得できます。

$lid = $_GET['lid'];

ただし、より良い方法は、セッションに保存することです。

$_SESSION['lid'] = $_POST['lid'];
// Redirect here

次に、次のページで、それらにアクセスできます。

$lid = $_SESSION['lid'];
于 2012-06-14T13:34:29.513 に答える