2017-02-23 70 views
0

我有一个问题,我想显示数据库中的所有行到动态onchange选择窗体,但它只显示第一行或只显示最后一行。你能帮我一个人吗?onchange从数据库下拉列表 - php,没有java或ajax

这是我的代码:

<?php 
    $selected11 = ''; 
    function get_options11($vyber11) { 
     $queryyy = mysql_query("SELECT funkcia, ID_funk FROM funkcie"); 
     while($row = mysql_fetch_array($queryyy)) { 
     $v11=$row['ID_funk']; 
     $k11=$row['funkcia']; 
     $moznosti11 = ''; 
     if($vyber11==$v11){ 
      $moznosti11.='<option value="'.$v11.'" selected>'.$k11.'</option>'; 
     } else{ 
      $moznosti11.='<option value="'.$v11.'">'.$k11.'</option>';} 
     } 
     return $moznosti11; 
    } 
    if(isset($_POST['funkcia'])) { 
     $selected11 = $_POST['funkcia']; 
    } 
    } 
?> 
<select name="funkcia" class="ramceky" style="width: 150px; height: 40px" onchange="this.form.submit();"> 
    <option><?php echo get_options11($selected11); ?></option> 
</select> 
+1

索尼娅:首先** mysql_ *已被弃用所以使用mysqli_ *或PDO。其次为什么不ajax? –

+0

如果我尝试mysqli_它显示错误...期望参数1 result..resource给出。不是ajax,因为我想知道它为什么不起作用。 – Sonia

+0

如果你不使用ajax,那么你必须刷新页面,我认为这不是一个好方法 –

回答

0

您在每次循环分配的变量$moznosti11;。 在while循环之前移动它,它应该像魅力一样工作。

在这里看到:

$moznosti11 = ''; 
while($row = mysql_fetch_array($queryyy)) { 
    $v11=$row['ID_funk']; 
    $k11=$row['funkcia']; 

    if($vyber11==$v11){ 
     $moznosti11.='<option value="'.$v11.'" selected>'.$k11.'</option>'; 
    } else{ 
     $moznosti11.='<option value="'.$v11.'">'.$k11.'</option>';} 
    } 
    return $moznosti11; 
} 
+0

YEEEEES :)非常感谢。有用 :))) – Sonia

0

的问题是你的选择返回,进入一个<option>

更改此:

<option><?php echo get_options11($selected11); ?></option> 

这样:

<?php echo get_options11($selected11); ?> 
+0

谢谢,但这不是一个问题,它只显示我的问题,没有白框选项。 – Sonia

+0

是的,这不是唯一的问题,但它是问题。不要把'