1

私はクエストと呼ばれるテーブルを持っています:

id  name
1   First Quest
2   Second Quest
3   Third Quest
4   Fourth Quest
5   Fifth Quest
6   Sixth Quest
7   Seventh Quest
8   Eighth Quest
9   Ninth Quest
10  Tenth Quest
11  Eleventh Quest
12  Twelfth Quest

current_quests というテーブル:

id  user
5   motoc

私の quests.php ページでは、12 個のクエストすべてを印刷し、それぞれにリンクを割り当てました。最初のもの: localhost/quests.php?quest=1 2番目のもの: localhost/quests.php?quest=2 など ...

私の current_quests テーブルには id 5 があるので、5 番目のクエストを quests.php で太字にし、4,6 イタリック体にしたいと考えています。

First Quest
Second Quest
Third Quest
*Fourth Quest*
**Fifth Quest**
*Sixth Quest*
Seventh Quest
Eighth Quest
Ninth Quest
Tenth Quest
Eleventh Quest
Twelfth Quest

current_quest に別の ID を挿入すると、どうすればよいかわかりません。id=6 とします。

id  user
5   motoc
6   motoc

5番目と6番目を太字にし、4と7をイタリックにしたい

First Quest
Second Quest
Third Quest
*Fourth Quest*
**Fifth Quest**
**Sixth Quest**
*Seventh Quest*
Eighth Quest
Ninth Quest
Tenth Quest
Eleventh Quest
Twelfth Quest

これは私が試したことですが、それは悪いことだと確信しています。

function SelectQuest($i){
        $sth = $this->dbh->prepare("SELECT * FROM quests");
        $sth->execute();
        while($row = $sth->fetch(PDO::FETCH_ASSOC)){


switch ($row['id']) {
case $row['id'] == $i:
    print "<a href='quests.php?quest=$row[id]'><b>$row[name]</b><br><br></a>";
    break 1;
case $row['id'] == $i-1:
    print "<a href='quests.php?quest=$row[id]'><i>$row[name]</i><br><br></a>";
    break 1;
case $row['id'] == $i+1:
    print "<a href='quests.php?quest=$row[id]'><i>$row[name]</i><br><br></a>";
    break 1;
default:
    print "<a href='quests.php?quest=$row[id]'>$row[name]<br><br></a>";
}

}

$sth = $dbh->prepare("SELECT * FROM current_quest");            
    $sth->execute();   
    $row = $sth->fetch(PDO::FETCH_ASSOC); 

    if (isset($_GET['quest'])) {
        $item = $_GET['quest'];
    print "string";

    }elseif(isset($row['id'])){

    $quest = new Quests($dbh);
    $quest->SelectQuest($row['id']);       
    }

長い投稿で申し訳ありません。これが私が達成したいことの写真です。

ここに画像の説明を入力

ありがとう

4

3 に答える 3

0

またはcase $i:の代わりに試してください。case TRUE:case FALSE:

そこにブール値の比較があることで、それが評価されます。switch-case ステートメントの使用方法に関するドキュメントを読むと役立つ場合があります。部品でテストしたい値をすでに与えていますswitch()。それぞれcaseは、一致するかどうかを確認するためにテストする値/ケースです。そのため、ブール値は必要ありません。

于 2013-07-29T11:22:00.023 に答える
0

current_quest最初にテーブル データを取得します。受信したデータを解析し、次のような配列を作成します (行ごとにこのエントリを作成します)。

$isCurrentQuest[$YourQuestID] = true

テーブル データを取得questし、次のように解析します。

if(!isset($isCurrentQuest[$QuestID] && (isset($isCurrentQuest[$QuestID - 1]) || isset($isCurrentQuest[$QuestID + 1])
{
   // Italic
}
else if(isset($isCurrentQuest[$QuestID])
{
   // Bold
}
else
{
   // Normal
}

(このコードは、クエスト間に空の ID がない場合にのみ正しく機能します)

したがって、コードは次のようになります。

$sth = $dbh->prepare("SELECT * FROM current_quest");            
$sth->execute();   
while($row = $sth->fetch(PDO::FETCH_ASSOC))
{
    $isCurrentQuest[$row['id']] = true
}

$sth = $dbh->prepare("SELECT * FROM quests");
$sth->execute();
while($row = $sth->fetch(PDO::FETCH_ASSOC))
{
    if(!isset($isCurrentQuest[$QuestID] && (isset($isCurrentQuest[$QuestID - 1]) || isset($isCurrentQuest[$QuestID + 1])
    {
        print "<a href='quests.php?quest=$row[id]'><i>$row[name]</i><br><br></a>";
    }
    else if(isset($isCurrentQuest[$QuestID])
    {
        print "<a href='quests.php?quest=$row[id]'><b>$row[name]</b><br><br></a>";
    }
    else
    {
        print "<a href='quests.php?quest=$row[id]'>$row[name]<br><br></a>";
    }
}
于 2013-07-29T11:13:09.027 に答える