Avatar billede raan Nybegynder
06. marts 2008 - 22:11 Der er 21 kommentarer og
1 løsning

arbejde med en database

hej
jeg har et lille problem, jeg står og skal aflevere en kalender i morgen til et KOM/IT projekt i morgen, så det ville virkelig være perfekt hvis der var en som ville hjælpe mig lidt.

Jeg har denne kalender, men kan ikke se hvordan jeg skal få den til at arbejde sammen med databasen? - HJÆLP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Calendar</title>
<style type="text/css" media="all">

    body {
   
        background-color: #2A2A2A;
        color: #EEEEEE;
        font-family: Tahoma, Verdana, sans-serif;
        font-size: 10px;
   
    }
   
    table {
   
        width: 125px;
   
    }
   
    td {
   
        padding: 1px;
        border: 1px solid #666666;
        text-align: center;
   
    }

</style>
</head>
<body>
<?php

    $thismonth = ( int ) date( "m" );
    $thisyear = date( "Y" );
   
    $numdaysinmonth = cal_days_in_month( CAL_GREGORIAN, $thismonth, $thisyear );
   
    $jd = cal_to_jd( CAL_GREGORIAN, date( "m" ),date( 1 ), date( "Y" ) );
   
    $startday = jddayofweek( $jd , 0 );
   
    $monthname = jdmonthname( $jd, 1 )

?>
<table>
    <tr>
        <td colspan="7"><div align="center"><strong><?= $monthname ?></strong></div></td>
    </tr>
    <tr>
        <td><strong>Søn</strong></td>
        <td><strong>Man</strong></td>
        <td><strong>Tir</strong></td>
        <td><strong>ons</strong></td>
        <td><strong>Tor</strong></td>
        <td><strong>Fre</strong></td>
        <td><strong>Lør</strong></td>
    </tr>
    <tr>
<?php


    $emptycells = 0;

    for( $counter = 0; $counter <  $startday; $counter ++ ) {
   
        echo "\t\t<td>-</td>\n";
        $emptycells ++;
   
    }
   
   
    $rowcounter = $emptycells;
    $numinrow = 7;
   
    for( $counter = 1; $counter <= $numdaysinmonth; $counter ++ ) {
   
        $rowcounter ++;
       
        echo "\t\t<td>$counter</td>\n";
       
        if( $rowcounter % $numinrow == 0 ) {
       
            echo "\t</tr>\n";
           
            if( $counter < $numdaysinmonth ) {
           
                echo "\t<tr>\n";
           
            }
       
            $rowcounter = 0;
       
        }
   
    }
   
    $numcellsleft = $numinrow - $rowcounter;
   
    if( $numcellsleft != $numinrow ) {
   
        for( $counter = 0; $counter < $numcellsleft; $counter ++ ) {
       
            echo "\t\t<td>-</td>\n";
            $emptycells ++;
       
        }
   
    }

?>
    </tr>
</table>
</body>
</html>
Avatar billede nwn Nybegynder
06. marts 2008 - 22:32 #1
Hvordan arbejde sammen med databasen?

Tilsluttelse til databasen:

mysql_connect('HOST', 'BRUGERNAVN', 'KODEORD');
mysql_select_db("DATABASE");

Hente fra databasen:

$hent = mysql_query("SELECT * FROM mysql-tabel-navn");

while($vis = mysql_fetch_array($hent)){

echo $vis[felt-i-database];

}
Avatar billede raan Nybegynder
06. marts 2008 - 22:39 #2
Ja, det ved jeg godt.

men jeg tænkte nu mere på hvordan mere på hvordan man kan få den til at vise emner, altså så du kan tilføje et emne til en dato, også læse mere om det.
Avatar billede fant0mas Nybegynder
06. marts 2008 - 23:54 #3
Jamen du har jo datoen i:
echo "\t\t<td>$counter</td>\n";
Så er det da bare at hive rækker ud fra databasen som matcher
$dato = $counter.$thismonth.$thisyear;
Smartest ville være at smide rækkerne i et array med datoen som nøgle, så er det nemt at hente og kræver ikke en masse querys.
Noget i denne stil:
$query = mysql_query("SELECT * FROM kalender WHERE date = '$dato'") or die(mysql_error());
$arr = array();
while ($result = mysql_fetch_assoc($query)) {
    $arr[$result['date']] = $result;
}
Avatar billede raan Nybegynder
07. marts 2008 - 00:18 #4
har prøvet mig lidt frem, men kan ikke få det til at funge :s
- gider du prøve at sætte det ind i koden?
Avatar billede fant0mas Nybegynder
07. marts 2008 - 01:06 #5
Haha - den går nok alligevel ikke.
Men brug datatypen DATE, så kan du formatere din dato så den er til at matche sådan:
$dato = sprintf("%04d%-02d-%02d",$thisyear,$thismonth,$counter);

Nå, skidt:
if(empty($arr[$dato])){
echo "\t\t<td>$counter</td>\n";
}else{
//hvis ja, så laver vi link:
echo "\t\t<td><a href=\"?date=$date\">$counter</a></td>\n";
}
Avatar billede fant0mas Nybegynder
07. marts 2008 - 01:09 #6
Hov:
$dato = sprintf("%04d-%02d-%02d",$thisyear,$thismonth,$counter);
Avatar billede raan Nybegynder
07. marts 2008 - 01:11 #7
således?
->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Calendar</title>
<style type="text/css" media="all">

    body {
   
        background-color: #2A2A2A;
        color: #EEEEEE;
        font-family: Tahoma, Verdana, sans-serif;
        font-size: 10px;
   
    }
   
    table {
   
        width: 125px;
   
    }
   
    td {
   
        padding: 1px;
        border: 1px solid #666666;
        text-align: center;
   
    }

</style>
</head>
<body>
<?php

$query = mysql_query("SELECT * FROM kalender WHERE date = '$dato'") or die(mysql_error());
$arr = array();
while ($result = mysql_fetch_assoc($query)) {
    $arr[$result['date']] = $result;
}

$dato = sprintf("%04d%-02d-%02d",$thisyear,$thismonth,$counter);

    $thismonth = ( int ) date( "m" );
    $thisyear = date( "Y" );
   
    $numdaysinmonth = cal_days_in_month( CAL_GREGORIAN, $thismonth, $thisyear );
   
    $jd = cal_to_jd( CAL_GREGORIAN, date( "m" ),date( 1 ), date( "Y" ) );
   
    $startday = jddayofweek( $jd , 0 );
   
    $monthname = jdmonthname( $jd, 1 )

?>
<table>
    <tr>
        <td colspan="7"><div align="center"><strong><?= $monthname ?></strong></div></td>
    </tr>
    <tr>
        <td><strong>Søn</strong></td>
        <td><strong>Man</strong></td>
        <td><strong>Tir</strong></td>
        <td><strong>ons</strong></td>
        <td><strong>Tor</strong></td>
        <td><strong>Fre</strong></td>
        <td><strong>Lør</strong></td>
    </tr>
    <tr>
<?php


    $emptycells = 0;

    for( $counter = 0; $counter <  $startday; $counter ++ ) {
   
        echo "\t\t<td>-</td>\n";
        $emptycells ++;
   
    }
   
   
    $rowcounter = $emptycells;
    $numinrow = 7;
   
    for( $counter = 1; $counter <= $numdaysinmonth; $counter ++ ) {
   
        $rowcounter ++;
       
        eif(empty($arr[$dato])){
    echo "\t\t<td>$counter</td>\n";
    }else{
                                        //hvis ja, så laver vi link:
    echo "\t\t<td><a href=\"?date=$date\">$counter</a></td>\n";
    }
       
        if( $rowcounter % $numinrow == 0 ) {
       
            echo "\t</tr>\n";
           
            if( $counter < $numdaysinmonth ) {
           
                echo "\t<tr>\n";
           
            }
       
            $rowcounter = 0;
       
        }
   
    }
   
    $numcellsleft = $numinrow - $rowcounter;
   
    if( $numcellsleft != $numinrow ) {
   
        for( $counter = 0; $counter < $numcellsleft; $counter ++ ) {
       
            echo "\t\t<td>-</td>\n";
            $emptycells ++;
       
        }
   
    }

?>
    </tr>
</table>
</body>
</html>
Avatar billede fant0mas Nybegynder
07. marts 2008 - 01:28 #8
Ja
Men din query skal se sådan ud:
$query = mysql_query("SELECT * FROM kalender") or die(mysql_error());
Avatar billede fant0mas Nybegynder
07. marts 2008 - 01:30 #9
og
$dato = sprintf("%04d%-02d-%02d",$thisyear,$thismonth,$counter);
skal stå sammen med:
if(empty($arr[$dato])){
    echo "\t\t<td>$counter</td>\n";
    }else{
                                        //hvis ja, så laver vi link:
    echo "\t\t<td><a href=\"?date=$date\">$counter</a></td>\n";
    }
Avatar billede fant0mas Nybegynder
07. marts 2008 - 01:32 #10
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Calendar</title>
<style type="text/css" media="all">

    body {
 
        background-color: #2A2A2A;
        color: #EEEEEE;
        font-family: Tahoma, Verdana, sans-serif;
        font-size: 10px;
 
    }
 
    table {
 
        width: 125px;
 
    }
 
    td {
 
        padding: 1px;
        border: 1px solid #666666;
        text-align: center;
 
    }

</style>
</head>
<body>
<?php

$query = mysql_query("SELECT * FROM kalender WHERE date = '$dato'") or die(mysql_error());
$arr = array();
while ($result = mysql_fetch_assoc($query)) {
    $arr[$result['date']] = $result;
}

    $thismonth = ( int ) date( "m" );
    $thisyear = date( "Y" );
 
    $numdaysinmonth = cal_days_in_month( CAL_GREGORIAN, $thismonth, $thisyear );
 
    $jd = cal_to_jd( CAL_GREGORIAN, date( "m" ),date( 1 ), date( "Y" ) );
 
    $startday = jddayofweek( $jd , 0 );
 
    $monthname = jdmonthname( $jd, 1 )

?>
<table>
    <tr>
        <td colspan="7"><div align="center"><strong><?= $monthname ?></strong></div></td>
    </tr>
    <tr>
        <td><strong>Søn</strong></td>
        <td><strong>Man</strong></td>
        <td><strong>Tir</strong></td>
        <td><strong>ons</strong></td>
        <td><strong>Tor</strong></td>
        <td><strong>Fre</strong></td>
        <td><strong>Lør</strong></td>
    </tr>
    <tr>
<?php


    $emptycells = 0;

    for( $counter = 0; $counter <  $startday; $counter ++ ) {
 
        echo "\t\t<td>-</td>\n";
        $emptycells ++;
 
    }
 
 
    $rowcounter = $emptycells;
    $numinrow = 7;
 
    for( $counter = 1; $counter <= $numdaysinmonth; $counter ++ ) {
 
    $rowcounter ++;
   
    $dato = sprintf("%04d%-02d-%02d",$thisyear,$thismonth,$counter); 
    if(empty($arr[$dato])){
    echo "\t\t<td>$counter</td>\n";
    }else{
    //hvis ja, så laver vi link:
    echo "\t\t<td><a href=\"?date=$date\">$counter</a></td>\n";
    }
     
        if( $rowcounter % $numinrow == 0 ) {
     
            echo "\t</tr>\n";
         
            if( $counter < $numdaysinmonth ) {
         
                echo "\t<tr>\n";
         
            }
     
            $rowcounter = 0;
     
        }
 
    }
 
    $numcellsleft = $numinrow - $rowcounter;
 
    if( $numcellsleft != $numinrow ) {
 
        for( $counter = 0; $counter < $numcellsleft; $counter ++ ) {
     
            echo "\t\t<td>-</td>\n";
            $emptycells ++;
     
        }
 
    }

?>
    </tr>
</table>
</body>
</html>
Avatar billede raan Nybegynder
07. marts 2008 - 01:36 #11
det kan jeg ikke få til at virke, og den viser heller ikke nogen fejl.
Avatar billede fant0mas Nybegynder
07. marts 2008 - 01:50 #12
Jamen har du indsat noget i databasen?
Avatar billede raan Nybegynder
07. marts 2008 - 01:56 #13
Ja, jeg har lavet en tabel med
id
date
beskrivelse
Avatar billede fant0mas Nybegynder
07. marts 2008 - 02:17 #14
Så indsæt noget data:
F.eks:
2008-03-07
Test
Avatar billede raan Nybegynder
07. marts 2008 - 09:57 #15
jamen det har jeg gjort, men derfor kommer der stadig intet link :s
Avatar billede fant0mas Nybegynder
07. marts 2008 - 10:10 #16
Og din query ser sådan ud?
$query = mysql_query("SELECT * FROM kalender") or die(mysql_error());
$arr = array();
while ($result = mysql_fetch_assoc($query)) {
    $arr[$result['date']] = $result;
}
Avatar billede raan Nybegynder
07. marts 2008 - 10:28 #17
Ja, eller har lige ændret det til beg_kalender, men ellers ser den sådan ud :-)
Avatar billede fant0mas Nybegynder
07. marts 2008 - 10:57 #18
Rettet et forkert sat %:
$dato = sprintf("%04d-%02d-%02d",$thisyear,$thismonth,$counter);
Avatar billede fant0mas Nybegynder
07. marts 2008 - 11:06 #19
echo "\t\t<td><a href=\"?date=$date\">$counter</a></td>\n";
skal lige ændres til
echo "\t\t<td><a href=\"?date=$dato\">$counter</a></td>\n";

Og så udskrives sådan:
if($_GET[date]){
echo $arr[$_GET[date]][tekst];
}
Avatar billede fant0mas Nybegynder
07. marts 2008 - 11:08 #20
Argh, det kører ikke rigtig:
echo $arr[$_GET[date]][beskrivelse];
Avatar billede raan Nybegynder
07. marts 2008 - 13:30 #21
sådan, nu virker det! :D
- mange tak - smid et svar.
Avatar billede fant0mas Nybegynder
07. marts 2008 - 13:36 #22
svar!
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