-3

これは可能ですか?? はいの場合、コードの何が問題なのか、それが機能しないのが原因です。そうでない場合、別の効率的な方法の原因を提案します(if else)ステートメントを使用すると、else条件の場合に約24から26の混乱になります....そしてそこにさらに4つのcaseステートメントがあります

書き直されたコード

コード:

    <?php
        $c = mysql_connect("localhost", "abc", "xyz");
        mysql_select_db("root");
        $bodytype = $_GET["name"]; //from another page through ajax
        $company  = $_GET["name2"]; //from another page through ajax    
        $Array    = array($bodytype,$company );
        $q="select * from product";
                $qc=mysql_query($q);
                $ans=mysql_fetch_array($qc);
                $ans[6];
                $ans[1];
    switch ($Array)
    {
        case array($ans[6],$ans[1]):
                        $q="select * from product where bodytype='$bodytype'&& Companyname='$company' GROUP BY modelname";
                        $qc=mysql_query($q);
                        $ans=mysql_fetch_array($qc);
                        $count=0;
                        while($ans=mysql_fetch_array($qc))
                        {
                                if ($count == 0 || $count == 1 || $count == 2)
                                {

                                $title=ucwords($ans[1]." ".$ans[2]);

                                print "<div class='img-wrap'>
                                        <img id='display_img' src='products/$ans[8]' width=300 height=200 title='$title'>
                                        <div class='img-overlay'>
                                        <input type='checkbox' id='compare_pro' /> Add to compare
                                        <h4>".$title."</h4>
                                        <p>".nl2br($ans[9])."</p>
                                        <p>"."<b>Versions:</b> ".$ans[3]."</p>
                                        <p>"."<b>Starting Price:</b>"." &#x20B9 ".$ans[4]."</p>
                                        </div>
                                        </div>";
                                }
                                $count++;
                                if($count==3)
                                {
                                    print "<br />";
                                    $count = 0;
                                }
                        }
      break;
    case array($ans[6],'not'):
                        $q="select * from product where bodytype='$bodytype' GROUP BY modelname";
                        $qc=mysql_query($q);
                        $count=0;
                        while($ans=mysql_fetch_array($qc))
                        {
                                if ($count == 0 || $count == 1 || $count == 2)
                                {

                                $title=ucwords($ans[1]." ".$ans[2]);

                                print "<div class='img-wrap'>
                                        <img id='display_img' src='products/$ans[8]' width=300 height=200 title='$title'>
                                        <div class='img-overlay'>
                                        <input type='checkbox' id='compare_pro' /> Add to compare
                                        <h4>".$title."</h4>
                                        <p>".nl2br($ans[9])."</p>
                                        <p>"."<b>Versions:</b> ".$ans[3]."</p>
                                        <p>"."<b>Starting Price:</b>"." &#x20B9 ".$ans[4]."</p>
                                        </div>
                                        </div>";
                                }
                                $count++;
                                if($count==3)
                                {
                                    print "<br />";
                                    $count = 0;
                                }
                        }   
      break;
?>

switch ステートメントに複数の制御変数を含めることは可能ですか?

例 :

a=1;
    b=2;

        switch(a , b)
            {
                   case(1,2): print "true";
                   break;
                   case(2,1): print "false";
                   break;               
            } 
4

2 に答える 2

1

おそらくより建設的なメモとして、ここで実際に何を達成しようとしているのかを見て、少し脳を再起動してみましょう.

2 つのクエリのいずれかを実行するかどうかを決定しようとしているように見えますが、完了すると、出力は非常に似ているように見えます。

Query one:
"select * from product where bodytype='$bodytype' && Companyname='$company' GROUP BY modelname";

Query two:
"select * from product where bodytype='$bodytype' GROUP BY modelname";

これは、次のようにもっと簡単に達成できないでしょうか。

if ( ! empty( $_GET['name2'] ) ) {
    $query = "select * from product where bodytype='$bodytype' && Companyname='$company' GROUP BY modelname";
} else {
    $query = "select * from product where bodytype='$bodytype' GROUP BY modelname";
}

PS

select * の後に $and[6] を使用しないようにしてください。誰かがデータベースを変更して新しい列を追加し、その列の論理的な位置を列 3 に決定した場合、このコードがどうなるか想像してみてください。すべてのコードが非常に深刻な形で爆発するでしょう。それを修正する仕事を得る貧しいだらしないことを考えてみてください!! 6ヶ月後のあなたかもしれません。この男はどのフィールドを使用しようとしていましたか??? 最悪でも $ans['column_name'] を使用するか、それでも結果をオブジェクトとしてフェッチすると、$table_name->Column_Name を使用して値をアドレス指定することで自己文書化コードが得られます。

于 2013-07-09T10:27:29.013 に答える