2011-12-18 11 views
-3

私が2008年に行ったにもかかわらず、私はすべての投稿を終えました。私の問題は、if else文が1行しか受け取らず、すべてのwhileループの両方でfalseになったり、フォームを使用するときに2を受け取ったりします。私は、アイテムが2つの異なるデータベースを使用して購入されている場合、すべての行にあるかどうかを確認しようとしています。ここにコードがあります。whileループのあるelse文/ ph

$id2 = $_SESSION['id']; 
$naturesql = mysql_query("SELECT * FROM backgrounds WHERE type=2"); 
while($row = mysql_fetch_array($naturesql)) { 
    $id = $row['id']; 
    $name = $row['name']; 
    $background = $row['background']; 
    $pic = $row['image']; 

    $check = mysql_query("SELECT * FROM store_items WHERE userid='$id2'"); 
    while($checkrow = mysql_fetch_array($check)) { 
     $types = $checkrow['type2']; 
    } 

    if($id == $types) { 
     $bought = 'This item has already been bought'; 
    } else { 
     $bought = '<form> 
        </form>'; 
    // this form works fine 
    } 

    $display .= '<table width="100%"><tr><td><center><font size="+1">' . $name . '</font></center></td></tr><tr><td><center><img src="' . $pic . '" width="80px"></img></center></td></tr><tr><td>' . $bought . ' </td></tr></table>'; 
} 

... 

<?php echo $display ?> 

何が表示されますか。

第一結果 名1 ピック1 フォームは 名2 ピック2 フォームはこちらも

3番目と最後の結果 名3 の写真をアップ示し、ここで

第二の結果を示しています3 このアイテムは既に購入されています

これは私がページを見たときに得られるものです。私がアイテムを購入した場合、これは私が得るものです1番目のアイテムを言うことができます。

このアイテムはすでに

第二結果 名2 ピック2 フォームはこちらも現れ

3番目と最後の結果 名3を買ってきた 名1 ピック1 第一結果 写真3 このアイテムは既に購入済みです

これがポップアップします。私がリフレッシュすると、最初のものに戻りますが、私は1つの結果しか示していません。他の人と働いていない理由。

あなたがすべてではなく、

第一結果 名1 ピック1 このアイテムはすでに名2 ピック

第二結果を買ってきたさを購入した場合、それはこのようにする必要がありますこのアイテムは既に購入済みです

3番目と最後の結果 名前3 Pic 3 このアイテムはすでに

を買ってきた私の唯一の他の質問には、文があればelse文が好きで真であるかどうか、これに代わるそうループとチェックを続けています。もし私がそれ以外の文でそれをすることができなければ。

+0

'$ purchased =

'には引用符がありません。 [完全な書式はこちら] – Ryan

+0

minitechはコピー&ペーストのようです。 – Richard

+1

@リチャード:私はそれを編集してそれを指摘していました(問題があった場合に備えて) )しかし、代わりに私はちょうど大きなクリーンアップをしたので、それはしばらくかかった。 – Ryan

答えて

1

私はここにすべてを掲載することはできませんが、ここでは私がこれを動作させるために何をしたのかをサイトの一部に示すべきです。意外にも、それは魅力のように働いた。 1つのmysql_queryに2つのテーブルを入れている人は誰もが、物事を悪化させただけでは役に立たなかったことに注意してください。だから私はこれについて助言しないだろう。

私はそれを考え出した場合、私はポスト約束のように私は

$id = $_SESSION[id]; 

     $check = mysql_query("SELECT * FROM store_items WHERE userid='$id2'"); 
while($checkrow = mysql_fetch_array($check)){ 

$types = $checkrow['type2']; 



} 


    $naturesql = mysql_query("SELECT * FROM backgrounds WHERE type=2"); 
while($row = mysql_fetch_array($naturesql)) { 
    $id = $row['id']; 
    $name = $row['name']; 
    $background = $row['background']; 
    $pic = $row['image']; 


$check = mysql_query("SELECT * FROM store_items WHERE userid='$id2' AND type=2 AND type2='$id' AND other='$pic'"); 
while($checkrow = mysql_fetch_array($check)) { 
    $types = $checkrow['type2']; 

} 
if($id == $types) { 
    $bought = 'This item has already been bought'; 
} else { 
    $bought = '<form> 
       </form>'; 
// this form works fine 
} 


$display .= '<table width="100%"><tr><td><center><font size="+1">' . $name . '</font></center></td></tr><tr><td><center><img src="' . $pic . '" width="80px"></img></center></td></tr><tr><td>' . $bought . ' </td></tr></table>'; 

} 

をしたシンプルなバージョン。トーキーがもう少し長くなったら、私は望みましたが、そこにはあなたも行きます。

2

あなたは1つのクエリでこれをまとめることができますまず第一に(それが2のデータベースではありませんが、2つのテーブルには、それはあなたのコードかららしい)

SELECT b.*, s.type2 AS store_items_type2 
    FROM backgrounds AS b 
LEFT JOIN store_items AS s ON (s.type2 = b.id AND s.userid='$id2') 
    WHERE b.type=2 

どう$id2 = $_SESSION['id'];来ますか?セッションIDはユーザーIDと同じではありません。

質問とコードの作成にもっと努力して、わかりやすくしてください。

+0

悲しいことに、それはあなたが思うほど真実ではありません。 $ _SESSION ['id']は、それを行う方法を知る必要があるユーザーIDに等しいことができます。 – user1079456

+0

さて、ええ、悲しいことに、 – Richard