2012-05-10 25 views
-2

私は、ログインしたユーザーの性別に応じて特定の製品群を表示する配列をコーディングしようとしています。配列は本当に問題ではありませんが、データベースをチェックして結果から条件文を作成しなければならない部分は、私が考える主な問題です。条件付き配列

<?php 

include"config.php" or die "cannot connect to server"; 

$gender=$_POST['gender']; 



    $qry ="SELECT * FROM server WHERE gender ='$gender'"; 
    $result = mysql_query($qry); 


    $productdetails; 
    $productdetails1["Product1"] = "£8"; 
    $productdetails1["Product2"] = "£6"; 
    $productdetails1["Product3"] = "£5"; 
    $productdetails1["Product4"] = "£6"; 
    $productdetails1["Product5"] = "£4"; 
    $productdetails2["Product6"] = "£8"; 
    $productdetails2["Product7"] = "£6"; 
    $productdetails2["Product8"] = "£5"; 
    $productdetails2["Product9"] = "£6"; 
    $productdetails2["Product10"] = "£4"; 

     if (mysql_num_rows($result) = 1) { 
     foreach($productdetails1 as $key => $value){ 
      echo "Product: $key, Price: $value <br />"; 
      } 
     }     
     else { 
     foreach($productdetails2 as $key => $value) { 
      echo "Product: $key, Price: $value <br />"; 
      } 
     } 
?> 
+5

ジェンダーは、sqlクエリで使用する前に消毒する必要があります。これは単に注射を求めているだけです。 – Blake

+7

そして、まさに問題は何ですか?あなたが得たアウトプットは何ですか?どの入力?あなたはもっと具体的でなければなりません、単に「私はこれに問題があります」と言うのはあまり働かないということです。コードを実行することさえできないので(データベースはありません)、より多くの情報を提供する必要があります。 –

+0

正確な問題は、コードを実行しようとすると、「致命的なエラー:65行目のF:\ xampp \ htdocs \ account.phpの書き込みコンテキストで関数の戻り値を使用できません。 – northmanWebber

答えて

2

あなたの文が間違っている場合:

は、ここに私のコードです。 =は代入演算子です==または===

0

のようにcomparison operatorを使用してください。現在のコードはどうなりますか?

ヒント: 最初に$ genderをエコーし​​て、通過していることを確認してください。それはポストで提出されます。何も投稿されない場合はどうなりますか?これはどこから来たのですか?代わりにgetを使うべきです。これは何かのように誰かにポストへのリンクがここで意味をなさないと思うようです。あなたはいつも両方を持っていて、それがなければ投稿を得ることができます。そうでなければ、あなたの聴衆に応じて '男性'または '女性'にデフォルト設定します。

次に、クエリの出力は何ですか?ジェンダーが何も戻ってこない場合は、この時点では空白になる可能性があります。ジェンダーが渡されたすべての行を照会しているようですが、ifステートメントは返されたものがあるかどうか尋ねていますか?そして、あなたがやっていることはすべて配列に行きますが、あなたがDBから得たものを出力するべきではありません。実際にサーバーと呼ばれるテーブルに製品があると仮定すると、次のようなことを行う必要があります。

$products = mysql_query("SELECT * FROM server WHERE gender ='$gender"); 

while($product = mysql_fetch_array($products)){ 
    echo $product['name'] . " " . $product['price']. " " . $product['gender']; 
    echo "<br />"; 
} 

注意してください。ウェイターやコンピュータハードウェアのインスタンスでいっぱいになったテーブルをサーバーが意味するのでなければ、単に「サーバー」だけではなく、製品のようなテーブルを実際に呼び出す必要があります。