JahresDB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JahresDB

    Hat jemand einen Tip wo ich eine Mysql Tabelle mit den Kalenderwochen, Tagen und Datum für ein ganzes Jahr finde.
    Für 2002 habe ich die jetzt sch0n per Hand erstellt, ich brauche Sie aber jedes Jahr wieder.

    Vielen Dank

  • #2
    hmm,

    wie soll das Teil denn aussehen ?

    Kommentar


    • #3
      JahreDB

      In meiner von Hand erstellten habe ich folgende Felder:
      ID, KW, Tag, Jahr, Datum

      ############################
      DB Inhalt Beispiel

      ID auto
      KW 1
      Tag 2
      Jahr 2002
      Datum 01.01

      ID auto
      KW 1
      Tag 3
      Jahr 2002
      Datum 02.01

      ID auto
      KW 1
      Tag 4
      Jahr 2002
      Datum 03.01

      ID auto
      KW 1
      Tag 5
      Jahr 2002
      Datum 04.01

      ID auto
      KW 2
      Tag 1
      Jahr 2002
      Datum 07.01

      usw.

      ##################################
      Für eine Kantine, die Ihren wöchentlichen Menüplan Online stellt (momentan wird für jede Woche eine neue webseite per Hand in HTML erstellt), bin ich gerade dabei eine Lösung auf Basis von PHP mit MySql zu erstellen. Der erste Schritt ist das die KW ausgewählt wird für die der neue Plan sein soll, danach werden die Gerichte den einzelnen Tagen zugeordnet.

      Im nächsten Jahr kann mann dann z.B. sagen zeige mir mal was in KW 13 im Vorjahr angeboten wurde
      Vielen Dank

      Kommentar


      • #4
        hmm,

        das kann man doch eigentlich recht einfach machen, steht das Tabellen Layout denn schon ? Ist nämlich sehr redundant. Du brauchst eigentlich nämlich nur den Tag den du haben wisst, der Rest ist errechenbar und wird nicht in der Tabelle gebraucht.
        Ich würde die Tabelle wie folgt machen :
        Code:
        Tag  (Typ = INT (auto_inc) <> Essen (Typ = varchar[255] <>
        01                         <> Lasagne                   <>
        02                         <> Lasagne                   <>
        03                         <> Pizza                     <>
        04                         <> Spagetti                  <>
        ......
        Wenn du die KW wissen willst dann brauchst du nur den (KW-1)*7+1 zu machen um auf den Anfangstag der Tabelle zu kommen, dann brauchst du noch den Timestamp von 01.01.2003 um damit den entsprechenden Tag zu wählen dann gibste das aus. Ich bastle mal daran, mal sehen obs heute noch was wird.

        Kommentar


        • #5
          hmm,

          denkfehler, bzw. nochmal nachgedacht, ich würde den Tag doch als Date speichern, dann wird das einfacher zu handlen, PrimKey darauf, kein auto_inc.

          Kommentar


          • #6
            hmm,

            hier ist der Kram, ich hoffe du kannst was damit anfangen :
            Zuerstmal der Dump meiner Testdb :
            Code:
            # phpMyAdmin MySQL-Dump
            # version 2.2.2
            # [url]http://phpwizard.net/phpMyAdmin/[/url]
            # [url]http://phpmyadmin.sourceforge.net/[/url] (download page)
            #
            # Host: localhost
            # Erstellungszeit: 04. März 2002 um 15:06
            # Server Version: 3.23.38
            # PHP Version: 4.0.6
            # Datenbank : `essen`
            # --------------------------------------------------------
            
            #
            # Tabellenstruktur für Tabelle `liste`
            #
            
            CREATE TABLE liste (
              tag date NOT NULL default '0000-00-00',
              essen varchar(255) default NULL,
              PRIMARY KEY  (tag)
            ) TYPE=MyISAM;
            
            #
            # Daten für Tabelle `liste`
            #
            
            INSERT INTO liste VALUES ('2003-01-01', 'Lasagne');
            INSERT INTO liste VALUES ('2003-01-02', 'Pizza');
            INSERT INTO liste VALUES ('2003-01-03', 'Wiener Schnitzel');
            INSERT INTO liste VALUES ('2003-01-04', 'Canneloni');
            INSERT INTO liste VALUES ('2003-01-05', 'Italienischer Salat');
            INSERT INTO liste VALUES ('2003-01-06', 'Kartoffelausflauf');
            INSERT INTO liste VALUES ('2003-01-07', 'Kassler');
            INSERT INTO liste VALUES ('2003-01-08', 'Sauerkraut mit Püree');
            INSERT INTO liste VALUES ('2003-01-09', 'Semmelknödel');
            INSERT INTO liste VALUES ('2003-01-10', 'Pilzragout');
            INSERT INTO liste VALUES ('2003-01-11', 'Bauernsalat mit Brot');
            INSERT INTO liste VALUES ('2003-01-12', 'Combinatione');
            INSERT INTO liste VALUES ('2003-01-13', 'Schweizer Wurstsalat mit Pommes');
            dann die Eingabemaske, linkes Feld ist die KW und das rechte Feld ist das Jahr vierstellig ! nenn es kw.html
            Code:
            <html>
            <head>
            	<title>KW suchen Maske</title>
            </head>
            
            <body>
                <form method = post action = "suchen.php">
            	<input type="text" name="kw">
            	<input type="submit" name="submit">
            	<input type"text" name="jahr">
            	</form>
            </body>
            </html>
            so und hier noch das suchen.php das die Tabelle mal ausgibt aufgrund der eingabe.
            Code:
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
            
            <html>
            <head>
            	<title>Show</title>
            </head>
            
            <body>
            <?php
            	include("var.inc.php");
            	$firstday = date ("D",mktime(0,0,0,1,1,$jahr));
            	$firststamp = mktime(0,0,0,1,1,$jahr);
            	if ($firstday == "Sun")
            	 { 
            	   $firstsunday = 1;
            	 }  
            	if ($firstday == "Sat")
            	 { 
            	   $firstsunday = 2;
            	 }
            	if ($firstday == "Fri")
            	 { 
            	   $firstsunday = 3;
            	 }
            	if ($firstday == "Thu")
            	 { 
            	   $firstsunday = 4;
            	 }
            	if ($firstday == "Wed")
            	 { 
            	   $firstsunday = 5;
            	 }
            	if ($firstday == "Tue")
            	 { 
            	   $firstsunday = 6;
            	 }
            	if ($firstday == "Mon")
            	 { 
            	   $firstsunday = 7;
            	 }     
            	if ($kw == 1)
            		{
            		  $start = "$jahr-01-01";
            		  $stop = "$jahr-01-0$firstsunday";
            		}
            	else
            		{
            		  $start = date("Y-m-d",((($kw-2)*7+$firstsunday)*24*60*60+$firststamp));
            		  $stop = date("Y-m-d",((($kw-2)*7+$firstsunday+6)*24*60*60+$firststamp));
            		}
            	$conn = mysql_connect($dbserver,$dbuser,$dbpass);
            	mysql_select_db("essen",$conn);
            	$query = "SELECT * from liste WHERE tag >= '$start' AND tag <= '$stop'";
            	$result = mysql_query($query,$conn);
            	echo "Kalenderwoche :".$kw."<br>";
            	echo "Von : ".$start;
            	echo " bis ".$stop."<br>";
            	while ($zeileholen = mysql_fetch_array($result,MYSQL_ASSOC))
            		{
            			$splitter = explode("-",$zeileholen["tag"]);
            			echo date("D",mktime(0,0,0,$splitter[1],$splitter[2],$splitter[0]))." ".$zeileholen["tag"]." ".$zeileholen["essen"]."<br>";
            		}
            ?>	
            </body>
            </html>
            und noch die Datei var.inc.php die du brauchst um zur DB zu connecten
            Code:
            <?php
            
            	// Datenbank Variablen
            	
            	$dbserver 	= "localhost";  // Datenbankserveradresse
            	$dbname		= "essen"; 		// Name der Datenbank
            	$dbuser		= "";			// Username des Datenbankbenutzers 
            	$dbpass		= "";			// Passwort des Datenbankbenutzers
            	
            ?>
            Ich hoffe das hilft dir weiter.

            Kommentar


            • #7
              Besten Dank, werde ich gleich mal versuchen umzusetzen.
              Vielen Dank

              Kommentar

              Lädt...
              X