2009-02-07 6 views
0

Si dans le navigateur, j'ai des paramètres tels que:php - sélection automatique du menu déroulant en fonction des paramètres dans le lien du navigateur

http://localhost/specials.php?year=2009&make=honda&model=civic 

et le menu déroulant ressemble à quelque chose comme ceci:

<select name="year"> 
<?php 
$query = mysql_query("select distinct year from tbl_content where year = '$year'"); 
while($row = mysql_fetch_assoc($query)) { 

echo "<option value=\"{$row['year']}\">{$row['year']}</option>"; 
} 
?> 
</select> 

Maintenant, ce que j'essaie de faire est de montrer select quand la valeur des options de la liste déroulante est égale à l'année du paramètre dans l'URL du navigateur.

J'ai essayé ceci:

<select name="year"> 
<?php 
$query = mysql_query("select * from tbl_year 
while($row = mysql_fetch_assoc($query)) { 

#============================= 
if(isset($_GET['year'])) { 

$year = (int)$_GET['year']; 
if($year == $row['year'] { $selected = "selected"; } 
else { $selected = ""; 
} 


echo "<option value=\"{$row['year']}\" {$selected}>{$row['year']}</option>"; 
} 
?> 
</select> 
+0

quelle est la sortie étant html par le second morceau de code –

+0

user27751

+0

avec juste que html dans un fichier, il fonctionne, peut-être il y a quelque chose d'autre déblayage vers le haut –

Répondre

2

Peut-être essayer "selected='selected'" pour la rendre valide xml.

0
<select name="year"> 
<?php 

$selectedYear = NULL; 

if(isset($_GET['year'])) 
    $selectedYear = (int)$_GET['year']; 

$query = mysql_query('SELECT year FROM tbl_year GROUP BY year ORDER BY year ASC'); 

while($row = mysql_fetch_assoc($query)) { 
    echo '<option value="' . htmlspecialchars($row['year']) . '"'; 

    if($selectedYear === (int)$row['year']) { 
     echo ' selected="selected"'; 
    } 

    echo '>' . htmlspecialchars($row['year']) . '</option>"; 
} 

?> 
</select> 
+0

note: Je ne suis pas sûr de la SQL N'hésitez pas à me corriger. – strager

0

Libre à la fonctionnalité de séparer!

<?php 
function selectList($name,$values,$labels=null,$selected=null){ 
if($labels==null) $labels=&$values; 
    $data="<select name='$name'>"; 
    foreach($values as $k=>$v){ 
     $selected=($v==$selected)?'selected="selected"':false; 
     $data.="<option value='$v' $selected>".htmlspecialchars($labels[$k])."</option>"; 
     } 
     $data.="</select>"; 
     return $data; 
} 

$select=isset($_REQUEST['year'])?(int) $_REQUEST['year']:null; 
$query=mysql_query("SELECT DISTINCT `year` FROM `tbl_year` ORDER BY `year`"); 
while(($row=mysql_fetch_assoc($query))!==false){ 
    $values[]=$row['year']; 
    } 
echo selectList("year",$values,null,$select); 
?> 
Questions connexes