输出两列PHP/MySQL下拉菜单请求

输出两列PHP/MySQL下拉菜单请求,php,drop-down-menu,Php,Drop Down Menu,希望你能帮助我 我有一个下拉菜单,在从单个列请求时可以正常工作,如下所示: error_reporting(E_ALL); if (!isset($_POST['submit'])) { echo "<form action=\"$t\" method=\"post\">"; $res=mysql_query("SELECT DISTINCT y FROM $z") or die("Db temp. not available"); echo "<sele

希望你能帮助我

我有一个下拉菜单,在从单个列请求时可以正常工作,如下所示:

error_reporting(E_ALL);
if (!isset($_POST['submit'])) {

echo "<form action=\"$t\" method=\"post\">";

    $res=mysql_query("SELECT DISTINCT y FROM $z") or die("Db temp. not available");

    echo "<select name=dropdown>";

    while($row=mysql_fetch_assoc($res)) {

    echo "<option value=\"".$hy."\">".$hy."</option>";

    }

    echo "</select>";

    echo "<input value=\"SORT\" name=\"submit\">";

    echo "</form>";

    }

    else {

    $dropdown = empty($_POST['dropdown'])? die ("ERROR: Select from dropdown") : mysql_real_escape_string($_POST['dropdown']);

    $d = "DATE_FORMAT( date,'%d/%m/%Y' )as date";

    $result = mysql_query("SELECT * , $d FROM $z WHERE y='$dropdown'  ORDER BY date DESC");
错误报告(E_ALL);
如果(!isset($_POST['submit'])){
回声“;
$res=mysql_query(“从$z中选择不同的y”)或die(“数据库温度不可用”);
回声“;
while($row=mysql\u fetch\u assoc($res)){
回声“$hy.”;
}
回声“;
回声“;
回声“;
}
否则{
$dropdown=empty($\u POST['dropdown'])?die(“错误:从下拉菜单中选择”):mysql\u real\u escape\u字符串($\u POST['dropdown']);
$d=“日期”格式(日期,“%d/%m/%Y”)为日期;
$result=mysql_查询(“选择*,从$z中选择$d,其中y=“$dropdown”按日期顺序描述”);
当我尝试使用相同的输出方法添加一个额外的列(如下所示)时,请求不会被识别——将显示零错误,并且所有变量都可以在适当的位置进行回显

error_reporting(E_ALL);
if (!isset($_POST['submit'])) {

    echo "<form action=\"$t\" method=\"post\" >";


    $query="SELECT DISTINCT x, y FROM $z ORDER BY x";

    echo "<dd><select name=dropdown>";

    if ($result = mysql_query($query))
    {
    $numofrows = mysql_num_rows($result);   
    for($i = 0; $i < $numofrows; $i++) {

    $row = mysql_fetch_assoc($result); 


            if($row['y']=="HOTTEST"){
            echo "<option  value=\"" . $i . "\">" .$hy. "------------" .$hx. "</option>";    }      
            elseif($row['y']=="GRADUAL"){
            echo "<option value=\"" . $i . "\">" .$hy. "-----------" .$hx. "</option>";    }        
            elseif($row['y']=="TOP-Seller"){
            echo "<option value=\"" . $i . "\">" .$hy. "-----------" .$hx. "</option>";    }        
            elseif($row['y']=="HOT-Seller"){
            echo "<option value=\"" . $i . "\">" .$hy. "-----------" .$hx. "</option>";    }
            else {
            echo "<option value=\"" . $i . "\">" .$hy. "----------" .$hx. "</option>";    } 

        }
    }
            else    {

        print "Could not retrieve the data because: 1' . mysql_error() . '";
    }
    echo "</select>";

    echo "<input  type=\"submit\" value=\"SORT\" name=\"submit\">";

    echo "</form>";
    }

    else     {


    $dropdown = empty($_POST['dropdown'])? die ("ERROR: Select from dropdown") : mysql_real_escape_string($_POST['dropdown']);

    $d = "DATE_FORMAT( date,'%d/%m/%Y' )as date";
    $result = mysql_query("SELECT * , $d FROM $z WHERE y='$dropdown'  ORDER BY date DESC");
错误报告(E_ALL);
如果(!isset($_POST['submit'])){
回声“;
$query=“从$z订单中按x选择不同的x、y”;
回声“;
如果($result=mysql\u query($query))
{
$numorrows=mysql\u num\u rows($result);
对于($i=0;$i<$numorrows;$i++){
$row=mysql\u fetch\u assoc($result);
如果($row['y']=“最热”){
回显“$hy.”----------“$hx.”;}
elseif($row['y']==“渐变”){
回显“$hy.”-----------------“$hx.”;}
elseif($row['y']==“畅销书”){
回显“$hy.”-----------------“$hx.”;}
elseif($row['y']==“热卖品”){
回显“$hy.”-----------------“$hx.”;}
否则{
回声“$hy.”-----------------“$hx.”;}
}
}
否则{
print“无法检索数据,因为:1”.mysql_error();
}
回声“;
回声“;
回声“;
}
否则{
$dropdown=empty($\u POST['dropdown'])?die(“错误:从下拉菜单中选择”):mysql\u real\u escape\u字符串($\u POST['dropdown']);
$d=“日期”格式(日期,“%d/%m/%Y”)为日期;
$result=mysql_查询(“选择*,从$z中选择$d,其中y=“$dropdown”按日期顺序描述”);
我希望你能为我解释一下这件事

谢谢 萨米

也许这会奏效

if ($result = mysql_query($query)) {
    $numofrows = mysql_num_rows($result);   
    for($i = 0; $i < $numofrows; $i++) {
        if (!mysql_data_seek($result, $i))   //add this line
           continue; //add this line

        $row = mysql_fetch_assoc($result); 

        ........

    }
}
if($result=mysql\u query($query)){
$numorrows=mysql\u num\u rows($result);
对于($i=0;$i<$numorrows;$i++){
如果(!mysql\u data\u seek($result,$i))//添加此行
continue;//添加此行
$row=mysql\u fetch\u assoc($result);
........
}
}

嗯,调试这个很困难,因为我无法创建与您的服务器相同的条件。但是,您的代码有很多语法问题。我为您清除了这些问题。要么它开始工作,要么至少有更聪明的人,然后我可以进一步调试它

CSS:

.dropdown option {
    height: 22px; 
    width: 255px;
    margin-bottom: 3px; 
    font-weight: bold; 
    border-bottom: 3px;
    background-color: #00FF00; /* This also is the default color */
}
.dropdown .hottest {background-color: #FF020D;}
.dropdown .gradual {background-color: #FFFFFF;}
.dropdown .top-seller {background-color: #FFFF00;}
.dropdown .hot-seller {background-color: orange;}
// Lets get rid of the notices, as you dont need them for this script
// error_reporting(E_ALL);

// Understanding that this is a sorting dropdown, then we are going to display this all the time:
if ($results = mysql_query('SELECT * FROM EXAMPLE_TABLE ORDER BY COL_X')) {
    echo '<form action="" method="post"><select name="dropdown" class="dropdown">';
    while ($row = mysql_fetch_assoc($results)) {

        $row_y = htmlspecialchars_decode($row['COL_Y']);
        $row_x = htmlspecialchars_decode($row['COL_X']);

        if ($row['COL_Y'] == "HOTTEST") {
            echo '<option  value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="hottest">' . $row_y . '------------' . $row_x . '</option>';
        } elseif ($row['COL_Y'] == "GRADUAL") {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="gradual">' . $row_y . '------------' . $row_x . '</option>';
        } elseif ($row['COL_Y'] == "TOP-Seller") {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="top-seller">' . $row_y . '------------' . $row_x . '</option>';
        } elseif ($row['COL_Y'] == "HOT-Seller") {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="hot-seller">' . $row_y . '------------' . $row_x . '</option>';
        } else {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '">' . $row_y . '------------' . $row_x . '</option>';
        }
    }
    mysql_free_result($results);
    echo '</select><input type="submit" value="SORT" name="submit"></form>';
} else {
    print 'Could not retrieve the data because: ' . mysql_error();
}

// And when the form has been submitted, then use this:
if ($_POST['submit']) {
    list($post_col_y, $post_col_x) = explode('-|-', $_POST['dropdown']);
    $results = mysql_query("SELECT *, DATE_FORMAT(date, '%d/%m/%Y' ) AS `date` FROM $w_table WHERE `COL_Y` = '$post_col_y' AND `COL_X` = '$post_col_x' ORDER BY `date` DESC"); 
} else {
    // However, you also need to show some data without any sorting:
    $results = mysql_query("SELECT *, DATE_FORMAT(date, '%d/%m/%Y' ) AS `date` FROM $w_table ORDER BY `date` DESC");
}
PHP:

.dropdown option {
    height: 22px; 
    width: 255px;
    margin-bottom: 3px; 
    font-weight: bold; 
    border-bottom: 3px;
    background-color: #00FF00; /* This also is the default color */
}
.dropdown .hottest {background-color: #FF020D;}
.dropdown .gradual {background-color: #FFFFFF;}
.dropdown .top-seller {background-color: #FFFF00;}
.dropdown .hot-seller {background-color: orange;}
// Lets get rid of the notices, as you dont need them for this script
// error_reporting(E_ALL);

// Understanding that this is a sorting dropdown, then we are going to display this all the time:
if ($results = mysql_query('SELECT * FROM EXAMPLE_TABLE ORDER BY COL_X')) {
    echo '<form action="" method="post"><select name="dropdown" class="dropdown">';
    while ($row = mysql_fetch_assoc($results)) {

        $row_y = htmlspecialchars_decode($row['COL_Y']);
        $row_x = htmlspecialchars_decode($row['COL_X']);

        if ($row['COL_Y'] == "HOTTEST") {
            echo '<option  value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="hottest">' . $row_y . '------------' . $row_x . '</option>';
        } elseif ($row['COL_Y'] == "GRADUAL") {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="gradual">' . $row_y . '------------' . $row_x . '</option>';
        } elseif ($row['COL_Y'] == "TOP-Seller") {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="top-seller">' . $row_y . '------------' . $row_x . '</option>';
        } elseif ($row['COL_Y'] == "HOT-Seller") {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '" class="hot-seller">' . $row_y . '------------' . $row_x . '</option>';
        } else {
            echo '<option value="' . $row['COL_Y'] . '-|-' . $row['COL_X'] . '">' . $row_y . '------------' . $row_x . '</option>';
        }
    }
    mysql_free_result($results);
    echo '</select><input type="submit" value="SORT" name="submit"></form>';
} else {
    print 'Could not retrieve the data because: ' . mysql_error();
}

// And when the form has been submitted, then use this:
if ($_POST['submit']) {
    list($post_col_y, $post_col_x) = explode('-|-', $_POST['dropdown']);
    $results = mysql_query("SELECT *, DATE_FORMAT(date, '%d/%m/%Y' ) AS `date` FROM $w_table WHERE `COL_Y` = '$post_col_y' AND `COL_X` = '$post_col_x' ORDER BY `date` DESC"); 
} else {
    // However, you also need to show some data without any sorting:
    $results = mysql_query("SELECT *, DATE_FORMAT(date, '%d/%m/%Y' ) AS `date` FROM $w_table ORDER BY `date` DESC");
}
//让我们去掉这些通知,因为这个脚本不需要它们
//错误报告(E_全部);
//了解这是一个排序下拉列表,然后我们将一直显示它:
if($results=mysql\u query('SELECT*FROM EXAMPLE\u TABLE ORDER BY COL\u X')){
回声';
while($row=mysql\u fetch\u assoc($results)){
$row_y=htmlspecialchars_decode($row['COL_y']);
$row_x=htmlspecialchars_decode($row['COL_x']);
如果($row['colu_Y']==“最热”){
回显'.$row_y.'-'.$row_x'.';
}elseif($row['COL_Y']==“渐变”){
回显'.$row_y.'-'.$row_x'.';
}elseif($row['COL_Y']==“畅销书”){
回显'.$row_y.'-'.$row_x'.';
}elseif($row['COL_Y']==“热卖品”){
回显'.$row_y.'-'.$row_x'.';
}否则{
回显'.$row_y.'-'.$row_x'.';
}
}
mysql_免费_结果($results);
回声';
}否则{
print“无法检索数据,因为:”.mysql_error();
}
//提交表格后,请使用以下内容:
如果($_POST['submit'])){
列表($post_colu_y,$post_colu_x)=分解('-|-',$_post['dropdown');
$results=mysql_查询($w_表中的'COL_Y`='$post_colu Y'和'COL_X`='$post_colu X'按'DATE`DESC'顺序选择*,DATE_格式(DATE,'%d/%m/%Y')作为'DATE';
}否则{
//但是,您还需要在不进行任何排序的情况下显示一些数据:
$results=mysql_查询(“选择*,DATE_格式(DATE,'%d/%m/%Y')作为$w_表中的'DATE',按'DATE`DESC'排序”);
}
编辑6了解colu_Y是评级,colu_X是类别,并且您希望发布这两个条件,然后在查询中使用。这是脚本现在应该做的事情。但是,可能会出现问题。因为colu_Y和colu_X值可以有特殊字符。因此htmlspecialchars()。但是,您不能在选项值中对原始数据进行htmlspecialchars..或在查询中不匹配

编辑5我以前就开始意识到了,但我一直在等待您的反馈。现在我已经看到了您尝试执行的示例,我更新了答案。我很有信心这会奏效。您只需用自己的参数(示例表、列Y、列X)替换术语即可.此外,如果您确切知道mysql中的功能,那么您可能应该重新添加它

编辑4好的,我检查了你的第一次修订版。你的代码太慢了,以至于失去了原意,没有任何意义。我在这次编辑中使用了你的第一次修订版。我还添加了CSS部分,这样代码就可以再次理解。而且,你可以看到CSS是如何工作的。我添加了
htmlspecialchars()
再次返回部分,因为否则您的代码就没有意义。更改了与
开始和结束相关的mysql错误打印位置。我还更改了术语,因为它们