kalender in php

Seratio

Urgestein
Thread Starter
Mitglied seit
14.07.2004
Beiträge
3.065
Ort
viva colonia
Hi,
kann mir hier evtl bitte jemand bei einem kalender helfen? ich hab irgendwie nen blackout und weiß nit wo ich anfangen soll.
ich wollte ihn so machen, wie der vwar kalender http://www.vwar.de/demo/calendar.php áber ich weiß nicht wo und wie ich anfangen soll :(

wäre echt cool wenn ihr mir helfen könntet
denk anstöße wären auch nicht schlecht

MfG
Nascar
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
PHP:
    $db = new mysql();
    $month = array(1 => "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

    if (!isset($site["month"])) 
    {
      $site["month"] = gmdate("n", time());
    } 
    $firstDay = date("w", mktime(0, 0, 0, $site["month"], 1, 04));

    $maxMonthDay = date("t", mktime(0, 0, 0, $site["month"], 1, 04));
    if ($firstDay == 0) 
    {
      $firstDay = 7;
    } 

    $day = 1;
    echo "<table width=\"360\" align=\"center\">\n";
    echo "  <tr>\n";
    echo "    <td class=\"tableHead\">\n";
    echo "      <span class=\"headline\">" . $month[$site["month"]] . "</span>\n";
    echo "    </td>\n";
    echo "  </tr>\n";
    echo "</table>";
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
    for($i = 0; $i < 6; $i++) 
    {
      echo "  <tr height=\"50\">\n";
      for($j = 1; $j <= 7; $j++) 
      {
        if ($j == $firstDay) 
        {
          $write = $day;
          $first = 1;
          $dayinc = 1;
        } 
        if ($day > 1) 
        {
          $write = $day;
          $dayinc = 1;
        } 
        if ($day > $maxMonthDay) 
        {
          $break = 1;
        } 
        if ($first != 1 || $break == 1) 
        {
          $write = " ";
        } 

        if ($first == 1) 
        {
          if (($j == 6 || $j == 7) && $break != 1) 
          {
            $color = "bgcolor=\"#9BC8E9\"";
          } 
          else 
          {
            $color = "";
          } 
          echo "    <td width=\"50\" valign=\"middle\" $color align=\"center\">\n";
          $sql = "select * from kalender where month = '" . $site["month"] . "' AND day = '$day' AND year = '2004'";
          $db->query($sql);
          if($db->rows > 0) 
          {
            while ($db->notEOF())  
            {
               echo "      termin <br>";
            } 
          } 
          else 
          {
            echo "$write";
          } 
          echo "    </td>\n";
        } 
        else 
        {
          echo "    <td valign=\"middle\" align=\"center\">$write</td>";
        } 

        if ($dayinc == 1) 
        {
          $day++;
        } 

      } 
      echo "  </tr>\n";
      if ($break == 1) 
      {
        break;
      } 
    } 
    echo "</table>\n";

sollte so funzen ;)
 
Hi,
danke, ich werd das heute abend mal testen. aber was für mysql tabellen brauch ich da?!?

MfG
Nascar
 
die mysql sachen kannst erstmal rauswerden
 
Hi,
ok
noch ne frage und zwar steht da was von 2004 drinn, heißt das das der nur die monate von 2004 anzeigt?!?

MfG
Nascar
 
durchaus möglich, mach aus dem 04 ein 05... der source ist ziemlich alt
 
ok naja ich werd sehn was ich daraus heute abend machen kann

MfG
Nascar
 
ich schau mir den auch nochmal genauer an, vielleicht find ja noch bugs drin...verbessern lässt sich da sicher einiges
 
Hi,
der kalender ist schonmal ganz gut, aber ehrlich gesagt ist er für mich nutzlos weil ich nicht durchsteige wie das ding funktioniert :-(

MfG
Nascar
 
Nascar schrieb:
Hi,
der kalender ist schonmal ganz gut, aber ehrlich gesagt ist er für mich nutzlos weil ich nicht durchsteige wie das ding funktioniert :-(

MfG
Nascar


tja dann lern halt programmieren
denn das script is ja mal mit Grundkenntnissen zu verstehn die man sich in wenigen Wochen aneignen kann ....
 
Zuletzt bearbeitet:
Hi,
ich wollt ja jetzt fasst sagen auch ein genie kann mal etwas nicht checken aber das mach ichlieber nicht :d
Nein ehrlich gesagt steig ich da voll nicht durch. Sagen wir es mal so. Ich kann PHP zwar nicht alles, aber dennoch das was man für den alltag braucht.



MfG
Nascar
 
Nascar schrieb:
Hi,
ich wollt ja jetzt fasst sagen auch ein genie kann mal etwas nicht checken aber das mach ichlieber nicht :d
Nein ehrlich gesagt steig ich da voll nicht durch. Sagen wir es mal so. Ich kann PHP zwar nicht alles, aber dennoch das was man für den alltag braucht.



MfG
Nascar

dann poste genau die Zeile die du nicht verstehst

da erklärt sie dir sicher jemand ;)
 
Nascar schrieb:
Hi,
der kalender ist schonmal ganz gut, aber ehrlich gesagt ist er für mich nutzlos weil ich nicht durchsteige wie das ding funktioniert :-(

MfG
Nascar
wenn du stellen nicht verstehst, dann sag was genau, dann werde ich versuchen dir zu erklären was dort abläuft, aber ich werde dir nicht zeile für zeile diesen doch sehr einfachen code erklären.
 
burnout schrieb:
wenn du stellen nicht verstehst, dann sag was genau, dann werde ich versuchen dir zu erklären was dort abläuft, aber ich werde dir nicht zeile für zeile diesen doch sehr einfachen code erklären.



ich könnt den Code ja mal zum besseren Verständnis in perl schreiben :fresse:
 
CharlieB schrieb:
ich könnt den Code ja mal zum besseren Verständnis in perl schreiben :fresse:
ich wäre doch für eine brainfuck oder Ock! portierung...
 
burnout schrieb:
ich wäre doch für eine brainfuck oder Ock! portierung...

brainfuck ? das du das kennst ...
das is schon seeeehr alt schon lang nixmehr davon gehört

Ock sorry aber alles kenn ich nicht, muss ich mal googln ;)
 
ich habe auch mal einen kalendar programmiert in net.data und danach in php. was du wissen musst ist wie die technik funktioniert. ich hab's nicht mehr genau im kopf aber damals hab ich mir halt überlegt: ich brauche 7 spalten (montag-sonntag) und dann kann ein monat maximal 6 wochen haben (wenn der 1. in der 1.woche und der 31. in der 6. liegt). also baue ich erstmal zwei schleifen (ineinander), die dieses zusammenbauen. nun musst du nur noch die tage "verteilen". dann guckst du halt, auf welchen tag der 1. eines monats fällt (mo, di, mi usw). wenn du dann deine schleife beginnst, füllst du ab dem tag alle folgenden felder mit den tagen auf.

berechnungen wie, wieviel tage das jahr hat (schaltjahr), wieviel der monat, usw machst du bevor du das "set" aufbaust. ich nehme mal an, dass du dich schon ein bissl damit auskennst. ich konnte da noch fast kein php, aber die technik kann man in allen sprachen umsetzen. es gibt natürlich auch andere techniken.

wenn du mysql noch dazubenutzt, kannst du dir eigentlich alle berechnungen mit einem sql-statement herausgeben lassen...


nur so eine anregung...

gruß
hostile
 
Zuletzt bearbeitet:
Hi,
ich denke ich weiß jetzt worin mein Problem liegt. Und zwar hat es was mit der for-Schleife zu tun. Ich weiß eigentlich sollte ich die beherschen, aber dennoch hab ich sie nie gebraucht und weiß deshalb nimma wie diese genau funktioniert. Ich werd mir das jetzt gleich noch mal angucken.

Ausser einen Kalender wüsste ich jetzt sogar kein Script welches eine for schleife gebrauchen könnte :-)
Weil ich bin einer von der Sorte, erst wird mit while getestet und wenn while nit geht wird gefragt wie es geht :)
MfG
Nascar
 
ich weiss nicht, ich hab fors noch und nöcher, sind doch extrem praktisch
 
hi,
sag doch mal bitte wo du die zb verwendest. Mysql nehm ich immer while.
For hmmmm kA wo ich die noch verwenden kann

MfG
Nascar
 
datenbank nehm ich immer auch ne for, da mein parser daten im format
PHP:
$arr[user][1]["name"] = "test1";
$arr[user][1]["pass"] = "pass";
$arr[user][2]["name"] = "test2";
$arr[user][2]["pass"] = "pass";
$arr[user][3]["name"] = "test3";
$arr[user][3]["pass"] = "pass";
erwartet, lässt sich mit der for bisl leicher füllen.
Dann ist es noch sehr praktisch wenn du zb. zeilen abwechselnd farbig ausgeben willst
PHP:
for($i = 0; $i < 10; $i++)
{
   if($i % 2 == 0) $bgcolor = "#FFFFFF"; else $bgcolor = "#000000";
   echo "<tr style=\"backgroud-color: $bgcolor;\"><td>bla</td></tr>
} 

und ich glaube in der berufsschule mal gelernt zu haben, dass for schleifen die mutter aller schleifen sind, also die meisten intern zu for umgewandelt werden. was da dran ist weiss ich aber nicht
 
burnout schrieb:
und ich glaube in der berufsschule mal gelernt zu haben, dass for schleifen die mutter aller schleifen sind, also die meisten intern zu for umgewandelt werden. was da dran ist weiss ich aber nicht


hast du nich gut aufgepasst ;)

ein while-Konstrukt ist eigentlich einer for-Schleife vorzuziehen,
allein schon aus Laufzeit gründen.
Das sind Grundlagen aus dem 2ten Semester oder so


beim Code optimieren von vielen Compilern sähe das so aus ...

Code:
//vorher:
for(i=0;i<100;i++) {
        map[i].visited = 0;
    }


//danach
i=99;
    do {
        map[i].visited = 0;
        i--;
    } while(i>=0);



und dekrementierende for-Schleifen sind wiederum schneller als inkrementierende ...
also

Code:
for(i=1000; i!=0 ;i--) j+=i;  //schneller
for(i=0 ;i<1000 ;i++) j+=i;  //langsamer
 
CharlieB schrieb:
Das sind Grundlagen aus dem 2ten Semester oder so
zweites semester halt, wie gesagt, ich hatte nur berufsschule ;)

aber da haben wir die for zuerst gelernt und ich hab dann mal gefragt und mir wurde eben das gesagt.

aber das dekrementierende schneller sind wusste ich nicht.
 
Hi,

dann werd ich mal anfangen einen Kalender zu machen, !!wenn ich es schaffe :)
ich mach das allerdings lieber mit whileschleifen :-)
Grundüberlegung:
- 7 Spalten also 100%/7 = RUND 14%Breite pro Spalte
- verschiedene Monate, Jahre per $_GET anwählbar
- heutiger Tag soll farbig dargestellt werden
- 2 while schleifen (for auch möglich <-- mag ich aber nit so)
Hilfe:
- Wie schaff ich es, dass der Kalender zb erst in Spalte 2 anfängt die tage zu fählen?
PHP:
<?PHP
    if (!isset($_GET["month"])) { $calendar["month"] = gmdate("n", time()); }
	if (!isset($_GET["year"])) {  $calendar["year"]  = gmdate("Y", time()); } 
	$week_day = array(1 => "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag");

	$first_day = date("w",mktime(0,0,0,$calendar["month"], 1, $calendar["year"]));
	$today_day = date("j", time());
    echo '<table border="1" style="border-collapse:collapse;" width="100%">';
    echo '<tr>';
	$d = 1;
	while($d < 8) {
    	echo '    <td>'.$week_day[$d].'</td>';
		$d++;
	}
    echo '</tr>';
    $i = 1;
    while($i < 7) {
        echo '<tr>';
        $j = 1;
        while($j < 8) {
            echo '<td height="100" width="14%" valign="top">';
			
            echo '</td>';
            $j++;
        }
        echo '</tr>';
    $i++;
    }
    echo '</table>';
?>
 
und ich versteh den problem mit for schleifen nicht ;)
 
Hi,
hab heute meinen Kalender soweit erstmal fertig gemacht :-) und das fast ohne fremde hilfe.

PHP:
<?PHP
	$calendar["month"] = (!isset($_GET["month"]))?gmdate("n"):$_GET["month"];
	$calendar["year"]  = (!isset($_GET["year"] ))?gmdate("Y"):$_GET["year"];
	
	if ($calendar['month'] < 1 OR $calendar['month'] > 31) { $error = "Sie müssen einen Monatstag zwischen 1 und 31 wählen."; }
	$week_day = array(0 =>  "Montag",
							"Dienstag", 
							"Mittwoch", 
							"Donnerstag", 
							"Freitag", 
							"Samstag", 
							"Sonntag");
	$month_days = date("t",mktime(0,0,0,$calendar["month"], 1, $calendar["year"]));
	$first_day = date("w",mktime(0,0,0,$calendar["month"],1 ,$calendar["year"]));
	$today_day = date("j", time());
    
	echo '<table border="1" style="border-collapse:collapse;" width="100%">';
    echo '<tr>';
	
	$d = 0;
	while($d < 7) {
    	echo '    <td>'.$week_day[$d].'</td>';
		$d++;
	}
    
	echo '</tr>';
    
	$i = 1;
	$fd = 1;
	$d = 1;
    
	while($i < 7) {
	
        echo '<tr>';
        
		$j = 1;
        while($j < 8) {
            
			echo '<td height="100" width="14%" valign="top">';
			
			if($fd == $first_day || $fd > $first_day) {
				if($month_days >= $d) {
					echo $d;
					$d++;
				}
			}
            echo '</td>';
            $j++;
			$fd++;
        }
        echo '</tr>';
    $i++;
    }
    echo '</table>';
?>

MfG
Nascar
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh