Avatar billede cowboy Nybegynder
08. januar 2006 - 18:29 Der er 16 kommentarer og
1 løsning

Vandret loop af kalender

Hej med jer,

Har har forsøgt mig med PHP og har i den forbindelse lavet en slags kalender med alle ugererne og en status for hver uge.

I min database har 3 tre felt navne:

- kalenderID
- uge (her har jeg indtaste fra uge 1 til uge 52)
- ugestatus (her har jeg status. Enten "ledig" eller "optaget")

Lige nu har jeg lavet det sådan at jeg hiver daterne ud af databasen og viser det på en horizontal række. Sådan her:

1: ledigt
2: Ledigt
3: Ledigt
4: Optaget
5: Ledigt
o.s.v derud af.

********************************************
Sådan her ser min kode ud:

<table width="451" border="0" cellspacing="0" cellpadding="0" class="contentTabel">
<tr>
<td width="23"></td>
<td width="93"></td>
<td width="20"></td>
<td width="93"></td>
<td width="20"></td>
<td width="93"></td>
<td width="20"></td>
<td width="93"></td>
</tr>
<?
$uger = mysql_query("SELECT * FROM kalender ORDER BY uge ASC") or die (mysql_error());
while ($row = mysql_fetch_array($uger))
{
$hentStatus = $row["uge_status"];
if( $hentStatus == "Ledig"){
?>
<td align="right"><?  print $row["uge"] ?>:</td>
<td>&nbsp;&nbsp;<a href="kalender_bestil.php?uge=<?  print $row["uge"] ?>"><? print $row["uge_status"] ?></a></td>
<?
}else{
?>
<td align="right"><?  print $row["uge"] ?>:</td>
<td>&nbsp;<span style='color:#980505'><? print $row["uge_status"] ?></span></td>
<?
}
?>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="1" colspan="8" bgcolor="#FFFFFF"></td>
</tr>
<?
}
?>
<tr>
<td height="4" bgcolor="#DBDCD7" colspan="8"></td>
</tr>

</table>
*********************************************

Det som jeg skal have hjælp til er at få det vist på 4 koloner med 13 uger i hver.Sådan her:

1: ledigt    14: Ledigt    27: Ledigt  40: Ledigt
2: Ledigt    15: Ledigt    28: ledigt  41: Ledigt
3: Ledigt    o.s.v        o.s.v        o.s.v
4: Optaget
5: Ledigt
6: ledigt
7: Ledigt
8: Ledigt
9: Optaget
10: Ledigt
11: Ledigt
12: Ledigt
13: Ledigt


Jeg håber jeg har forklaret mig forståeligt :o)
Avatar billede webstuff Nybegynder
08. januar 2006 - 18:41 #1
Det er bare at lave dit while() udtræk så at efter 13 udtræk laver den en ny kolonne :)
Avatar billede nielle Nybegynder
08. januar 2006 - 18:49 #2
Et bud:

$uger = mysql_query("SELECT * FROM kalender ORDER BY uge ASC") or die (mysql_error());

$ugeStatus = array();
while ($row = mysql_fetch_array($uger))
{
    $hentStatus = $row["uge_status"];
    $ugeStatus[$row["uge"]] = $row["uge_status"];
}

echo "<table border='1'>";
for ($ugeNr=1; $ugeNr<=13; $ugeNe++)
{
    echo "<tr>";
    for ($offset=0; $offset<53; $offset+=13);
    {
        $ugeNr2 = $ugeNe + $offset;
        if (array_key_exists($ugeNr2, $ugeStatus)
        {
            echo "<td>" . $ugeNr2 . "<br>";
            if ($ugeStatus[$ugeNr2])
            {
                echo "<a href='kalender_bestil.php?uge=" . $ugeStatus[$ugeNr2] . "'>" . $ugeStatus[$ugeNr2] . "</a>";
            }
            else
            {
                echo $ugeStatus[$ugeNr2];
            }
            echo "</td>";
        }
        else
        {
            echo "<td>&nbsp;</td>";
        }
    }
    echo "</tr>";
}
echo "</table>";
?>
Avatar billede cowboy Nybegynder
08. januar 2006 - 18:59 #3
Til Nielle --> Jeg tror ikke dit eksempel fungere. Den står bare og loadder siden hele tiden
Avatar billede cowboy Nybegynder
08. januar 2006 - 19:03 #4
Til webstuff --> Så langt kan jeg godt se. Men kan du hjælpe med at løse det?
Avatar billede nielle Nybegynder
08. januar 2006 - 19:07 #5
Der var nogle s,å kode-fejl. Prøv dette:

$uger = mysql_query("SELECT * FROM kalender ORDER BY uge ASC") or die (mysql_error());

$ugeStatus = array();
while ($row = mysql_fetch_array($uger))
{
    $hentStatus = $row["uge_status"];
    $ugeStatus[$row["uge"]] = $row["uge_status"];
}

echo "<table border='1'>";
for ($ugeNr=1; $ugeNr<=13; $ugeNr++)
{
    echo "<tr>";
    for ($offset=0; $offset<53; $offset+=13);
    {
        $ugeNr2 = $ugeNr + $offset;
        if (array_key_exists($ugeNr2, $ugeStatus)
        {
            echo "<td>" . $ugeNr2 . "<br>";
            if ($ugeStatus[$ugeNr2])
            {
                echo "<a href='kalender_bestil.php?uge=" . $ugeStatus[$ugeNr2] . "'>" . $ugeStatus[$ugeNr2] . "</a>";
            }
            else
            {
                echo $ugeStatus[$ugeNr2];
            }
            echo "</td>";
        }
        else
        {
            echo "<td>&nbsp;</td>";
        }
    }
    echo "</tr>";
}
echo "</table>";
?>
Avatar billede cowboy Nybegynder
08. januar 2006 - 19:38 #6
Det hjalp lidt. Den viser nu en tabel med 13 rækker med en tom kollone i.
Avatar billede nielle Nybegynder
08. januar 2006 - 19:41 #7
Prøv lige at rette:

if (array_key_exists($ugeNr2, $ugeStatus)

- til:

if (array_key_exists($ugeNr2, $ugeStatus))
Avatar billede cowboy Nybegynder
08. januar 2006 - 20:38 #8
det havde jeg allerede gjort :o)
Avatar billede nielle Nybegynder
08. januar 2006 - 21:36 #9
Hvad giver denne her:

$uger = mysql_query("SELECT * FROM kalender ORDER BY uge ASC") or die (mysql_error());

$ugeStatus = array();
while ($row = mysql_fetch_array($uger))
{
    $hentStatus = $row["uge_status"];
    $ugeStatus[$row["uge"]] = $row["uge_status"];
}

echo "<table border='1'>";
for ($ugeNr=1; $ugeNr<=13; $ugeNr++)
{
    echo "<tr>";
    for ($offset=0; $offset<53; $offset+=13);
    {
        $ugeNr2 = $ugeNr + $offset;
        if (array_key_exists($ugeNr2, $ugeStatus))
        {
            echo "<td>" . $ugeNr2 . "<br>";
            if ($ugeStatus[$ugeNr2] == "Ledig")
            {
                echo "<a href='kalender_bestil.php?uge=" . $ugeStatus[$ugeNr2] . "'>" . $ugeStatus[$ugeNr2] . "</a>";
            }
            else
            {
                echo $ugeStatus[$ugeNr2];
            }
            echo "</td>";
        }
        else
        {
            echo "<td>&nbsp;</td>";
        }
    }
    echo "</tr>";
}
echo "</table>";
?>

- og har du et link hvor man kan se det?
Avatar billede cowboy Nybegynder
08. januar 2006 - 23:07 #10
Jeg har løst det. Jeg fik hjælp af en kollega. Men tak for at i gad kigge på problemet.
Avatar billede nielle Nybegynder
09. januar 2006 - 08:38 #11
Hvordan endte løsningen med at se ud?
Avatar billede cowboy Nybegynder
09. januar 2006 - 09:18 #12
<?
$sqlUger = mysql_query ("SELECT * FROM kalender ORDER BY uge ASC") or die (mysql_error());
$arrWeeks=array();
$i=1;
while ($objWeek = mysql_fetch_object($sqlUger))
{
    $arrWeeks[$i]=$objWeek->uge_status; //gemmer status i et array, med ugenr. som key
    $i++; //inkrementerer i
}
for($j=1;$j<14;$j++){//for rækkerne (13 styks)
?>
<tr>
<?
    for($k=0;$k<4;$k++){ //for kolonnerne (4 styks)
    $week=$j+(13*$k);  //udregner ugenummeret for det givne felt.
    ?>
       
        <td height="19" align="right"><? print $week ?>:</td>
        <?    
        if($arrWeeks[$week]=='Ledig'){
        ?>
        <td>&nbsp;<a href="kalender_bestil.php?uge=<? print $week ?>"><? print $arrWeeks[$week] ?></a></td>
        <?    
        }else{
        ?>
        <td>&nbsp;<span class="headline"><? print $arrWeeks[$week] ?></span></td>
        <?
        }
    }
?>
</tr>
<tr>
<td height="1" colspan="8" bgcolor="#FFFFFF"></td>
</tr>
<?
}
?>
Avatar billede nielle Nybegynder
09. januar 2006 - 09:55 #13
Det er faktisk præcis den løsning jeg gav dig ;^)
Avatar billede cowboy Nybegynder
09. januar 2006 - 14:24 #14
ok, det var jeg ikke klar over. Min kollega's virker dog, det gjorde din ikke. Jeg vil gerne give dig nogle points vis du mener du har nogen til gode?
Avatar billede nielle Nybegynder
09. januar 2006 - 14:27 #15
Nej, tak det var slet ikke det jeg ville, men ellers takl for tilbudet. :^)

Jeg ville bare fortælle at det essentielt var den samme algoritme. Det kan godt være at min ikke fungerede 100 %, men det kunne den sikkert godt komme til – nok bare en lille dum ting der er i vejen. I modsætning til dig og din kollega, så har jeg jo ikke selv haft mulighed for lige at afprøve og debugge den.
Avatar billede cowboy Nybegynder
09. januar 2006 - 14:34 #16
Nej det er selvfølgelig rigtig nok. Men du skal have tak fordi du gad bruge din tid på mit problem.
Avatar billede nielle Nybegynder
09. januar 2006 - 15:52 #17
No prob :^)
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