PHP / MYSQL条件更改按钮文本

前端之家收集整理的这篇文章主要介绍了PHP / MYSQL条件更改按钮文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有以下简单的功能

function getAllJobs($userType)
{
    if ($userType == 2) {
        $sql = "SELECT * FROM jobs";
        $stmnt = $db->prepare($sql);
        $stmnt->execute();
        return $stmnt->fetchAll();
    } else {
        return false;
    }
}

上面通过一个简单的foreach()循环生成以下页面

enter image description here

我在尝试TODO

用户ALREADY申请显示作业时,我希望蓝色的“应用”按钮更改为“已应用”

现在我相信这可以/应该通过更改上面函数中的mySQL查询来实现.

这是我的数据库

enter image description here

我做了什么

我尝试在getAllJobs()函数中更改我的数据库查询,如下所示:

SELECT jobs.*,bids.*
        FROM bids
        INNER JOIN jobs on jobs.jobID = bids.jobID
        WHERE bids.jobID = jobs.jobID

上述查询的问题是它只返回特定用户申请的作业.

我想要实现的另一个目的是显示用户已经将作业更改按钮文本应用于“已应用”或类似内容的所有作业.下图是我想要实现的一个例子.

enter image description here

任何帮助或建议非常感谢.如果您需要更多信息或代码,请发表评论.

编辑:

我应该在这里添加我的foreach代码

  PHP
    foreach ($jobs as $job){
    $description = $job['description'];
    $jobDescription = substrwords($description,30);
    echo 'PHP
    echo '
最佳答案
试一试.

使用此查询,您将获得每个作业的“appliedFor”列.如果为1,则表示用户已申请该作业.如果为0,则用户尚未申请该作业.

SELECT
  jobs.*,(COALESCE(bids.bidId,0) > 0) AS appliedFor
FROM jobs
LEFT JOIN bids ON bids.jobID = jobs.jobID AND bids.userID = 1;

在解释之前,请参见此处的测试:http://sqlfiddle.com/#!9/eb5a4f/1/0

真的很简单……

>使用jobID和userID在bid表上执行LEFT JOIN.这意味着如果出价表中有相应的行,则bid.bidID将为数字,否则为NULL.
>然后我在该列上执行了COALESCE,这意味着如果值为NULL,则将其更改为0.
>将上面的内容括在括号中,并确保结果大于0.这为您提供了一个布尔值,可以为查询结果中的别名使用别名.

我使用以下架构进行了测试:

CREATE TABLE jobs (
  jobID int NOT NULL AUTO_INCREMENT,PRIMARY KEY (jobID)
);

CREATE TABLE bids (
  bidID int NOT NULL AUTO_INCREMENT,userID int,jobID int,PRIMARY KEY (bidID)
);

INSERT INTO jobs () VALUES();
INSERT INTO jobs () VALUES();
INSERT INTO jobs () VALUES();
INSERT INTO bids (userID,jobID) VALUES(1,1);
INSERT INTO bids (userID,jobID) VALUES(2,3);

与此匹配的PHP代码如下所示:

PHP
foreach ($jobs as $job){
    $description = $job['description'];
    $jobDescription = substrwords($description,30);
    $buttonText = "Apply";
    if ($job['appliedFor']) { // This is where we're using the new value we've selected
        $buttonText = "Applied";
    }
    ?>
    PHP echo $job['headline']; ?>PHP echo $jobDescription; ?>PHP echo $job['datePosted']; ?>PHP echo $job['amount']; ?>PHP echo $job['location']; ?>PHP echo $job['jobID']; ?>">PHP echo $buttonText; ?>PHP
}//foreach

附:我查看了您的架构,它看起来好像bid表包含特定用户的所有作业应用程序.如果这不正确,我上面的例子将是不正确的.

猜你在找的MySQL相关文章