Event Kalender

BABA66

Grünschnabel
Hallo leute,

hab mir mal ein Kalender Script zusammengeschnippelt und es funktioniert soweit alles ganz gut.

hier der code
PHP:
<html>
<head>
<title>PHP Calendar</title>
<style type="text/css">
<!--
.table.calendar {border: 1px solid #000000; border-collapse: collapse; color: #000000; background: #FFFFFF; }
.td.today { border: 1px solid white; color: #000000; background: #EFEFEF; font-weight: bold;}
.td.monthdays {border: 1px solid #434470; color: #000000; background: #FFFFFFF; }
.td.nonmonthdays { border: 1px solid white; color: #000000; background: #EFEFEF;}
.style1 {
	color: #FFFFFF;
	font-weight: bold;
	bgcolor: #FF3333
}
.style2 {
	font-weight: bold;
	bgcolor: #FF3333
}
-->
</style>
<body>

<?php
error_reporting('0');
ini_set('display_errors', '0');
// Gather variables from
// user input and break them
// down for usage in our script

if(!isset($_REQUEST['date'])){
   $date = mktime(0,0,0,date('m'), date('d'), date('Y'));
} else {
   $date = $_REQUEST['date'];
}

$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);

// Get the first day of the month
$month_start = mktime(0,0,0,$month, 1, $year);

// Get friendly month name
$month_names = array(1=>"Januar",
                  2=>"Februar",
                  3=>"M&auml;rz",
                  4=>"April",
                  5=>"Mai",
                  6=>"Juni",
                  7=>"Juli",
                  8=>"August",
                  9=>"September",
                  10=>"Oktober",
                  11=>"November",
                  12=>"Dezember");


$month_name = date('n', $month_start);


// Figure out which day of the week
// the month starts on.
$month_start_day = date('D', $month_start);

switch($month_start_day){
    case "Mon": $offset = 0; break;
    case "Tue": $offset = 1; break;
    case "Wed": $offset = 2; break;
    case "Thu": $offset = 3; break;
    case "Fri": $offset = 4; break;
    case "Sat": $offset = 5; break;
    case "Sun": $offset = 6; break;
}

// determine how many days are in the last month.
if($month == 1){
   $num_days_last = cal_days_in_month(0, 12, ($year -1));
} else {
   $num_days_last = cal_days_in_month(0, ($month -1), $year);
}
// determine how many days are in the current month.
$num_days_current = cal_days_in_month(0, $month, $year);

// Build an array for the current days
// in the month
for($i = 1; $i <= $num_days_current; $i++){
    $num_days_array[] = $i;
}

// Build an array for the number of days
// in last month
for($i = 1; $i <= $num_days_last; $i++){
    $num_days_last_array[] = $i;
}

// If the $offset from the starting day of the
// week happens to be Sunday, $offset would be 0,
// so don't need an offset correction.

if($offset > 0){
    $offset_correction = array_slice($num_days_last_array, -$offset, $offset);
    $new_count = array_merge($offset_correction, $num_days_array);
    $offset_count = count($offset_correction);
}

// The else statement is to prevent building the $offset array.
else {
    $offset_count = 0;
    $new_count = $num_days_array;
}

// count how many days we have with the two
// previous arrays merged together
$current_num = count($new_count);

// Since we will have 5 HTML table rows (TR)
// with 7 table data entries (TD)
// we need to fill in 35 TDs
// so, we will have to figure out
// how many days to appened to the end
// of the final array to make it 35 days.


if($current_num > 35){
   $num_weeks = 6;
   $outset = (42 - $current_num);
} elseif($current_num < 35){
   $num_weeks = 5;
   $outset = (35 - $current_num);
}
if($current_num == 35){
   $num_weeks = 5;
   $outset = 0;
}
// Outset Correction
for($i = 1; $i <= $outset; $i++){
   $new_count[] = $i;
}

// Now let's "chunk" the $all_days array
// into weeks. Each week has 7 days
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);


// Build Previous and Next Links
$previous_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 1){
   $previous_link .= mktime(0,0,0,12,$day,($year -1));
} else {
   $previous_link .= mktime(0,0,0,($month -1),$day,$year);
}
$previous_link .= "\"><<<</a>";

$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 12){
   $next_link .= mktime(0,0,0,1,$day,($year + 1));
} else {
   $next_link .= mktime(0,0,0,($month +1),$day,$year);
}
$next_link .= "\">>>></a>";

// Build the heading portion of the calendar table
echo "<table border=\"3\" cellpadding=\"3\" cellspacing=\"3\" class=\"calendar\" align=\"center\" table width=\"416\" height=\"353\">\n".
     "<tr>\n".
     "<td colspan=\"7\" bgcolor=\"#FF3366\">\n".
     "<table border=\"3\" cellpadding=\"3\" cellspacing=\"3\" table align=\"center\">\n".
     "<tr>\n".
     "<td colspan=\"2\" width=\"75\" align=\"left\">$previous_link</td>\n".
     "<td colspan=\"3\" width=\"150\" align=\"center\"><span class=\"style1\">$month_names[$month_name] $year</span></td>\n".
     "<td colspan=\"2\" width=\"75\" align=\"right\">$next_link</td>\n".
     "</tr>\n".
     "</table>\n".
     "</td>\n".
     "<tr>\n".
     "<td><strong>Mo</strong></td><td><strong>Di</strong></td><td><strong>Mi</strong></td><td><strong>Do</strong></td><td><strong>Fr</strong></td><td><strong>Sa</strong></td><td><strong>So</strong></td>\n".
     "</tr>\n";

// Now we break each key of the array 
// into a week and create a new table row for each
// week with the days of that week in the table data

$i = 0;
foreach($weeks AS $week){
       echo "<tr>\n";
       foreach($week as $d){
         if($i < $offset_count){
             $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month -1,$d,$year)."\">$d</a>";
             echo "<td class=\"nonmonthdays\" bgcolor=\"#CCCCCC\">$day_link</td>\n";
         }
         if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)){
            $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month,$d,$year)."\">$d</a>";
           if($date == mktime(0,0,0,$month,$d,$year)){
               echo "<td class=\"today\" bgcolor=\"#FF3366\">$d</td>\n";
           } else {
               echo "<td class=\"days\">$day_link</td>\n";
           }
        } elseif(($outset > 0)) {
            if(($i >= ($num_weeks * 7) - $outset)){
               $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month +1,$d,$year)."\">$d</a>";
               echo "<td class=\"nonmonthdays\" bgcolor=\"#CCCCCC\">$day_link</td>\n";
           }
        }
        $i++;
      }
      echo "</tr>\n";   
}

// Close out your table and that's it!
echo '<tr><td colspan="7" class="days"> </td></tr>';
echo '</table>';



//Display events according to date.
echo "<table cellspacing=\"0\" cellpadding=\"0\" width=\"300\" align=\"center\">";
echo "<tr><td align=\"center\">Events am $day_name, $day $month_names[$month_name]  $year:</td></tr>";
//Open mySQL connection
$conn = mysql_connect("localhost", "root", "") or die("Could not connect!");
//Connect to database
mysql_select_db("test") or die("Could not select database");
//Query database
$sql = "SELECT * FROM events WHERE eventDate = FROM_UNIXTIME($date)";
$result = mysql_query($sql);

//Fecth rows according to timestamp
$num_rows = mysql_num_rows($result);
if($num_rows == 0){
	echo "<tr><td align=\"center\">Für Heute sind leider Keine Events gelistet.</td></tr>";
}else{
	while ($row=mysql_fetch_array($result)){
  $title = $row["eventTitle"];
  $desc = $row["eventDesc"];
  $start = $row['eventStartTime'];
  $end = $row['eventEndTime'];
  $cost = $row['eventCost'];
  $flyer= $row['flyer'];
    
  echo "<tr><td><b><h2>$title</h2></b></td>";
  echo "<tr><td><b>$flyer</b></td>";
  echo "<tr><td>Uhrzeit: $start - $end</td></tr>";
  echo "<tr><td>Eintritt: ";
  	if ($cost > 0){
    echo "$$cost</td></tr>";
  	} else {
    echo "Free!</td></tr>";
  	}
  echo "<tr><td>$desc<br><br></td></tr>";
	}
}
echo "</table>";

  ?>
</body> 
</html>

um nun events hinzufügen zu können, habe ich folgende html erstellt. (würde hier auch gerne die textfelder für das datum und die uhrzeiten durch eine auflistung ersetzen. Weiss nur leider nicht, wie ich dann zb. die auswahl für die stunde und die minute zusammen als einzelne variable übergeben kann.)

HTML:
<!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>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="upload.php">
  <label>Titel:
  <input type="text" name="titel" />
  <br />
  <br />
  </label>
  <label>Flyer:
  <input type="file" name="flyer"  size="40">
  </label>
  <p>
    <label>Datum
    <input type="text" name="datum" value="jjjj-mm-tt" />
    </label>
  </p>
  <p>
    <label>Uhrzeit Beginn
    <input name="uhrzeit_beginn" type="text" value="  :   Uhr" size="10" />
    </label>
  </p>
  <p>
    <label>Uhrzeit Ende
    <input name="uhrzeit_ende" type="text" value="  :   Uhr" size="10" />
    </label>
  </p>
  <p>
    <label>Kosten:
    <input type="text" name="kosten" />
    </label>
  &euro;</p>
  <p>
    <label>Beschreibung:<br />
	
    <textarea name="beschreibung" cols="100" rows="20"></textarea>
    </label>
  </p>
  <input name="submit" type="submit" value="Eintragen" />
</form>
</body>
</html>

hier der code für upload.php

PHP:
<?php 
error_reporting(E_ALL);
$conn = mysql_connect("localhost", "root", "") or die("Verbindung zum Server Fehlgeschlagen");
mysql_select_db("test") or die("Datenbank konnte nicht ausgewählt werden");

$hinzufugen = mysql_query("INSERT INTO events (eventTitle,
eventDate,eventStartTime,eventEndTime,
eventCost,eventDesc,flyer) VALUES 
('".$_POST['titel']."',
'".$_POST['datum']."',
'".$_POST['uhrzeit_beginn']."',
'".$_POST['uhrzeit_ende']."',
'".$_POST['kosten']."',
'".$_POST['beschreibung']."',
'".$_POST['flyer']."'") OR die(mysql_error());

?>

Tabelle events sowie spalten sind alle vorhanden, aber die daten werden einfach nicht in der tabelle eingetragen.

was mache ich denn falsch?

fehlermeldung ist (bei upload.php)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 10

Danke schonmal im Vorraus

mfg
BABA66
 
Hi!

Vielleicht ein Fehler, was die Typen der Felder angeht.
Datum ist bei dir HTML seitig TEXT, vielleicht aber bei der Datenbank ein DATE-Feld.

Vielleicht ist das Datumsfeld auch leer. Lass es dir doch einfach mal mit echo ausgeben.

Einen Syntaxfehler sehe ich auf Anhieb nicht.
 
Zuletzt bearbeitet:
Hi

also ich würde wie ich immer sage erstmal den Query-String ein bisschen übersichtlicher aufschreiben.


PHP:
<?php 
error_reporting(E_ALL);
$conn = mysql_connect("localhost", "root", "") or die("Verbindung zum Server Fehlgeschlagen");
mysql_select_db("test") or die("Datenbank konnte nicht ausgewählt werden");

$query_str = "INSERT INTO events (
eventTitle,
eventDate,
eventStartTime,
eventEndTime,
eventCost,
eventDesc,
flyer
) VALUES (
'".$_POST['titel']."',
'".$_POST['datum']."',
'".$_POST['uhrzeit_beginn']."',
'".$_POST['uhrzeit_ende']."',
'".$_POST['kosten']."',
'".$_POST['beschreibung']."',
'".$_POST['flyer']."'
)";


$hinzufugen = mysql_query($query_str) OR die(mysql_error());

?>

und dann schau dir mal das hier an:
http://www.php.net/manual/de/function.mysql-real-escape-string.php

Und das mit der Auflistung der Uhrzeit habe ich nicht ganz verstanden?!

Gruß
 
Ach ja, was ich auch probieren würde ist die $_POST Variablen in "normale" Variablen zu speichern und diese dann im SQL-String zu verwenden, also z.B.

PHP:
$var=$_POST['datum'];

$sql_string = mysql_query("INSERT INTO events (Beispiel) VALUES 
('".$var."')";
OR die(mysql_error());
 
Danke für eure Antworten,

@disaster0505

du hast recht,

für die spalte eventDate habe ich den Feldtyp Time
und für die Uhrzeiten eventStart usw. den Feldtyp Time.
hast du vielleicht ne seite für mich wo ich diesbezüglich eine auflistung finde. also wo steht, wo welcher feldtyp hingehört.

@ne0thype

danke werde es mir anschauen.
 
hast du vielleicht ne seite für mich wo ich diesbezüglich eine auflistung finde. also wo steht, wo welcher feldtyp hingehört.
.

Naja, eigentlich ist es ja nicht schwer zu wissen, welchen Feldtyp man verwenden muss.

Wenn Formulardaten übergeben in eine Datenbank eingetragen werden sollen, dann ist das meist doch INTEGER, BOOL oder TEXT/STRING (weiß grad nicht genau wie es bei MySQL heißt).

DATE z.B. kann man verwenden, wenn eine PHP-Funktin verwendet, die ein Datum zurückliefert.

Eine Seite, die das auflistet kenne ich nicht und habe ich auch durch eine Suche eben nicht gefunden.
 
@ne0thype


das mit der uhrzeit und dem datum meinte ich folgendermaasen. anstatt im formular ein textfeld zu benutzen würde ich lieber jeweils ein select feld für die stunden und eins für die minuten haben. aber dann habe ich ja zwei felder mit informationen die in eine tabelle(Spaltentyp TIME) müssen und wie ich das hinkriegen soll, raff ich nicht so ganz. Hab auch versucht bei google nachzusuchen aber ich weiss nicht so wirklich unter welchen suchbegriffen.
 
ok

dazu gibt es mehere Möglichkeiten:

1. Wie du schon gesagt hast für die Stunde und Minute jeweils ein Dropdownfeld, dann kannst du mit "mktime()" dir den genauen Timestamp ausgeben lassen und denn dann mit "strftime()" so formatieren das MySQL mit dem Feldtyp "Datetime" klar kommt.
MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format.


oder

2. du sagt gleich im INSERT query
PHP:
$query = "INSERT INTO database (datum) VALUES ('".$_POST['year']."-".$_POST['month']."-".$_POST['day']." ".$_POST['hour'].":".$_POST['minute'].":".$_POST['sec']."')";

wobei ich persöonlich zur 1 rate, weil du da den Vorteil hast wenn der User den 31 Feb. auswählt (ausser du hast per Javascript beim Feb. die Schaltjahre usw. beachtet), dann automatisch den 2 bzw. den 3 März darausfolgt.
 
Zuletzt bearbeitet:
@ne0thype

habe es nun mit der zweiten variante versucht, die du vorgeschlagen hast.
Das Datum wird richtig übergeben aber irgendwie klappt es nicht bei der uhrzeit.

der code für die uploader.html sieht nun so aus.

HTML:
<!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>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="upload.php">
  <label>Titel:
  <input type="text" name="titel" />
  <br />
  <br />
  </label>
  <label>Flyer:
  <input type="file" name="flyer"  size="40">
  </label>
  <p>
    <label>Datum:
    <select name="datum_tag">
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="04">04</option>
      <option value="05">05</option>
      <option value="06">06</option>
      <option value="07">07</option>
      <option value="08">08</option>
      <option value="09">09</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
      <option value="13">13</option>
      <option value="14">14</option>
      <option value="15">15</option>
      <option value="16">16</option>
      <option value="17">17</option>
      <option value="18">18</option>
      <option value="19">19</option>
      <option value="20">20</option>
      <option value="21">21</option>
      <option value="22">22</option>
      <option value="23">23</option>
      <option value="24">24</option>
      <option value="25">25</option>
      <option value="26">26</option>
      <option value="27">27</option>
      <option value="28">28</option>
      <option value="29">29</option>
      <option value="30">30</option>
      <option value="31">31</option>
    </select>
    </label>
    <label>
    <select name="datum_monat">
      <option value="01">Januar</option>
      <option value="02">Februar</option>
      <option value="03">M&auml;rz</option>
      <option value="04">April</option>
      <option value="05">Mai</option>
      <option value="06">Juni</option>
      <option value="07">Juli</option>
      <option value="08">August</option>
      <option value="09">September</option>
      <option value="10">Oktober</option>
      <option value="11">November</option>
      <option value="12">Dezember</option>
    </select>
    </label>
    <label>
    <select name="datum_jahr">
      <option value="2000">2000</option>
      <option value="2001">2001</option>
      <option value="2002">2002</option>
      <option value="2003">2003</option>
      <option value="2004">2004</option>
      <option value="2005">2005</option>
      <option value="2006">2006</option>
      <option value="2007">2007</option>
      <option value="2008">2008</option>
      <option value="2009">2009</option>
      <option value="2010">2010</option>
      <option value="2011">2011</option>
      <option value="2012">2012</option>
      <option value="2013">2013</option>
      <option value="2014">2014</option>
      <option value="2015">2015</option>
      <option value="2016">2016</option>
      <option value="2017">2017</option>
      <option value="2018">2018</option>
      <option value="2019">2019</option>
      <option value="2020">2020</option>
      <option value="2021">2021</option>
      <option value="2022">2022</option>
      <option value="2023">2023</option>
      <option value="2024">2024</option>
      <option value="2025">2025</option>
      <option value="2026">2026</option>
      <option value="2027">2027</option>
      <option value="2028">2028</option>
      <option value="2029">2029</option>
      <option value="2030">2030</option>
      <option value="2031">2031</option>
      <option value="2032">2032</option>
      <option value="2033">2033</option>
      <option value="2034">2034</option>
      <option value="2035">2035</option>
      <option value="2036">2036</option>
      <option value="2037">2037</option>
      <option value="2038">2038</option>
      <option value="2039">2039</option>
	  <option value="2040">2040</option>
      <option value="2041">2041</option>
      <option value="2042">2042</option>
      <option value="2043">2043</option>
      <option value="2044">2044</option>
      <option value="2045">2045</option>
      <option value="2046">2046</option>
      <option value="2047">2047</option>
      <option value="2048">2048</option>
      <option value="2049">2049</option>
      <option value="2050">2050</option>
      <option value="2051">2051</option>
      <option value="2052">2052</option>
      <option value="2053">2053</option>
      <option value="2054">2054</option>
      <option value="2055">2055</option>
      <option value="2056">2056</option>
      <option value="2057">2057</option>
      <option value="2058">2058</option>
      <option value="2059">2059</option>
      <option value="2060">2060</option>
    </select>
    </label>
  </p>
  <p>
    <label>Beginn:
    <select name="start_std">
	<option value="00">00</option>
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="04">04</option>
      <option value="05">05</option>
      <option value="06">06</option>
      <option value="07">07</option>
      <option value="08">08</option>
      <option value="09">09</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
      <option value="13">13</option>
      <option value="14">14</option>
      <option value="15">15</option>
      <option value="16">16</option>
      <option value="17">17</option>
      <option value="18">18</option>
      <option value="19">19</option>
      <option value="20">20</option>
      <option value="21">21</option>
      <option value="22">22</option>
      <option value="23">23</option>
      
    </select>
    </label>
    <label>  :    
    <select name="start_min">
<option value="00">00</option>
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="04">04</option>
      <option value="05">05</option>
      <option value="06">06</option>
      <option value="07">07</option>
      <option value="08">08</option>
      <option value="09">09</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
      <option value="13">13</option>
      <option value="14">14</option>
      <option value="15">15</option>
      <option value="16">16</option>
      <option value="17">17</option>
      <option value="18">18</option>
      <option value="19">19</option>
      <option value="20">20</option>
      <option value="21">21</option>
      <option value="22">22</option>
      <option value="23">23</option>
      <option value="24">24</option>
      <option value="25">25</option>
      <option value="26">26</option>
      <option value="27">27</option>
      <option value="28">28</option>
      <option value="29">29</option>
      <option value="30">30</option>
      <option value="31">31</option>
      <option value="32">32</option>
      <option value="33">33</option>
      <option value="34">34</option>
      <option value="35">35</option>
      <option value="36">36</option>
      <option value="37">37</option>
      <option value="38">38</option>
      <option value="39">39</option>
      <option value="40">40</option>
      <option value="41">41</option>
      <option value="42">42</option>
      <option value="43">43</option>
      <option value="44">44</option>
      <option value="45">45</option>
      <option value="46">46</option>
	  <option value="47">47</option>
      <option value="48">48</option>
      <option value="49">49</option>
      <option value="50">50</option>
      <option value="51">51</option>
      <option value="52">52</option>
      <option value="53">53</option>
      <option value="54">54</option>
      <option value="55">55</option>
      <option value="56">56</option>
      <option value="57">57</option>
      <option value="58">58</option>
      <option value="59">59</option>
    </select>
    </label>
  Uhr</p>
  <p>
    <label>Ende:
    <select name="ende_std">
    <option value="00">00</option>
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="04">04</option>
      <option value="05">05</option>
      <option value="06">06</option>
      <option value="07">07</option>
      <option value="08">08</option>
      <option value="09">09</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
      <option value="13">13</option>
      <option value="14">14</option>
      <option value="15">15</option>
      <option value="16">16</option>
      <option value="17">17</option>
      <option value="18">18</option>
      <option value="19">19</option>
      <option value="20">20</option>
      <option value="21">21</option>
      <option value="22">22</option>
      <option value="23">23</option>
	</select>
    </label>
    <label>  :  
    <select name="ende_min">
	<option value="00">00</option>
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="04">04</option>
      <option value="05">05</option>
      <option value="06">06</option>
      <option value="07">07</option>
      <option value="08">08</option>
      <option value="09">09</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
      <option value="13">13</option>
      <option value="14">14</option>
      <option value="15">15</option>
      <option value="16">16</option>
      <option value="17">17</option>
      <option value="18">18</option>
      <option value="19">19</option>
      <option value="20">20</option>
      <option value="21">21</option>
      <option value="22">22</option>
      <option value="23">23</option>
      <option value="24">24</option>
      <option value="25">25</option>
      <option value="26">26</option>
      <option value="27">27</option>
      <option value="28">28</option>
      <option value="29">29</option>
      <option value="30">30</option>
      <option value="31">31</option>
      <option value="32">32</option>
      <option value="33">33</option>
      <option value="34">34</option>
      <option value="35">35</option>
      <option value="36">36</option>
      <option value="37">37</option>
      <option value="38">38</option>
      <option value="39">39</option>
      <option value="40">40</option>
      <option value="41">41</option>
      <option value="42">42</option>
      <option value="43">43</option>
      <option value="44">44</option>
      <option value="45">45</option>
      <option value="46">46</option>
	  <option value="47">47</option>
      <option value="48">48</option>
      <option value="49">49</option>
      <option value="50">50</option>
      <option value="51">51</option>
      <option value="52">52</option>
      <option value="53">53</option>
      <option value="54">54</option>
      <option value="55">55</option>
      <option value="56">56</option>
      <option value="57">57</option>
      <option value="58">58</option>
      <option value="59">59</option>
    </select>
    </label>
  Uhr</p>
  <p>
    <label>Kosten Eintritt:
    <input type="text" name="kosten" />
    </label>
  &euro;</p>
  <p>
    <label>Beschreibung:<br />
	
    <textarea name="beschreibung" cols="100" rows="20"></textarea>
    </label>
  </p>
  <input name="submit" type="submit" value="Eintragen" />
</form>
</body>
</html>

und hier das dazugehörige script upload.php

PHP:
<?php 
error_reporting(E_ALL);
$conn = mysql_connect("localhost", "root", "") or die("Verbindung zum Server Fehlgeschlagen");
mysql_select_db("test") or die("Datenbank konnte nicht ausgewählt werden");

$titel = $_POST['titel'];
$datum_jahr = $_POST['datum_jahr'];
$datum_monat = $_POST['datum_monat'];
$datum_tag = $_POST['datum_tag'];
$start_std = $_POST['start_std'];
$start_min = $_POST['start_min'];
$ende_std = $_POST['ende_std'];
$ende_min = $_POST['ende_min'];
$kosten = $_POST['kosten'];
$beschreibung = $_POST['beschreibung'];
$flyer = $_POST['flyer'];


$hinzufugen = mysql_query("INSERT INTO events (eventTitle,
eventDate,
eventStartTime,
eventEndTime,
eventCost,
eventDesc,
flyer) 
VALUES 
('".$titel."',
'".$datum_jahr."''-''".$datum_monat."''-''".$datum_tag."',
'".$start_std."'':''".$start_min."'':''00',
'".$ende_std."'':''".$ende_min."'':''00',
'".$kosten."',
'".$beschreibung."',
'".$flyer."')");

mysql_close() OR die(mysql_error());

if(!$hinzufugen) {
echo "<h1>Uploadvorgang fehlgeschlagen</h1>";
} else{
echo "<h1>Uploadvorgang war erfolgreich</h1> <br>";}

?>

irgendwie wird aus dem formular nur der wert für die stunde in der tabelle eingetragen und das auch noch an der stelle für die sekunden, die eigentlich immer auf null sein sollten.
Kann mir vorstellen, dass ich irgendwo nen ganz simplen fehler drinn hab aber ich finde ihn einfach nicht.
 
Sooo Leute,

hab jetzt alles glücklicherweise zum laufen bekommen.
Hab nun einen abgesicherten Loginbereich mit der Möglichkeit Events einzutragen und zu löschen.
Im Kalenderfenster werden die Events auch alle angezeigt.

Nun möchte ich den nächsten Schritt machen und das Aussehen verändern.

Momentan werden alle Tage ausserhalb des aktuellen Monats grau dargestellt.
Tage innerhalb eines Monats weiss und die aktuelle Auswahl in rot.
Und dazu natürlich der Link für den jeweiligen Tag.

Ich möchte nun, dass Tage, an denen Events stattfinden auch eine weitere Farbe haben. Zudem sollten die Wochenenden entsprechend gekennzeichnet sein.

Habe mir überlegt Images in verschiedenen Farben für alle Zahlen von 1 bis 31 zu erstellen.
Das Image mit der jeweiligen Farbe und Zahl soll dann angezeigt werden je nachdem ob der Tag sich im aktuellen Monat befindet, ob er auf ein Wochenende fällt, oder ob an dem Tag ein Event stattfindet.
Zudem möchte ich nochmal 12 Images für jeden Monat und zwei für die vor und zurück Links machen.
Um die restlichen leeren Tabellenspalten mit Images zu füllen reicht mein php Wissen wahrscheinlich aus.
Ich glaube sogar das mit den Buttons bekomme ich auch ohne Hilfe hin.

Aber ich brauche auf jeden Fall Hilfe, um:

1.- zu bestimmen, welcher Tag Events beinhaltet, (Daten stehen in der Mysql- Tabelle events in der Spalte eventDate im yahr-monat tag format)
2. -zu bestimmen welche Tage auf ein Wochenende fallen.
3. den jeweiligen Tagen die passenden Images zuzuweisen (Passende Farbe je nachdem ob die oberen 2 Bedingungen erfüllt sind.)
4. den Tagen ausserhalb des aktuellen Monats die passenden Images zuzuweisen
5. dem aktuellen Tag das passende Image in der richtigen Farbe zuzuweisen
6. den Monatsnamen die passenden Images zuzuweisen

hier ist der aktuelle Code für den Kalender.

PHP:
<html>
<head>
<title>PHP Calendar</title>
<style type="text/css">
<!--
.table.calendar {border: 1px solid #000000; border-collapse: collapse; color: #000000; background: #FFFFFF; }
.td.today { border: 1px solid white; color: #000000; background: #EFEFEF; font-weight: bold;}
.td.monthdays {border: 1px solid #434470; color: #000000; background: #FFFFFFF; }
.td.nonmonthdays { border: 1px solid white; color: #000000; background: #EFEFEF;}
.style1 {
	color: #FFFFFF;
	font-weight: bold;
	bgcolor: #FF3333
}
.style2 {
	font-weight: bold;
	bgcolor: #FF3333

}
.samstage{
	font-weight: bold;
	bgcolor: #00FFFF

}
-->
</style>
<body>

<?php
error_reporting('0');
ini_set('display_errors', '0');
// Gather variables from
// user input and break them
// down for usage in our script

if(!isset($_REQUEST['date'])){
   $date = mktime(0,0,0,date('m'), date('d'), date('Y'));
} else {
   $date = $_REQUEST['date'];
}

$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);

// Get the first day of the month
$month_start = mktime(0,0,0,$month, 1, $year);

// Get friendly month name
$month_names = array(1=>"Januar",
                  2=>"Februar",
                  3=>"M&auml;rz",
                  4=>"April",
                  5=>"Mai",
                  6=>"Juni",
                  7=>"Juli",
                  8=>"August",
                  9=>"September",
                  10=>"Oktober",
                  11=>"November",
                  12=>"Dezember");


$month_name = date('n', $month_start);


// Figure out which day of the week
// the month starts on.
$month_start_day = date('D', $month_start);

switch($month_start_day){
    case "Mon": $offset = 0; break;
    case "Tue": $offset = 1; break;
    case "Wed": $offset = 2; break;
    case "Thu": $offset = 3; break;
    case "Fri": $offset = 4; break;
    case "Sat": $offset = 5; break;
    case "Sun": $offset = 6; break;
}

// determine how many days are in the last month.
if($month == 1){
   $num_days_last = cal_days_in_month(0, 12, ($year -1));
} else {
   $num_days_last = cal_days_in_month(0, ($month -1), $year);
}
// determine how many days are in the current month.
$num_days_current = cal_days_in_month(0, $month, $year);

// Build an array for the current days
// in the month
for($i = 1; $i <= $num_days_current; $i++){
    $num_days_array[] = $i;
}

// Build an array for the number of days
// in last month
for($i = 1; $i <= $num_days_last; $i++){
    $num_days_last_array[] = $i;
}

// If the $offset from the starting day of the
// week happens to be Sunday, $offset would be 0,
// so don't need an offset correction.

if($offset > 0){
    $offset_correction = array_slice($num_days_last_array, -$offset, $offset);
    $new_count = array_merge($offset_correction, $num_days_array);
    $offset_count = count($offset_correction);
}

// The else statement is to prevent building the $offset array.
else {
    $offset_count = 0;
    $new_count = $num_days_array;
}

// count how many days we have with the two
// previous arrays merged together
$current_num = count($new_count);

// Since we will have 5 HTML table rows (TR)
// with 7 table data entries (TD)
// we need to fill in 35 TDs
// so, we will have to figure out
// how many days to appened to the end
// of the final array to make it 35 days.


if($current_num > 35){
   $num_weeks = 6;
   $outset = (42 - $current_num);
} elseif($current_num < 35){
   $num_weeks = 5;
   $outset = (35 - $current_num);
}
if($current_num == 35){
   $num_weeks = 5;
   $outset = 0;
}
// Outset Correction
for($i = 1; $i <= $outset; $i++){
   $new_count[] = $i;
}

// Now let's "chunk" the $all_days array
// into weeks. Each week has 7 days
// so we will array_chunk it into 7 days.
$weeks = array_chunk($new_count, 7);


// Build Previous and Next Links
$previous_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 1){
   $previous_link .= mktime(0,0,0,12,$day,($year -1));
} else {
   $previous_link .= mktime(0,0,0,($month -1),$day,$year);
}
$previous_link .= "\"><<<</a>";

$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=";
if($month == 12){
   $next_link .= mktime(0,0,0,1,$day,($year + 1));
} else {
   $next_link .= mktime(0,0,0,($month +1),$day,$year);
}
$next_link .= "\">>>></a>";

// Build the heading portion of the calendar table
echo "<table border=\"3\" cellpadding=\"3\" cellspacing=\"3\" class=\"calendar\" align=\"center\" table width=\"416\" height=\"353\">\n".
     "<tr>\n".
     "<td colspan=\"7\" bgcolor=\"#FF3366\">\n".
     "<table border=\"3\" cellpadding=\"3\" cellspacing=\"3\" table align=\"center\">\n".
     "<tr>\n".
     "<td colspan=\"2\" width=\"75\" align=\"left\">$previous_link</td>\n".
     "<td colspan=\"3\" width=\"150\" align=\"center\"><span class=\"style1\">$month_names[$month_name] $year</span></td>\n".
     "<td colspan=\"2\" width=\"75\" align=\"right\">$next_link</td>\n".
     "</tr>\n".
     "</table>\n".
     "</td>\n".
     "<tr>\n".
     "<td><strong>Mo</strong></td><td><strong>Di</strong></td><td><strong>Mi</strong></td><td><strong>Do</strong></td><td><strong>Fr</strong></td><td><strong>Sa</strong></td><td><strong>So</strong></td>\n".
     "</tr>\n";

// Now we break each key of the array 
// into a week and create a new table row for each
// week with the days of that week in the table data

$i = 0;
foreach($weeks AS $week){
       echo "<tr>\n";
       foreach($week as $d){
         if($i < $offset_count){
             $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month -1,$d,$year)."\">$d</a>";
             echo "<td class=\"nonmonthdays\" bgcolor=\"#CCCCCC\">$day_link</td>\n";
         }
         if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)){
            $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month,$d,$year)."\">$d</a>";
           if($date == mktime(0,0,0,$month,$d,$year)){
               echo "<td class=\"today\" bgcolor=\"#FF3366\">$d</td>\n";
           } else {
               echo "<td class=\"days\">$day_link</td>\n";
           }
        } elseif(($outset > 0)) {
            if(($i >= ($num_weeks * 7) - $outset)){
               $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month +1,$d,$year)."\">$d</a>";
               echo "<td class=\"nonmonthdays\" bgcolor=\"#CCCCCC\">$day_link</td>\n";
           }
        }
        $i++;
      }
      echo "</tr>\n";   
}

// Close out your table and that's it!
echo '<tr><td colspan="7" class="days"> </td></tr>';
echo '</table>';



//Display events according to date.
echo "<table cellspacing=\"0\" cellpadding=\"0\" width=\"300\" align=\"center\">";
echo "<tr><td align=\"center\">Events am $day_name, $day $month_names[$month_name]  $year:</td></tr>";
//Open mySQL connection
$conn = mysql_connect("localhost", "root", "") or die("Could not connect!");
//Connect to database
mysql_select_db("test") or die("Could not select database");
//Query database
$sql = "SELECT * FROM events WHERE eventDate = FROM_UNIXTIME($date)";
$result = mysql_query($sql);

//Fecth rows according to timestamp
$num_rows = mysql_num_rows($result);
if($num_rows == 0){
	echo "<tr><td align=\"center\">Für Heute sind leider Keine Events gelistet.</td></tr>";
}else{
	while ($row=mysql_fetch_array($result)){
  $title = $row["eventTitle"];
  $desc = $row["eventDesc"];
  $start = $row['eventStartTime'];
  $end = $row['eventEndTime'];
  $cost = $row['eventCost'];
  $flyer= $row['flyer'];
  $flyer_link = "<img src=\"http://www.tutorials.de/forum/images/".$row['flyer']."\"width=\"300\" height=\"120\" border=\"0\"/>\n";
    
  echo "<tr><td><b><h2>$title</h2></b></td>";
  echo "<tr><td>$flyer_link</td>";
  echo "<tr><td>Uhrzeit: $start - $end</td></tr>";
  echo "<tr><td>Eintritt: ";
  	if ($cost > 0){
    echo "€$cost</td></tr>";
  	} else {
    echo "For Free!</td></tr>";
  	}
  echo "<tr><td>$desc<br><br><hr></td></tr>";
	}
}
echo "</table>";
  ?>
</body> 
</html>

hoffe ihr könnt mir da ein wenig weiterhelfen.

mfg

BABA66
 
Zuletzt bearbeitet:
Zurück