隐藏/显示按钮,刷新时也是如此

时间:2013-01-22 08:59:22

标签: php javascript pdo

我正在制作一个显示“活动”的应用程序。每个活动都有自己的按钮。单击该按钮时,会将该特定活动添加到“指南”中。这个想法是你只能添加一个特定的活动,所以当它被添加到指南时,该活动的按钮必须消失。我可以在我的javascript中使用简单的$(this).hide(),但是当我刷新页面时,这显然不起作用。所以我想我应该检查de guide中是否存在活动。

数据库中的

我有3个表,1:activity(带有ActivityID),2:user(带有UserID)和3:{{1 (user_activityActivityID,一个可链表)。

因此,检查必须检查user_activity表中是否存在UserID,以及user_activity表中属于ActivityID的{​​{1}}是否与当前用户相同ID。

此时,我知道如何检查当前用户UserID:

UserID

但我不知道如何检查ActivityID是否已经存在,以及我应该如何做到这一点 if else声明。

我使用此脚本显示活动(包括按钮)

//userid
$sql = "SELECT * FROM user WHERE Username = '".$_SESSION['Username']."' ";
$stm = $db->prepare($sql);
$result = $stm->execute(array());
while($row = $stm->fetch(PDO::FETCH_ASSOC)) {
$userid = $row['UserID'];
}

3 个答案:

答案 0 :(得分:1)

您需要LEFT JOIN才能查看已有的活动

SELECT a.*, ua.ActivityID as added 
FROM activities a LEFT JOIN user_activity ua 
    ON a.ActivityID=ua.ActivityID AND UserID=:userid

因此,您在结果集中会有一个额外的added字段,如果已经选择了则填充了一个id,否则为空

答案 1 :(得分:-1)

// First you need to get all the activityIDs from the table where you want to search and put them into an array
$sql2 = "SELECT * FROM user_activity";
$stm2 = $db->prepare($sql2);
$result2 = $stm2->execute(array());  
$user_activityID = array();
while($row2 = $stm->fetch(PDO::FETCH_ASSOC))
{
    // if in the table user_activity the column you are trying to compare has the same name as in activity -- $row2['ActivityID']
    array_push($row2['ActivityID'], $user_activityID);
}

// Then you use in_array to compare while you go through the user_activity table
$sql = "SELECT * FROM activity";
$stm = $db->prepare($sql);
$result = $stm->execute(array());
while($row = $stm->fetch(PDO::FETCH_ASSOC))
{
    if (in_array($row['ActivityID'], $user_activityID))
    {
        // yes the current $row['ActivityID'] from the activity table, exists in the user_activity table
        // you can choose whether or not to add this to your array
        array_push($row['ActivityID'], $activityID);
    }

}

我确信还有其他更有效的方法来实现这一点,使用一些我不知道的pdo内容,但这就是我要做到的。

答案 2 :(得分:-2)

首先:你应该使用OOP ...所以从数据库获取数据的部分和你在屏幕上放置html的部分应该分开......

但要回答你的问题: 我应该这样做的方式(可能不是最好的,但它会起作用)是:

当按下按钮时,让它在你获得POST的页面上进行提交(所以在按钮周围放一个表格)(或者得到,不管怎样)你检查按下了哪个按钮,然后填写sessionvariabele ,当你输出你的html时,检查sessionvar以查看哪一个已被按下...

所以你的if看起来像

<?php
if (isset($_SESSION["button1))
{
?>

<input ... button submit whatever> (or disabled, if you want the button to be there but be disabled)
<?php
}
?>

希望这有帮助