Avatar billede snigeren Nybegynder
08. oktober 2007 - 10:34 Der er 14 kommentarer og
1 løsning

10 ens if() sætninger samlet i en?

Jeg har følgende if() sætning:

$query4 = mysql_query("SELECT * FROM shop_enhed WHERE varenr=" . $row["varenr"] . "")or die(mysql_error());
while($row4 = mysql_fetch_array($query4))
{
  if($row4["enhed1"] !="")
  {
    echo '<options>' . $row4["enhed1"] . '</option>';
  }
}

mit problem er så at jeg har 10 forskellige enheder.  enhed1, enhed2, enhed3... enhed10 

hvordan får jeg dem samlet i den if() sætning så den løber alle ti med samme varenr igennem og HVIS der står noget skal det vises i dropdown menuen?..
Avatar billede jakobdo Ekspert
08. oktober 2007 - 10:43 #1
Måske sådan:

for($i = 1; $i <= 10; $i++)
{
    if(isset($row4['enhed' . $i]))
  {
    echo '<options>' . $row4['enhed' . $i] . '</option>';
  }
}
Avatar billede zurekk Nybegynder
08. oktober 2007 - 11:20 #2
Har du lige nu 10 $queries, 10 whiles og 10 if's?

Og hvordan ser databasen ud?

Er det ikke nemmere at tjekke i selve querien?

Altså WHERE enhed1 != ''
Avatar billede snigeren Nybegynder
08. oktober 2007 - 11:45 #3
nej det svinger om der er 1,2,3 op til 10 enheder...

Men det jakob skrev virker fint som sædvanlig =)

helt præcis hvordan forstår jeg denne sætning:  for($i = 1; $i <= 10; $i++)

først tildeler du værdien 1 til $i; dernæst $i bliver aldrig større end  eller = 10; til sidst $i stiger med $i hver gang dvs. 1+1=2+1=3 osv.

og når vi skriver:  $row4['enhed' . $i]  så putter den nummeret $i efter enhed og laver en if(isset) for hver gang $i eksisterer dvs. fra 1-10 

har jeg ikke forstået ret? den metode kan man altid bruge når der kommer et nr efter en noget her "enhed"  og hvis det er op til 30 felter skriver man bare <=30 istedet for <=10 ikke?

øhm smid bare et svar jakob =)
Avatar billede jakobdo Ekspert
08. oktober 2007 - 11:50 #4
Det er mere eller mindre rigtigt forstået! :o)
Og et svar.
Avatar billede snigeren Nybegynder
08. oktober 2007 - 11:53 #5
ehem mere eller mindre?! =)
Avatar billede jakobdo Ekspert
08. oktober 2007 - 11:57 #6
Det er rigtigt! :o)
Avatar billede zurekk Nybegynder
08. oktober 2007 - 12:12 #7
Jo det er rigtigt, du kan se det ligesom et while() loop.

$i = 0;

while( $i < 10 )
{
  echo $i;
  $i++;
}

Du angiver en startværdi "$i = 0;", og så angiver du while-værdien, altså så længe dét passer vil loopet køre og den tjekker hver gang loopet er blevet kørt, "$i < 10;", og til sidst "$i++", du angiver at hver gang loppet er blevet kørt én gang, smides én til startværdien :)

Ved ikke om det var ren gibberish, men det er sådan jeg forstår et for() loop :)
Avatar billede olebole Juniormester
08. oktober 2007 - 14:18 #8
<ole>

Sådan ser et alm. while-loop ud, hvis det laves som et for-loop:
    for (;$i<10;) {
        Udføres sålænge $i er mindre end 10
    }

- ja, de to er i meget tæt familie  :)

/mvh
</bole>
Avatar billede snigeren Nybegynder
08. oktober 2007 - 15:45 #9
men så har jeg sikkert lavet noget dobbelt halløj:

while($row4 = mysql_fetch_array($query4))
{
  for($i = 1; $i <= 10; $i++)
  {
    if(isset($row4['enhed' . $i]) && $row4['enhed' . $i] !="")
      {
        echo '<option>' . $row4['enhed' . $i] . '</option>';
      }
  }
}


Er det rigtigt nok eller er det dobbelt med både while og for i samme? Jeg skal jo have min fetch_array med jo =)
Avatar billede michael_stim Ekspert
08. oktober 2007 - 15:48 #10
Ja, for din while kører jo så længe der er noget i arrayen du fetcher.
Avatar billede snigeren Nybegynder
08. oktober 2007 - 16:01 #11
ja ok det mente jeg også nok =)  thx for clearing that up!
Avatar billede michael_stim Ekspert
08. oktober 2007 - 16:02 #12
$i=1;
while($row4 = mysql_fetch_array($query4))
{
    if(isset($row4['enhed' . $i]) && $row4['enhed' . $i] !="")
      {
        echo '<option>' . $row4['enhed' . $i] . '</option>';
      }
  $i++;
}
Avatar billede snigeren Nybegynder
08. oktober 2007 - 16:19 #13
ohh så begge måder er rigtige den sidste her fylder bare lidt mindre?
Avatar billede jakobdo Ekspert
08. oktober 2007 - 17:13 #14
Du skal bruge den her:

while($row4 = mysql_fetch_array($query4))
{
  for($i = 1; $i <= 10; $i++)
  {
    if(isset($row4['enhed' . $i]) && $row4['enhed' . $i] !="")
      {
        echo '<option>' . $row4['enhed' . $i] . '</option>';
      }
  }
}

Den michael_stim har vist, vil ikke virke.
Avatar billede snigeren Nybegynder
08. oktober 2007 - 17:52 #15
ohh ok,.. jamen så bliver jeg bare ved at bruge den =)
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