Koge min kode lidt ned

Tags:    php

Hejsa.

Jeg har nedenstående kode, og den er da simpelt for lang og klodset, er det en der kan kdoe den ned. Fx til en while, array eller noget i den stil?

<select name="address" size="1">
<option>Ikke angivet</option>
<?
if($_POST['address'] == "Nordjylland"){
echo '<option selected value="Nordjylland">Nordjylland</option>';
} else {
echo '<option value="Nordjylland">Nordjylland</option>';
}
if($_POST['address'] == "Vestjylland"){
echo '<option selected value="Vestjylland">Vestjylland</option>';
} else {
echo '<option value="Vestjylland">Vestjylland</option>';
}
if($_POST['address'] == "Midtjylland"){
echo '<option selected value="Midtjylland">Midtjylland</option>';
} else {
echo '<option value="Midtjylland">Midtjylland</option>';
}
if($_POST['address'] == "Østjylland"){
echo '<option selected value="Østjylland">Østjylland</option>';
} else {
echo '<option value="Østjylland">Østjylland</option>';
}
if($_POST['address'] == "Sønderjylland"){
echo '<option selected value="Sønderjylland">Sønderjylland</option>';
} else {
echo '<option value="Sønderjylland">Sønderjylland</option>';
}
if($_POST['address'] == "Fyn"){
echo '<option selected value="Fyn">Fyn</option>';
} else {
echo '<option value="Fyn">Fyn</option>';
}
if($_POST['address'] == "Nordsjælland"){
echo '<option selected value="Nordsjælland">Nordsjælland</option>';
} else {
echo '<option value="Nordsjælland">Nordsjælland</option>';
}
if($_POST['address'] == "Sydsjælland"){
echo '<option selected value="Sydsjælland">Sydsjælland</option>';
} else {
echo '<option value="Sydsjælland">Sydsjælland</option>';
}
if($_POST['address'] == "Østsjælland"){
echo '<option selected value="Østsjælland">Østsjælland</option>';
} else {
echo '<option value="Østsjælland">Østsjælland</option>';
}
if($_POST['address'] == "Vestsjælland"){
echo '<option selected value="Vestsjælland">Vestsjælland</option>';
} else {
echo '<option value="Vestsjælland">Vestsjælland</option>';
}
if($_POST['address'] == "Øer"){
echo '<option selected value="Øer">Øer</option>';
} else {
echo '<option value="Øer">Øer</option>';
}
?>
</select>



9 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Jeg vil mene at en array er et godt bud:

Fold kodeboks ind/udKode 


Martin: Hvorfor ville du ikke lave de echo'er og lægge det i en variabel?? Det vil da kun gøre koden mere uoverskuelig og gøre den langsommere. Det får du intet ud af.



Fold kodeboks ind/udKode 


--
Ronni Egeriis



Hejsa.

Jeg har nedenstående kode, og den er da simpelt for lang og klodset, er det en der kan kdoe den ned. Fx til en while, array eller noget i den stil?

<select name="address" size="1">
<option>Ikke angivet</option>
<?
if($_POST['address'] == "Nordjylland"){
echo '<option selected value="Nordjylland">Nordjylland</option>';
} else {
echo '<option value="Nordjylland">Nordjylland</option>';
}
if($_POST['address'] == "Vestjylland"){
echo '<option selected value="Vestjylland">Vestjylland</option>';
} else {
echo '<option value="Vestjylland">Vestjylland</option>';
}
if($_POST['address'] == "Midtjylland"){
echo '<option selected value="Midtjylland">Midtjylland</option>';
} else {
echo '<option value="Midtjylland">Midtjylland</option>';
}
if($_POST['address'] == "Østjylland"){
echo '<option selected value="Østjylland">Østjylland</option>';
} else {
echo '<option value="Østjylland">Østjylland</option>';
}
if($_POST['address'] == "Sønderjylland"){
echo '<option selected value="Sønderjylland">Sønderjylland</option>';
} else {
echo '<option value="Sønderjylland">Sønderjylland</option>';
}
if($_POST['address'] == "Fyn"){
echo '<option selected value="Fyn">Fyn</option>';
} else {
echo '<option value="Fyn">Fyn</option>';
}
if($_POST['address'] == "Nordsjælland"){
echo '<option selected value="Nordsjælland">Nordsjælland</option>';
} else {
echo '<option value="Nordsjælland">Nordsjælland</option>';
}
if($_POST['address'] == "Sydsjælland"){
echo '<option selected value="Sydsjælland">Sydsjælland</option>';
} else {
echo '<option value="Sydsjælland">Sydsjælland</option>';
}
if($_POST['address'] == "Østsjælland"){
echo '<option selected value="Østsjælland">Østsjælland</option>';
} else {
echo '<option value="Østsjælland">Østsjælland</option>';
}
if($_POST['address'] == "Vestsjælland"){
echo '<option selected value="Vestsjælland">Vestsjælland</option>';
} else {
echo '<option value="Vestsjælland">Vestsjælland</option>';
}
if($_POST['address'] == "Øer"){
echo '<option selected value="Øer">Øer</option>';
} else {
echo '<option value="Øer">Øer</option>';
}
?>
</select>


Uha. for det første ville jeg bruge en switch! Og derefter vil jeg ikke lave så mange echo'er. Jeg vil blot sætte en variabel ala
$print .= "tekst";
også printe det hele ud til sidst ved at sige print $print;

Slot\\\\ - All your base are belong to us
http://www.sigsys.dk



som svar til dit originale spørgsmål

Fold kodeboks ind/udKode 

-----------------------------------------------------------------------------

Min side ->www.the-hive.dk/~donp/

[Redigeret d. 05/05-05 12:28:11 af Nørden]



Fold kodeboks ind/udKode 


Virkede. Tak. Jeg har en mere, som jeg vil høre i du vil lave.

Det skal ikke helt være på samme måde. Det skal være noget med:
<?
for ($x=date("Y")-35; $x<=date("Y");$x++){
if($x == $_POST['birth_day']){
echo "<option selected value=\\"".$x."\\">".$x."</option>\\n";
} else {
echo "<option value=\\"".$x."\\">".$x."</option>\\n";
}
}
?>

^^ Så skal den bare udskrive 01,02 osv.. fra 1-9 skal der være 0 foran.

Koden:
<select name="birth_day" size="1">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>

<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>

<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>

<option value="30">30</option>
<option value="31">31</option>
</select>



Fold kodeboks ind/udKode 


--
Ronni Egeriis


Ronni Egeriis > Hvordan kan jeg så sætte det sammen med det selected?



Det var bare sådan her:

<?
for ($i=1; $i<=31; $i++){
$x = $i < 10 ? "0" . $i:$i;

if($x == $_POST['birth_day']){
echo "<option selected value=\\"".$x."\\">".$x."</option>\\n";
} else {
echo "<option value=\\"".$x."\\">".$x."</option>\\n";
}
}
?>

Tak til jer to, som jeg har brugt kode fra.



Jeg vil mene at en array er et godt bud:

Fold kodeboks ind/udKode 


Martin: Hvorfor ville du ikke lave de echo'er og lægge det i en variabel?? Det vil da kun gøre koden mere uoverskuelig og gøre den langsommere. Det får du intet ud af.


Det vil da netop gøre koden langsommere, hvis man laver mange echoer. Med min måde vil der kun optræde en print.

Slot\\\\ - All your base are belong to us
http://www.sigsys.dk



Men ok. Echo er en smule hurtigere end print da print laver et return. Det gør echo ikke. Om min kode med en switch er uoverskueligt, ved jeg ikke. Jeg har ikke gidet lave den. Mester må selv klare sig gennem det kodemæssige. Men jeg vil da gerne komme med et forslag hvordan man kunne gøre. Om det er det bedste, ved jeg ikke. Tror jeg ikke. Et array, som i bruger vil nok være bedre, men jeg vil sige at med en switch vil det kun blive nemmere end alle de if-sætninger.

Slot\\\\ - All your base are belong to us
http://www.sigsys.dk



t