Gå til innhold

trenger hjelp med for loopen.


Anbefalte innlegg

Har en dropdownliste som får resultater fra denne php snutten:

<? for ($i = 01; $i <= 30; $i++) {?>

<option value= "<? echo $i; ?>"><? echo $i;?></option>

<? }?>

Hvordan gjør jeg slik at jeg kan utelate f.eks 5. prøvde denne:

<? for ($i = 01; $i <= 30%5; $i++) {?>

<option value= "<? echo $i; ?>"><? echo $i;?></option>

<? }?>

men det funka dårlig. Noen forslag hvordan den kan løses?

Lenke til kommentar
Videoannonse
Annonse
Hvis du skulle utelate hver femte, så kan du prøve med denne if-testen:

 

<? for ($i = 01; $i <= 30; $i++) {

    if ($i%5 != 0) ?>

          <option value= "<? echo $i; ?>"><? echo $i;?></option>

<? }?>

her oppnår du ikke mye med != 0, prøv uten og du vil se du får samme resultat

oppnår vel at hver gang i = 5, 10 osv (f.eks 5%5=0), så hopper den over utskriften siden if-testen ikke slår til..... Bør kanskje ha en {} etter if-testen, får da følgende utskrift i dropdown-boksen:

1

2

3

4

6

7

...

 

Men nå var det ikke så farlig siden det ikke var det han ville.

Endret av frg
Lenke til kommentar

litt mer nøyaktig hva som jeg vil skal skje:

Dropdownlisten skal brukes til å forandre når brukerens fødselsdato, nærmere bestemt måned.(kanskje litt porngløst men). Jeg har da to "<option>" verdier i scripte(: 1. den verdien som er satt kommer som default. 2. Etter defaultverdien kommer for loopen som ramser opp de andre tolv månedene. Da kommer jo en måned opp opp to ganger, en fra dabasen og en fra oppramsingen av de månedene(ligger i en array). Jeg vil at tallet bare skal komme opp en gang. Etter å ha tenkt litt har jeg kommet fram til et forslag:

while($row[]=$array(hvor alle månedene ligger lagret))

{

if ($month(hentet fra databasen)!=$row) {

echo $row;

}}

men det ser ikke ut til å funke, men er jeg på riktig spor?

Lenke til kommentar
Hvis du skulle utelate hver femte, så kan du prøve med denne if-testen:

 

<? for ($i = 01; $i <= 30; $i++) {

    if ($i%5 != 0) ?>

          <option value= "<? echo $i; ?>"><? echo $i;?></option>

<? }?>

her oppnår du ikke mye med != 0, prøv uten og du vil se du får samme resultat

oppnår vel at hver gang i = 5, 10 osv (f.eks 5%5=0), så hopper den over utskriften siden if-testen ikke slår til..... Bør kanskje ha en {} etter if-testen, får da følgende utskrift i dropdown-boksen:

1

2

3

4

6

7

...

 

Men nå var det ikke så farlig siden det ikke var det han ville.

poenget var at fjerner du != 0 får du samme resultat, siden 0 uansett gir boolean false, og resultatet av % alltid er en integer

 

if(tallet % 5) er mao mer enn nok

Lenke til kommentar
litt mer nøyaktig hva som jeg vil skal skje:

Dropdownlisten skal brukes til å forandre når brukerens fødselsdato, nærmere bestemt måned.(kanskje litt porngløst men). Jeg har da to "<option>" verdier i scripte(: 1. den verdien som er satt kommer som default. 2. Etter defaultverdien kommer for loopen som ramser opp de andre tolv månedene. Da kommer jo en måned opp opp to ganger, en fra dabasen og en fra oppramsingen av de månedene(ligger i en array). Jeg vil at tallet bare skal komme opp en gang. Etter å ha tenkt litt har jeg kommet fram til et forslag:

while($row[]=$array(hvor alle månedene ligger lagret))

{

if ($month(hentet fra databasen)!=$row) {

echo $row;

}}

men det ser ikke ut til å funke, men er jeg på riktig spor?

Hmmm...

 

Hvis jeg skjønner deg riktig, vil du at måneden som står i databasen skal vises i option feltet som default. Kan du ikke bare gjøre en test på om måneden som er i while løkken er den samme som er i databasen, og hvis den er det, setter du det option-elementet til default, eller selected.

Eksempel: Si at alle månedene ligger lagret i arrayet $maneder, og måneden fra databasen ligger i variabelen $db_maned.

for($i=0;$i<count($maneder);$i++) {
if ($maneder[$i] != $db_maned) {
echo "<option value='$maneder[$i]'>$maneder[$i]</option>";
}
else {
echo "<option value='$maneder[$i]' selected='selected'>$maneder[$i]</option>";
}

EDIT:

evt:

for($i=0;$i<count($maneder);$i++) {
$selected = ($maneder[$i] != $db_maned)?"";" selected='selected'";
echo "<option value='$maneder[$i]".$selected.">$maneder[$i]</option>";
}

som gjør akkurat det samme; Setter selected = "" Dersom det er ulik måned og $selected = " selected='selected'" dersom det er lik måned

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...