Avatar billede kgp43 Nybegynder
16. december 2003 - 20:19 Der er 16 kommentarer og
2 løsninger

dropdown/liste menu med alle lande (engelsk)

Hejsa,

Der er vel ikke lige en, der har sådan en menu liggende?
Avatar billede kgp43 Nybegynder
16. december 2003 - 20:19 #1
skal være engelsk
Avatar billede schaefner Juniormester
16. december 2003 - 20:36 #2
<select name="country">
<option value="Afghanistan">Afghanistan</option>
<option value="Albania">Albania</option>
<option value="Algeria">Algeria</option>
<option value="Andorra">Andorra</option>
<option value="Angola">Angola</option>
<option value="Antigua and Barbuda">Antigua and Barbuda</option>
<option value="Argentina">Argentina</option>
<option value="Armenia">Armenia</option>
<option value="Australia">Australia</option>
<option value="Austria">Austria</option>
<option value="Azerbaijan">Azerbaijan</option>
<option value="Bahama">Bahama</option>
<option value="Bahrain">Bahrain</option>
<option value="Bangladesh">Bangladesh</option>
<option value="Barbados">Barbados</option>
<option value="Belarus">Belarus</option>
<option value="Belgium">Belgium</option>
<option value="Belize">Belize</option>
<option value="Benin">Benin</option>
<option value="Bhutan">Bhutan</option>
<option value="Bolivia">Bolivia</option>
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
<option value="Botswana">Botswana</option>
<option value="Brazil">Brazil</option>
<option value="Brunei Darussalam">Brunei Darussalam</option>
<option value="Bulgaria">Bulgaria</option>
<option value="Burkina Faso">Burkina Faso</option>
<option value="Burundi">Burundi</option>
<option value="Cambodia">Cambodia</option>
<option value="Cameroon">Cameroon</option>
<option value="Canada">Canada</option>
<option value="Cape Verde">Cape Verde</option>
<option value="Central African Republic">Central African Republic</option>
<option value="Chad">Chad</option>
<option value="Chile">Chile</option>
<option value="China">China</option>
<option value="Colombia">Colombia</option>
<option value="Comoros">Comoros</option>
<option value="Congo">Congo</option>
<option value="Costa Rica">Costa Rica</option>
<option value="Croatia">Croatia</option>
<option value="Cuba">Cuba</option>
<option value="Cyprus">Cyprus</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Côte d'Ivoire">Côte d'Ivoire</option>
<option value="DR Congo">DR Congo</option>
<option value="Denmark">Denmark</option>
<option value="Djibouti">Djibouti</option>
<option value="Dominica">Dominica</option>
<option value="Dominican Republic">Dominican Republic</option>
<option value="East Timor">East Timor</option>
<option value="Ecuador">Ecuador</option>
<option value="Egypt">Egypt</option>
<option value="El Salvador">El Salvador</option>
<option value="Equatorial Guinea">Equatorial Guinea</option>
<option value="Eritrea">Eritrea</option>
<option value="Estonia">Estonia</option>
<option value="Ethiopia">Ethiopia</option>
<option value="Fiji">Fiji</option>
<option value="Finland">Finland</option>
<option value="France">France</option>
<option value="Gabon">Gabon</option>
<option value="Gambia">Gambia</option>
<option value="Georgia">Georgia</option>
<option value="Germany">Germany</option>
<option value="Ghana">Ghana</option>
<option value="Greece">Greece</option>
<option value="Grenada">Grenada</option>
<option value="Guatemala">Guatemala</option>
<option value="Guinea">Guinea</option>
<option value="Guinea-Bissa">Guinea-Bissa</option>
<option value="Guyana">Guyana</option>
<option value="Haiti">Haiti</option>
<option value="Honduras">Honduras</option>
<option value="Hong Kong">Hong Kong</option>
<option value="Hungary">Hungary</option>
<option value="Iceland">Iceland</option>
<option value="India">India</option>
<option value="Indonesia">Indonesia</option>
<option value="Iran">Iran</option>
<option value="Iraq">Iraq</option>
<option value="Ireland">Ireland</option>
<option value="Israel">Israel</option>
<option value="Italy">Italy</option>
<option value="Jamaica">Jamaica</option>
<option value="Japan">Japan</option>
<option value="Jordan">Jordan</option>
<option value="Kazakhstan">Kazakhstan</option>
<option value="Kenya">Kenya</option>
<option value="Kiribati">Kiribati</option>
<option value="Kuwait">Kuwait</option>
<option value="Kyrgyzstan">Kyrgyzstan</option>
<option value="Lao PDR">Lao PDR</option>
<option value="Latvia">Latvia</option>
<option value="Lebanon">Lebanon</option>
<option value="Lesotho">Lesotho</option>
<option value="Liberia">Liberia</option>
<option value="Libya">Libya</option>
<option value="Liechtenstein">Liechtenstein</option>
<option value="Lithuania">Lithuania</option>
<option value="Luxembourg">Luxembourg</option>
<option value="Macedonia FY">Macedonia FY</option>
<option value="Madagascar">Madagascar</option>
<option value="Malawi">Malawi</option>
<option value="Malaysia">Malaysia</option>
<option value="Maldives">Maldives</option>
<option value="Mali">Mali</option>
<option value="Malta">Malta</option>
<option value="Marshall Islands">Marshall Islands</option>
<option value="Mauritania">Mauritania</option>
<option value="Mauritius">Mauritius</option>
<option value="Mexico">Mexico</option>
<option value="Micronesia">Micronesia</option>
<option value="Moldova">Moldova</option>
<option value="Monaco">Monaco</option>
<option value="Mongolia">Mongolia</option>
<option value="Morocco">Morocco</option>
<option value="Mozambique">Mozambique</option>
<option value="Myanmar">Myanmar</option>
<option value="Namibia">Namibia</option>
<option value="Nauru">Nauru</option>
<option value="Nepal">Nepal</option>
<option value="Netherlands">Netherlands</option>
<option value="New Zealand">New Zealand</option>
<option value="Nicaragua">Nicaragua</option>
<option value="Niger">Niger</option>
<option value="Nigeria">Nigeria</option>
<option value="North Korea">North Korea</option>
<option value="Northern Ireland">Northern Ireland</option>
<option value="Norway">Norway</option>
<option value="Oman">Oman</option>
<option value="Pakistan">Pakistan</option>
<option value="Palau">Palau</option>
<option value="Panama">Panama</option>
<option value="Papua New Guinea">Papua New Guinea</option>
<option value="Paraguay">Paraguay</option>
<option value="Peru">Peru</option>
<option value="Philippines">Philippines</option>
<option value="Poland">Poland</option>
<option value="Portugal">Portugal</option>
<option value="Qatar">Qatar</option>
<option value="Republic of Ireland">Republic of Ireland</option>
<option value="Romania">Romania</option>
<option value="Russia">Russia</option>
<option value="Rwanda">Rwanda</option>
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
<option value="Saint Lucia">Saint Lucia</option>
<option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option>
<option value="Samoa">Samoa</option>
<option value="San Marino">San Marino</option>
<option value="Sao Tome and Principe">Sao Tome and Principe</option>
<option value="Saudi Arabia">Saudi Arabia</option>
<option value="Senegal">Senegal</option>
<option value="Serbia and Montenegro">Serbia and Montenegro</option>
<option value="Seychelles">Seychelles</option>
<option value="Sierra Leone">Sierra Leone</option>
<option value="Singapore">Singapore</option>
<option value="Slovakia">Slovakia</option>
<option value="Slovenia">Slovenia</option>
<option value="Solomon Islands">Solomon Islands</option>
<option value="Somalia">Somalia</option>
<option value="South Africa">South Africa</option>
<option value="South Korea">South Korea</option>
<option value="Spain">Spain</option>
<option value="Sri Lanka">Sri Lanka</option>
<option value="Sudan">Sudan</option>
<option value="Suriname">Suriname</option>
<option value="Swaziland">Swaziland</option>
<option value="Sweden">Sweden</option>
<option value="Switzerland">Switzerland</option>
<option value="Syria">Syria</option>
<option value="Taiwan">Taiwan</option>
<option value="Tajikistan">Tajikistan</option>
<option value="Tanzania">Tanzania</option>
<option value="Thailand">Thailand</option>
<option value="Togo">Togo</option>
<option value="Tonga">Tonga</option>
<option value="Trinidad and Tobago">Trinidad and Tobago</option>
<option value="Tunisia">Tunisia</option>
<option value="Turkey">Turkey</option>
<option value="Turkmenistan">Turkmenistan</option>
<option value="Tuvalu">Tuvalu</option>
<option value="USA">USA</option>
<option value="Uganda">Uganda</option>
<option value="Ukraine">Ukraine</option>
<option value="United Arab Emirates">United Arab Emirates</option>
<option value="United Kingdom">United Kingdom</option>
<option value="USA">USA</option>
<option value="Uruguay">Uruguay</option>
<option value="Uzbekistan">Uzbekistan</option>
<option value="Vanuatu">Vanuatu</option>
<option value="Venezuela">Venezuela</option>
<option value="Vietnam">Vietnam</option>
<option value="Yemen">Yemen</option>
<option value="Zambia">Zambia</option>
<option value="Zimbabwe">Zimbabwe</option>
</select>

mvh. Jesper Sørensen
Avatar billede kgp43 Nybegynder
16. december 2003 - 21:12 #3
Formen skal bruges til register samt edit af profil.
Er den en nem måde at få det aktuelle land "selected", når brugeren skal redigere sin profil? ellers skal jeg til at tilføje kommandoen, til hver linie?
Avatar billede kgp43 Nybegynder
16. december 2003 - 21:32 #4
Point øget pga det ekstra spørgsmål
Avatar billede nicklasb Nybegynder
16. december 2003 - 22:40 #5
hvis du ligger landene ind i et array i stedet, og så senere printer listen via en løkke, kan du både få koden til at fremstå MEGET kortere.. Men så er det også let lige at kontrollere om brugerens valg er lig det du er nået til i løkken..
altså noget lignende:

<?php
$var_fra_database_med_valg = 2
$lande = array('Danmark', 'USA', 'OSV');

for ($i = 0; $i < 3; $i++) {
echo '<option';
if ($var_fra_database_med_valg == $i) {
echo ' selected="selected"';
}
echo ' value="' . $lande[$i] . '">' . $lande[$i] . '</option>
';

?>

og den kunne så selvfølgelig blive MEGET smartere.. bare for princippet i at kontrollere, eksemplet lige hurtigt er skrevet.. ;)
Avatar billede schaefner Juniormester
16. december 2003 - 22:44 #6
Avatar billede schaefner Juniormester
16. december 2003 - 22:44 #7
forsent ;)
Avatar billede Slettet bruger
16. december 2003 - 22:47 #8
Lav en ekstra fil til include. Den skal have følgende indhold:

$lande['none']='Please choose your country.';
$lande['Afghanistan']='Afghanistan';
$lande['Albania']='Albania';
og så videre. Det må du selv taste. ;-)
and Barbuda</option>

function make_selectbox($navn,$selectliste,$nuværende){
  echo "<select name='{$navn}'>\n";
  foreach ($selectliste as $key => $value){
    echo "<option value='{$key}'";
    if ($key==$nuværende){echo " selected";}
    echo ">{$value}</option>\n";
  }
  echo "</select>";
}

Nu kan du altid, når du skal have lavet en select-box bare kalde

make_selectbox("country",$lande,$row['country']);

Og bedst af alt, så kan funktionen også bruges til alle mulige andre select-bokse.
Avatar billede schaefner Juniormester
16. december 2003 - 22:48 #9
man må sige, at der er enighed over hele linjen.
Avatar billede Slettet bruger
16. december 2003 - 22:49 #10
Nu kan jeg se, at der er kommet et par andre forslag, mens jeg skrev mit. Jeg har også en rettelse til mit. æ er ikke altid optimalt i variabelnavne, så de to steder skal $nuværende måske rettes til $nuvaerende
Avatar billede nicklasb Nybegynder
16. december 2003 - 22:51 #11
hehe.. da også en god ting.. det betyder vel bare at det er en god/rigtig måde at gøre det på.. ;)
Men flotte er jeres uddybelser da..

sandbox -> har dog lige lidt problemer med at finde ud af hvordan din skal kunne virke?
Hvornår bruger du dit array $lande? Og hvorfor ikke bare lade dem være nummeret som identifikation i stedet for ladets navn? Kan saktens være det bare er et kapitel jeg ikke har fået ordentligt ind.. ;)
er det evt der der skulle hele $row['country'] ?? For så skal du bare sætte variablen $row ind i stedet, og så omdøbe den til $lande ;)
Avatar billede Slettet bruger
16. december 2003 - 23:01 #12
Det lande-array bruges som en parameter til funktionen, når man kalder den (lige som i schaefners forslag - hans og mit er faktisk temmelig ens).

Funktionen kaldes med tre parametre.
1: navnet på select-boksen
2: et navnebaseret array (F.eks $lande)
3: navnet på det nuværende valgte element i listen

Du kunne sagtens bruge et nummerbaseret array istedet, men så skulle du være sikker på, at når der bliver lavet nye lande, må de allerede eksisterende numre ikke skifte betydning. Ellers risikerer du at flytte danskere til DR Congo, hvis der kommer et nyt land før i listen.
Avatar billede Slettet bruger
16. december 2003 - 23:36 #13
Og $row['country'] var bare et eksempel på hvad variablen, der indeholdt brugerens valg kunne hedde.

Hvis du vil lave en med Danmark som forvalgt, skriver du bare:

make_selectbox("country",$lande,'Denmark');
Avatar billede Slettet bruger
16. december 2003 - 23:50 #14
Eller med schaefners ord:

Denmark er i dette tilfælde landet der skal være valgt i listen. Normalt ville dette hives udfra en databasen, f.eks.:

echo DropdownFromArray('country',$countryList,$row['country']);

Som sagt er vores løninger MEGET ens - både i selve koden og i brugen af den. Der er faktisk kun to forskelle:

1: Min bruger navnebaseret array - schaefners bruger simpelt array
2: Min skriver ud - schaefners returnerer en streng

Hvis den returnerede værdi fra formularen skal være det samme, som brugeren ser i select-boksen, er begge lige gode, men der er mindre skrivearbejde med schaefners.

Hvis du vil have, at en muligheds værdi ikke behøver være det samme som den viste tekst, er min bedre. Du kan for eksempel lave en ny landeliste oversat til dansk, som returnerer samme værdier til databasen som den engelske. $DK_lande['Denmark']='Danmark'; og alle de andre på samme måde. Så skriver man bare make_selectbox("country",$DK_lande,'Denmark'); og får en dansksproget selectbox.
Avatar billede nicklasb Nybegynder
17. december 2003 - 15:15 #15
ja, kan saktens se det nu.. Fik bare byttet rundt på et par ting under den MEGET hurtige gennemlæsning.. Men i sin helhed samme princip..
Avatar billede Slettet bruger
17. december 2003 - 20:16 #16
Og for både min og schaefners gælder det, at den kan bruges til enhver selectbox, du skulle få lyst til at lave. F.eks:

$links['http://exp.dk/']='Eksperten';
$links['http://www.webcafe.dk']='Webcafe.dk';
$links['http://www.html.dk']='html.dk';

make_selectbox('link',$links,'http://exp.dk');

Hvis du bruger schaefners ser det sådan ud:

$links[]='http://exp.dk/';
$links[]='http://www.webcafe.dk';
$links[]='http://www.html.dk';

echo DropdownFromArray('link',$links,'http://exp.dk');

For det tilfælde, at der stadig skulle være nogen derude, som ikke har opdaget det, vil jeg lige påpege, at schaefners og min løsning er meget ens :-)
Avatar billede nicklasb Nybegynder
17. december 2003 - 20:33 #17
hehe.. ja.. og kan man vel egentligt også saktens ud fra det eksempel jeg skrev?
Syntes nu stadig det er lettere at angive det med tal, og så bare slå fast hvordan disse skal ordnes..
Især hvis landene i stedet skal hives ud fra en database også.. Et tal fylder mindre end en hel tekst.. ;)
Avatar billede Slettet bruger
17. december 2003 - 21:02 #18
Ja, tal er tit smartere at bruge.

Og din kan naturligvis puttes ind i en funktion og sættes til at bruge antallet af elementer i arrayet istedet for et håndkodet tal. Med disse små tilføjelser vil din nok komme til at ligne de to andre lige så meget, som de ligner hinanden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester