Avatar billede htx98i17 Professor
06. maj 2010 - 16:54 Der er 5 kommentarer og
1 løsning

spring over lør/søn i loop

I nedenstående kode, vil jeg gerne have løkken til at springe over lørdag og søndag.

Kan man definere det i selve løkken?

udsnit:
<?php
               
                for($i = time()-432000; $i<=time(); $i+=86400) { ?>
                   
                    <option value="<?php echo($i); ?>" <?php if(date("z",$man_dag) == date("z",$i)) echo"selected=\"selected\""; ?>><?php echo$arr_ugedage[date("w",$i)]; ?> <? echo(date("d.m.Y",$i)); ?></option>
                   
            <?php } ?>


Hele sidekoden:

<?php
   
    header("Content-Type: text/html; charset=utf-8");
   
    mysql_connect("localhost","user","pass") or die(mysql_error());
    mysql_select_db("arbejde") or die(mysql_error());
       
    $man_dag = ($_GET['man_dag']) ? $_GET['man_dag'] : time();
   
    $sql = "SELECT fag FROM tblskoletimer WHERE ugedag = ".date("w",$man_dag)." ORDER BY id ASC";
    $hentugeskema = mysql_query($sql) or die(mysql_error());
   
    $arr_ugedage[1] = 'Mandag';
    $arr_ugedage[2] = 'Tirsdag';
    $arr_ugedage[3] = 'Onsdag';
    $arr_ugedage[4] = 'Torsdag';
    $arr_ugedage[5] = 'Fredag';
    $arr_ugedage[6] = 'Lørdag';
    $arr_ugedage[0] = 'Søndag';
   
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
    <head>
        <title>Dagbog</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
   
        <style type="text/css" >
           
            body {
                background-color:    #e8e8e8;
                font-family        :    verdana;
                font-size        :    10pt;
                color            :    #000000;
                margin            :    30px;
            }
           
            textarea {
                background-color:    #Fcfcfc;
                font-family        :    verdana;
                font-size        :    8pt;
                color            :    #000000;
                margin            :    5px;
                padding            :    10px;
            }
           
        </style>
    </head>

<body >
   
    <h2>Opret notat</h2>
    <form method="get" action="index.php" >
        <select name="man_dag" >
            <?php
               
                for($i = time()-432000; $i<=time(); $i+=86400) { ?>
                   
                    <option value="<?php echo($i); ?>" <?php if(date("z",$man_dag) == date("z",$i)) echo"selected=\"selected\""; ?>><?php echo$arr_ugedage[date("w",$i)]; ?> <? echo(date("d.m.Y",$i)); ?></option>
                   
            <?php } ?>
               
        </select>
       
        <input type="submit" value="Vælg denne dag" >
    </form>
    <br>
   
    <h3><?php echo$arr_ugedage[date("w",$man_dag)]; ?> <?php echo(date("d.m.Y",$man_dag)); ?></h3>
   
    <form method="post" action="actions/notat.php" >
    <?php
       
        while($dagenstimer = mysql_fetch_array($hentugeskema)) { ?>
            <p>
                <?php echo(($dagenstimer['fag'])); ?><br>
                <textarea cols="80" rows="10" name="notat[]" ></textarea>
            </p>
        <input type="hidden" name="emne[]" value="<?php echo$dagenstimer['fag']; ?>" >
    <? } ?>

        <input type="submit" value=" Gem notat " >&nbsp;&nbsp;&nbsp;
        <input type="reset" value=" Reset " >
        <input type="hidden" name="dato" value="<?php echo(date("Y.m.d",$man_dag)); ?>" >
       
    </form>
   
</body>
</html>
Avatar billede Slettet bruger
06. maj 2010 - 17:33 #1
Ja : )

Men pas på med dén løkke: Du kalder funktionen time() igen og igen.
Hvis din kode skulle køre lige omkring midnat, kunne du få problemer.

Alternativ:

$nu = time();

for($i = $nu-432000; $i <= $nu; $i += 86400)
  if (date("w",$i) != 0 && date("w",$i) != 6))
      {
      echo "<option value='$i'";
      if (date("z",$man_dag) == date("z",$i))
        echo "selected='selected'";
      echo ">".$arr_ugedage[date("w",$i)]." ".date("d.m.Y",$i)."</option>";
      }

- Skal nok liige testes, ikk : )
Avatar billede htx98i17 Professor
06. maj 2010 - 17:40 #2
Tak for svar

Jeg tænkte at der måske i selve løkken omkring $i<= $nu kunne laves noget ala det du har lavet i en if-statement.

Valgmulighederne skulle stadig gerne være 5 dage tilbage i tiden.
Avatar billede Slettet bruger
06. maj 2010 - 17:50 #3
Så bliver du nødt til, først at steppe baglæns og checke hver forudgående dag.
- i stedet for den "lette" løsning du bruger nu: -432000

for($i = $fra_dato; $i <= $nu; $i += 86400)

Hvordan, bliver en hjemmeopgave - du har det der skal til : )
Avatar billede htx98i17 Professor
06. maj 2010 - 17:57 #4
Den kan jeg sagtens løse :)) men lig bare et svar
Avatar billede Slettet bruger
06. maj 2010 - 18:08 #5
Værsenartig
Avatar billede showsource Seniormester
06. maj 2010 - 21:10 #6
Ved at spm. er lukket, men du kan bruge:

$nextmonday = strtotime("next Monday");
$firstmonday = ($nextmonday-604800);

så har du fra mandag i denne, og kan evt. vise fra næste uge
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