PHP + JS - Kalender

Huhu,

wer kennt es nicht? Ein kleiner Kalender, der alle eingetragenen Termine anzeigt.

Genau so etwas möchte ich bauen. Soweit so gut, einen Monat komplett mit Terminen über PHP auszugeben, ist ja nun nicht das Problem.

Jedoch würde ich gerne zwischen den Monaten wechseln können, wenn möglich mit einer JavaScript-Funktion.

D.h. die Frage ist, wie kann ich mit einer JS-Funktion einen durch PHP generierten Text anzeigen lassen?

Ich hoffe, ihr versteht, was ich meine.

Ich weiß was du meinst, aber es wäre am besten wenn du erstmal den Code postest!

ich würde an deiner Stelle zu Asynchronous JavaScript And XML übergehen :arrow: AJAX

Damit kannst du mittels JavaScript im Hintergrund eine PHP Datei laden, und diese dann ausgeben. Also praktisch mit JavaScript eine Seite aufrufen die einen anderen Monat ausgibt, und diese dann auf der angezeigten Seite einfügen ohne reload o.ä.

Nun, bisher habe ich noch keinen Code.

Ich programmiere nichts, von dem ich vorher schon weiß, dass es nicht klappt.

AJAX also. Habe ich generell nichts dagegen, krieg ich vielleicht noch einen Denkanstoss? Einen in Richtung AJAX-Referenz mit entsprechender Funktion o.ä.? :')

also Ajax ist prinzipiell nur das zusammenspiel von JavaScript und PHP.
Du solltest als erstes eine PHP Datei erstellen die eigenständig deinen komplett formatierten Kalender ausgibt, und zwar so, dass du mit GET übergeben kannst, welcher monat angezeigt wird. ZB. so: kalender.php?monat=5 sollte also den Mai anzeigen.

In eine andere Datei kommt nun der Javascript Code, indem du die Seite aufrufst. Leider gibt es noch wenig zu Ajax, du solltest versuchen das hier auf dein Problem anzuwenden. Ich werde mich nachher auch mal ransetzen und dir den code schicken.

devblog.de » Tutorial: Shoutbox als AJAX-Anwendung

Danke für den Link.

Ich habe mir das gerade mal an einem Clanportal angeschaut. In diesem wird es so gemacht:

Es gibt eine lib.js, die in etwa so aussieht:

eval(unescape('[...]'))

[…] steht dabei für unheimlisch viele Zeichen.

Wie gesagt, das wird eingebunden und dann wird ganze einfach so gearbeitet:

var myAjax = new Ajax.Updater('[ID]', '[PHP-Datei][Parameter]', {method: 'get'});

Ich habe diese lib.js mal kopiert, bei mir eingefügt und dann einen Testversuch mit „new Ajax.Updater“ gemacht, funktioniert wunderbar.

Jedoch gehe ich davon aus, dass ich den Code der lib.js nicht klauen darf, oder?

nein sicherlich nicht, ist für deine Aufgabe aber auch relativ übertrieben

function XMLObject()
{
  var xmlHttp = false;
  try
  {
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e)
  {
    try
    {
      xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e)
    {
      xmlHttp  = false;
    }
  }
  if (!xmlHttp  && typeof XMLHttpRequest != 'undefined')
  {
    xmlHttp = new XMLHttpRequest();
  }
  return(xmlHttp);
}
function getMonth(month)
{
  gmonth = XMLObject()
  if (gmonth)
  {
    gmonth.open('GET', 'kalender.php?monat='+month, true);
    gmonth.onreadystatechange = showMonth
    gmonth.send(null);
  }
}
function showMonth()
{
  if (gmonth.readyState == 4)
  {
    document.getElementById('kalender').innerHTML = gmonth.responseText;
  }
}

Wenn du jetzt wie bereits geschrieben eine php datei hast, die den kalender generiert und je nach übergabe den monat anzeigt, kannst du nun eine html datei erstellen mit einer

und den jeweiligen Monat aufrufen Mai anzeigen

Oki, dankeschön. Werde es gleich versuchen :')

[html]

[...]
[/html] [code] function get_kalender(month, year) { kalender = XMLObject();
if(kalender)
{
	kalender.open("GET", "../kalender/minikalender.php?mkm=" + month +"&mky=" + year, true);
	kalender.onreadystatechange = show_kalender();
	kalender.send(null);
}

}

function show_kalender()
{
if(kalender.readyState == 4)
{
document.getElementById(‚index_kalender‘).innerHTML = kalender.responseText;
}
}
[/code]
In meiner lib.js steht die Funktion XMLObject(). Die Datei kalender/minikalender.php existiert.

Was passiert? Im Prinzip gar nichts. Die Fehler-Konsole von Firefox zeigt mir keine Fehler an und der Kalender verändert sich kein bißchen.

document.write(kalender.responseText);

zeigt nichts an, es lädt nur unendlich lange.

document.getElementById('index_kalender').innerHTML = 'test';

verändert ebenfalls nichts.

if(kalender)

Die Anweisung wird erfüllt, daran kann es also nicht liegen.

kalender/minikalender.php sieht bisher so aus (als Test):
[php]<?php echo 'test'; ?>[/php]

Ich hoffe, ihr oder du, Frank, könnt/kannst mir helfen.