2009-07-24 9 views
1

Voici mon code que j'essaye de mettre au travail mais j'ai vraiment très peu de connaissance du tableau et foreach. Donc, il ne fonctionne pas correctementphp array et foreach?

Je dois montrer une forme de sélection dropdown au navigateur avec le contenu du tableau

Je dois aussi avoir l'élément sélectionné si elle est == à MyCountry $ Enfin , je voudrais montrer aux Etats-Unis et au Royaume-Uni en haut de ma liste

quelqu'un peut-il me dire comment je peux faire al cette

<?PHP 
$countries = array(
"217" => "Turkenistan", 
"218" => "Turks and Caicos Islands", 
"219" => "Tuvalu", 
"220" => "Uganda", 
"221" => "Ukraine", 
"222" => "United Arab Emirates", 
"223" => "United Kingdom (Great Britain)", 
"224" => "United States"); 


$mycountry = 224; 
?> 

<select name="country" style="width:180px;" onChange="do_get_rest_popup(this.value)" /> 
<?php 
$countryCounter = 1; 
$amtOfCountries = count($countries); 
//foreach ($country as $id => $c) { 
for($_top=0; $_top < $amtOfCountries; $_top++){ 
    if ($countryCounter == $amtOfCountries) { 
     echo "<option value=\"$countries[0]\" SELECTED>$countries[1]</option>"; 
    } else { 
     echo "<option value=\"$countries[0]\">$countries[1]</option>"; 
     $countryCounter++; 
    } 
} 
?> 
</select> 

Répondre

5
foreach ($countries as $key => $country) { 
    $selected = "" 
    if ($key == $mycountry) $selected = ' selected="selected" '; 
    print '<option value=' . $key . $selected . '>' . $country . '</option>'; 
} 

En fait, pour chaque élément dans le tableau, vous violez dans sa clé et sa valeur (ie $ pai [key] = valeur). Une fois que vous aurez votre tête autour des tableaux (et ils peuvent être très confus), cela rendra le codage un million de fois plus facile.

(Pour une raison quelconque la coloration syntaxique/mise en forme ne fonctionne pas dans mon code ...)

+3

l'attribut 'option value' pourrait utiliser des guillemets dans cet exemple. – Thorarin

+0

Woops, vous avez raison. Merci! – Christian

-1

Vous devriez mettre des États-Unis et au Royaume-Uni en haut de votre tableau et puis utilisez quelque chose comme:

foreach($countries as $row => $value) { 
    echo "<option value=\"$row\"" + ($row == 'usa' ? 'SELECTED') + ">$value</option>"; 
} 

et vous devez utiliser selected = « selected » au lieu de SELECTIONNE

+0

Mec, qui ajoutera « sélectionné » pour * tous * élément dans la liste. – Christian

+0

Vous avez raison, n'y pensais pas vraiment. J'ai mis à jour le code. – Dennis

+2

Man, $ row est un entier, comment sera-t-il égal à 'usa'? – Christian

1

Je vais deviner que vous cherchez:

foreach($countries as $id => $country) { 
    echo '<option value="$id"' . ($mycountry==$id?'selected="selected"':'') . '>' . $country . '</option>'; 
} 

Quant à faire en sorte que les Etats-Unis et au Royaume-Uni sont sur le dessus, assurez-vous que ces 2 sont sur votre tableau (ce serait le plus facile).

+0

merci j'aime le code plus court mais il y a une erreur snytax et je ne sais pas vraiment comment faire si/else dans la méthode sténographique très bien – JasonDavis

+0

n'avez-vous pas besoin d'autre chose (:)? –

+0

merci tom, manqué que .. – Evert