0

ページにボタンがあります。これは、ページ ID を別のページのフォームに送信して PHP セッションに保存する単純な入力送信ボタンです。

そのアイテムが既にセッションにある場合、代わりに削除ボタンを表示するにはどうすればよいのでしょうか?

これは、フォームが送信されるコードです

<?php
session_start();
if(!in_array($_POST['event_id'], $_SESSION['event_orders'])) {
    $_SESSION['event_orders'][] = $_POST['event_id'];
}
?>

ボタンのあるページには実際にはセッション コードはありませんが、同様の IF ステートメントになると思いますが、使用すべき正確な構文がわかりません。そして、どのようにして ID をセッションから遠ざけるのでしょうか?

編集:

このようなものは機能しますか?フォームボタンの周りに配置します。

<? if(isset($_SESSION['event_orders']))
{
    echo "<a href='".$_SERVER['PHP_SELF']."?delete'>delete</a>";
}
else if(!in_array($_POST['event_id'], $_SESSION['event_orders'])) {
    // echo the submit button;
} ?>
4

2 に答える 2

0

unset 関数を使用できます。参考: http: //php.net/manual/en/function.unset.php

于 2012-06-29T10:08:52.307 に答える
0
<?php
session_start();
//if request parameter delete is present then unset the array
if(isset($_REQUEST['delete']))
{
    unset($_SESSION['event_orders']);
}   
else if(isset($_SESSION['event_orders']))
{
    //displays delete link which redirects to same page with an additional request parameter as url?delete
    echo "<a href='".$_SERVER['PHP_SELF']."?delete'>delete</a>";
}
else if(!in_array($_POST['event_id'], $_SESSION['event_orders'])) {
    $_SESSION['event_orders'][] = $_POST['event_id'];
}
?>

編集: 配列を完全に設定解除するのではなく、特定の配列項目を削除するだけで済みます。

<?php
session_start();
//if request parameter delete is present then unset the array
if(isset($_REQUEST['delete']))
{
    unset($_SESSION['event_orders'][$_REQUEST['delete']]);
    var_dump($_SESSION['event_orders']);
}   
else if(in_array($_POST['event_id'], $_SESSION['event_orders']))
{
    //displays delete link which redirects to same page with an additional request parameter as url?delete
    $key = array_search($_POST['event_id'], $_SESSION['event_orders']);
    var_dump($_SESSION['event_orders']);
    echo "<a href='".$_SERVER['PHP_SELF']."?delete=".$key."'>delete</a>";
}
else
{
    $_SESSION['event_orders'][] = $_POST['event_id'];
    var_dump($_SESSION['event_orders']);
}
?>
于 2012-06-29T10:12:18.610 に答える