Avatar billede BTEngineer Novice
10. marts 2008 - 14:07 Der er 38 kommentarer og
1 løsning

Dage i kalender

Hej.

Jeg skal lave en events kalender ala.:
http://www.skivesnatteliv.dk/kalender/uge/09/uge09.html

Hvordan laver jeg sådan man kan skifte uge øverst og hvordan får jeg events til f.eks. "mandag" til at stå under mandag osv?

Tak på forhånd.
Avatar billede fant0mas Nybegynder
10. marts 2008 - 14:38 #1
Siden den ikke er lagt under opgaver, må du selv have gjort dig nogle tanker? Men helt ærligt, så lyder det mest som om du har fejl placeret dit spørgsmål.

Men en god ide ville være at tage en kigger på date();
Avatar billede BTEngineer Novice
10. marts 2008 - 14:44 #2
Det er jo PHP det skal programmeres i, så derfor er den under denne kategori.
Jeg er ikke ligefrem nogen PHP ørn - Skal bruge koder til at lave således at de events, der hører under en dato, som ligger på en mandag kommer ind under "mandag".
Og så skal man jo kunne skifte uge (frem og tilbage) for at kunne se om der kommer noget ugen efter.

Har ingen anelse om hvordan jeg skal gøre dette?
Avatar billede fant0mas Nybegynder
10. marts 2008 - 15:02 #3
http://www.udvikleren.dk/PHP/Article.aspx/225/

Der er en artikel omkring tid, dato osv.
Avatar billede jakobdo Ekspert
10. marts 2008 - 15:35 #4
Jeg har altid været stor tilhænger af denne kalender: http://keithdevens.com/software/php_calendar
Så den ville jeg starte og bruge som udgangspunkt.
Avatar billede BTEngineer Novice
10. marts 2008 - 15:40 #5
Det virker uoverskueligt.
Skal der virkelig så meget kode til for at dele ens data op i uger?
Avatar billede jakobdo Ekspert
10. marts 2008 - 15:59 #6
Nej, det skal der selvfølgelig ikke.
Gemmer du events i en database ?
Avatar billede BTEngineer Novice
10. marts 2008 - 16:08 #7
Ja, det gør jeg :)
Databasen hedder 'events'
Avatar billede fant0mas Nybegynder
10. marts 2008 - 16:17 #8
Jeg har præcis det du ønsker til at ligge, men jeg synes det er at gøre dig en bjørne tjeneste -hvis du nu gerne vil lære det, men det har jeg lidt svært ved at lure.

Det er op til dig:
http://explosif.dk/crap/Cal.rar
Avatar billede BTEngineer Novice
10. marts 2008 - 16:57 #9
Selvfølgelig er jeg interesseret i at lære det :)

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /events/calendar.php on line 13

exception 'Exception' in /events/calendar.php:13 Stack trace: #0 /home/onlineblog/public_html/test/events/index.php(49): getDays('2008-03-10', '2008-03-16') #1 {main}

Denne fejl får jeg.

I min database har jeg "startdate" og "enddate".

Datoerne der kunne f.eks. være: "2008-01-27" og "2008-03-31".

I det script du sendte ville den gerne have "date" :
--------------------------------------------------------------------------------
$sql =    'SELECT * FROM events '.' WHERE date >= '.$startDate.' AND '.$endDate.' <= date';
       
$result = mysql_query($sql, $mysqli) OR die(new Exception(mysql_error()));
--------------------------------------------------------------------------------

Forstår det ikke.
Avatar billede fant0mas Nybegynder
10. marts 2008 - 17:25 #10
de skal hedde date og text

CREATE TABLE `events` (
  `date` date NOT NULL,
  `text` text character set utf8 collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`date`)
)
Avatar billede BTEngineer Novice
10. marts 2008 - 17:28 #11
jamen hvad skal der stå i date?
datoen på dagen hvor man tilføjer eventet eller ?
Avatar billede fant0mas Nybegynder
10. marts 2008 - 17:42 #12
Præcis.
Avatar billede BTEngineer Novice
10. marts 2008 - 17:45 #13
okay. hvad så med text?
Avatar billede fant0mas Nybegynder
10. marts 2008 - 17:50 #14
Haha, jamen der skal selvfølgelig stå dit event info.
Der kan stå hvad som helst.

Men en god ide ville nok være at tilføje i dag, da den jo som standart viser denne uge.

Altså:
Date: 2008-03-10
Text: PONY
Avatar billede BTEngineer Novice
12. marts 2008 - 19:57 #15
http://www.intetliv.dk/test/view.html

Får stadig denne fejl.
Avatar billede fant0mas Nybegynder
12. marts 2008 - 20:27 #16
Bruger du:
$mysqli = mysql_connect('host', 'bruger', 'kode');
mysql_select_db('database', $mysqli);

Den der til at forbinde til din database?

Ellers understøtter dit webhotel sikker ikke mysqli
Avatar billede fant0mas Nybegynder
12. marts 2008 - 20:29 #17
$sql =    'SELECT * FROM events'.' WHERE date >= '.$startDate.' AND '.$endDate.' <= date';
$result = mysql_query($sql) or die(mysql_error());

Omskriv til der der så.
Avatar billede BTEngineer Novice
12. marts 2008 - 20:59 #18
Det virkede :)
Nu ser det således ud:
www.intetliv.dk/test/view.html

Hvordan skal jeg så lave det sådan, at det ligner:
http://www.skivesnatteliv.dk/kalender/uge/11/uge11.html

Altså sådan der står
Fredag 12-03-2008
    - Lars lilholt koncert
    - Andet link..
    - tredje link..

Lørdag
    - hej..
    - osv

Har rodet meget rundt med det.
Mit script ser således ud:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Events</title>
<link rel="stylesheet" type="text/css" href="../stylesheet/default.css">

</head>

<body>

<?
    include("../inc/cfg.php");

    include 'calendar.php';

    function printDatebox($date, $text){
        ?>
        <table cellspacing="0" cellpadding="0">
            <tr>
                <td><?=$date?></td><td><?=$text?>
            </tr>
        </table>
<?
}
?>

<table border="0" width="100%" cellspacing="1" height="100%">
    <tr>
        <td width="219" valign="top">
<?

    $currentTime = mktime(0, 0, 0, $month, $day, $year);
    $weekinfo = array();
    getWeekinfo($currentTime, $weekinfo);
   
    $prevWeekinfo = array();
    getWeekinfo($weekinfo['startTime']-(24*60*60), $prevWeekinfo);
   
    $nextWeekinfo = array();
    getWeekinfo($weekinfo['endTime']+(24*60*60), $nextWeekinfo);
   
    $monthNames = array('01' => 'Jan', '02' => 'Feb', '03' => 'Mar', '04' => 'Apr', '05' => 'Maj', '06' => 'Jun', '07' => 'Jul', '08' => 'Aug', '09' => 'Sep', '10' => 'Okt', '11' => 'Nov', '12' => 'Dec');
?>

<a href="./?date=<?=$prevWeekinfo['startDate']?>" >&lt;&lt;</a> Uge <?=$weekinfo['week']?>. <?=$weekinfo['startDay']?> <?=$monthNames[$weekinfo['startMonth']]?> - <?=$weekinfo['endDay']?> <?=$monthNames[$weekinfo['endMonth']]?> <a href="./?date=<?=$nextWeekinfo['startDate']?>" >&gt;&gt;</a>

<?
$days = getDays($weekinfo['startDate'], $weekinfo['endDate']);

for ($i = 0; $i < 7; $i++){

    $curTime = $weekinfo['startTime'] + ($i * 24 * 60 * 60);
    $curDate = date('Y-m-d', $curTime);
    $curDay  = date('d', $curTime);
    $text = $dayNames[date('N', $curTime)-1].': ';
   
    if (isset($days[$curDate])){
        printDatebox($curDay, $text.$days[$curDate]['text']);
    } else {
        printDatebox($curDay, $text.'Ingen information tilføjet.');
    }
}
?>
    </td>
        <td width="610" valign="top">
        <?
        if($_GET[mode] == "show") {
       
        $qq = mysql_query("SELECT * FROM events WHERE id='$_GET[id]'") or die(mysql_error());
        $v = mysql_fetch_array($qq);
        ?>
        <table border="1" width="100%">
        <tr>
            <td>&nbsp;</td>
        </tr>
        </table>
        <?
        }
        ?>
        </td>
    </tr>
</table>

</body>

</html>
Avatar billede jakobdo Ekspert
12. marts 2008 - 21:53 #19
Det skal du lave med noget mod_rewrite, hvis altså du har adgang til det.
Avatar billede BTEngineer Novice
12. marts 2008 - 22:15 #20
Det forstår jeg ikke ?
Avatar billede fant0mas Nybegynder
13. marts 2008 - 08:14 #22
Det jakobdo skriver er om at ændre i url'et brugeren ser, også kaldet falske biblioteker.

Men du skal vel have oprettet nogle events at linke til i din kalender, det kan gøres på flere måder, men husk du skal update på dine kalender datoer som det er der.
Held og lykke med det. :D
Avatar billede fant0mas Nybegynder
15. marts 2008 - 17:16 #23
Lukketid?
Avatar billede BTEngineer Novice
24. marts 2008 - 10:30 #24
Ved ikke hvordan jeg skal kode det ind i det?
Det skulle gerne ligne:
http://www.skivesnatteliv.dk/kalender/uge/09/uge09.html

men det ser sådan her ud:
http://www.intetliv.dk/test/view.html
Avatar billede jakobdo Ekspert
24. marts 2008 - 12:37 #25
Du skal kigge og lære mod_rewrite, ellers kommer det ikke til at se sådan ud.
Avatar billede BTEngineer Novice
24. marts 2008 - 12:50 #26
Jamen, hvis du f.eks. fikser det - Så kigger jeg jo det igennem og prøver at forstå det, og er der så noget jeg ikke forstår, spørger jeg.

Det vil tage mig ufattelig lang tid at lave det selv, så skal jeg til at finde tiden til det.

Vil meget gerne snart være færdigt med det.

Tak på forhånd!
Avatar billede jakobdo Ekspert
24. marts 2008 - 13:18 #27
Test denne side:

http://www.codebreaker.dk/exp/823071/uge/1
http://www.codebreaker.dk/exp/823071/uge/10
http://www.codebreaker.dk/exp/823071/uge/40
http://www.codebreaker.dk/exp/823071/uge/52

osv...

Her er koden:

<?php
//http://www.eksperten.dk/spm/823071

$uge = (isset($_GET['uge']) && is_numeric($_GET['uge']) && $_GET['uge'] > 0) ? intval($_GET['uge']) : 1;
echo 'F&oslash;lgende uge er valgt: ' . $uge;

?>

og .htaccess filen skal lægges i samme mappe:
RewriteEngine on

RewriteRule ^uge/([0-9]{1,2})/?$                                                      index.php?uge=$1
Avatar billede BTEngineer Novice
24. marts 2008 - 13:42 #28
Har jeg forklaret mig dårligt?
Jeg vil gerne have de events jeg har oprettet, ind under den korrekte dato.

f.eks. når man får til uge 15

mandag - fest i hald
tirsdag - lækker koncert
onsdag - osv.

De 'fest i hald' skal fremgå som links.
Avatar billede BTEngineer Novice
24. marts 2008 - 13:43 #29
lige nu ser det jo sådan her ud:
http://www.intetliv.dk/test/view.html
Avatar billede jakobdo Ekspert
24. marts 2008 - 14:04 #30
men når du gerne vil have det som links, så er det jo bare at lave <a href="NOGET">tekst</a>

Og ellers er det bare mig som intet forstår.
Avatar billede BTEngineer Novice
24. marts 2008 - 14:30 #31
Ja, men jeg vil gerne have det lavet sådan det ligner det eksempel jeg viste, ude i menuen.

Jeg ved ikke hvordan jeg skal redigere det, så det ser ud som jeg gerne vil have det.
Det er vel:
    function printDatebox($date, $text){
        ?>
        <table cellspacing="0" cellpadding="0">
            <tr>
                <td><?=$date?></td><td><?=$text?>
            </tr>
        </table>
<?
}
?>

og:

    if (isset($days[$curDate])){
        printDatebox($curDay, $text.$days[$curDate]['text']);
    } else {
        printDatebox($curDay, $text.'Ingen information tilføjet.');
    }
}

Men ved ikke om man kan lave det på en lidt mere overskuelig måde?
Avatar billede jakobdo Ekspert
24. marts 2008 - 14:35 #32
Det kan man godt, men det er ren HTML.
Avatar billede BTEngineer Novice
24. marts 2008 - 14:43 #33
Ja, men stadigvæk skal det php smækkes sammen med html'en.
altså.. hvordan?
Avatar billede jakobdo Ekspert
24. marts 2008 - 14:57 #34
Du har jo HTML-delen her:

<table cellspacing="0" cellpadding="0">
            <tr>
                <td><?=$date?></td><td><?=$text?>
            </tr>
        </table>

Du kunne jo overveje at smide <a href="LINK.HTML">tekst</a> over i variablen: $text
Avatar billede BTEngineer Novice
24. marts 2008 - 15:30 #35
det her var hvad jeg kunne finde på:

<?
$qq = mysql_query("SELECT * FROM events ORDER BY id DESC");
while($ja = mysql_fetch_array($qq)) {

    function printDatebox($date, $text){
        ?>
        <table cellspacing="0" cellpadding="0" width="100%">
            <tr>
                <td><?=$date?></td>
                <td><?=$text?><br><? echo "<a href='show.php?id=$ja[id]'>Se event</a>"; ?></td>
            </tr>
        </table>
<?
}
}
?>

Men det virker ikke. :-(
Avatar billede jakobdo Ekspert
24. marts 2008 - 15:42 #36
Du kalder funktionerne her:

printDatebox($curDay, $text.$days[$curDate]['text']);
    } else {
        printDatebox($curDay, $text.'Ingen information tilføjet.');

ret til:

printDatebox($curDay, '<a href="myevent.php?id='.$days[$curDate]['id'].'">'.$text.$days[$curDate]['text'].'</a>');
    } else {
        printDatebox($curDay, $text.'Ingen information tilføjet.');
Avatar billede BTEngineer Novice
27. marts 2008 - 16:05 #37
Det virker.
Hvordan får jeg det opstillet, så det ikke er nær så rodet?
Har prøvet en del, men kan ikke rigtig få det til at fungerer.
Avatar billede BTEngineer Novice
27. marts 2008 - 16:25 #38
Har prøvet således:
    if (isset($days[$curDate])){
    ?>
        print<table border="0" width="100%" height="100%">
        <tr>
            <td valign="top"><? echo $curDay; ?>. <? echo ('<a href="index.php?mode=show&id='.$days[$curDate]['id'].'">'.$text.$days[$curDate]['text'].'</a>'); ?></td>
        </tr>
        </table>
    <?
    } else {
    ?>
        <table border="0" width="100%" height="100%">
        <tr>
            <td valign="top"><? echo $curDay; ?>.</td>
        </tr>
        </table>
    <?
}

men så ser det sådan her ud: ( den viser kun mandag ):
http://www.intetliv.dk/test/view.html
Avatar billede fant0mas Nybegynder
27. marts 2008 - 18:14 #39
Hold dig nu til jakobdos sidste kommentar. Og hvis du så skal rette i udseende, så gør det i printDatebox funktionen. Det er fint du har et mål for øje, men når du ikke forstår metoderne så er der ikke meget ved det. Spørg hellere til det du ikke forstår, og glem indtil videre at udbygge det.
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