Antworten auf deine Fragen:
Neues Thema erstellen

PHP Kalender feinschliff hilfe benötigt

AbbySu

Noch nicht viel geschrieben

Achsooo, ja als ich den Versuch gemacht hatte, hab ich deinen Code unter den anderen eingefügt, darum klappte es dann also. Dann verstehe ich das ja nun auch, super!

Ja und mit "dem zweiten Hinweis" meinte ich eigentlich den, den du mir als erstes erklärt hattest... hab ich mich blöd ausgedrückt, sry ;)

1000 Dank für deine Hilfe!

[Beitrag 2]
*hüstel*
Jetzt ist mir da nicht doch noch eine Frage eingefallen... unglaublich.

Ich hatte mir ausgemalt den Hintergrund der Monatsauswahlen mit einem img zu versehen und nach einer Weile bin ich dann drauf gekommen das Hintergrundbild den li' zuzuweisen und nicht den a's. Nur jetzt verschiebt die ul den darunterliegenden Kalender...

Ich werd jetzt zu Bett und ich habe auch noch nicht alles durchgetestet, doch evt brauche ich da nochmal nen Tipp. Vielleicht ein float Problem oder ich muss die ul in das #k-Div legen...

Naja, gute Nacht erstmal
 
Zuletzt bearbeitet von einem Moderator:

AbbySu

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Guten Morgen!

So, ich habe dann mal weiter probiert und bin zur Lösung meines Problems gelangt. Man muss eben alles nur an den richtigen Platz mit den richtigen Abständen einfügen. Zudem sah das oben drüber nicht gut aus, darunter macht es sich besser.

Ich hoffe dass es den Usern ausreicht immer die nächsten sechs Monate vom heutigen Tag und nicht vom ausgewählten Monat an, auswählen zu können. Keine ahnung wie rechtzeitig Veranstalter sowas planen... aber unten drunter kann ich ja sonst auch noch auf mehr als sechs Monate umstellen ohne das Design kaputt zu machen. Allerdings fehlt dann eigentlich die Jahreszahl dazu... hach ich feinschleife noch ein wenig daran ;)

[Beitrag 2, weil Lösung gefunden]

Ich habe mich dann mal über den Code hergemacht und überlegt was davon wohl verwendet werden kann um auch noch das Jahr ran zu hängen und es ist mir gelungen:
PHP:
echo "<li><a href=\"".$_SERVER['PHP_SELF']."?m=".$new_month."&amp;y=".$year."\">".$dD_months."</a>"."<br />".$year."</li>";
Ich kann mich zwar noch nicht entscheiden, wieviele Monate ich anzeigen lasse, doch ich denke sechs werden ausreichen.

Und nochmal kann ich mich nur bedanken für die ganze Hilfe!

[Beitrag 3 - noch was eingefallen]

Als ich dann auf der Seite einen einletenden Text schreiben wollte, fiel mir auf, dass ich keine Ahnung habe was man da am besten schreibt... ach nee, dass es praktisch wäre, wenn man sich auch direkt einen Monat anzeigen lassen könnte. :D

Dann genügen nämlich die sechs Monate Vorauswahl und die User können sich ganz einfach den gewünschten Monat in welchem Jahr auch immer anzeigen lassen. Ich glaube das wäre gut...
 
Zuletzt bearbeitet:

AbbySu

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

So, ich glaube ich habe genug geforscht um mich jetzt doch noch mal an euch zu wenden.

Also wie gesagt wollte ich noch zusätzlich eine Direktauswahl von einem beliebigen Monat und einem Jahr gestalten. Jetzt habe ich bereits die benötigten Auswahlen erstellt und dank eines anderen Skipts Ideen gewonnen das umzusetzen, doch auch nach langem und innigen studieren der hier für mich von blastermaster ertsellten Monatsauswahl will mir nicht einfallen, wie ich es schaffe den Kalender mit dieser Auswahl zu verbinden...

Ich dachte ja ich müsste die Lösung hier finden:
PHP:
if($new_month == $key+1) echo "<li><a href=\"".$_SERVER['PHP_SELF']."?m=".$new_month."&amp;y=".$year."\">".$dD_months."</a>"."<br />".$year."</li>";
(Teil von Blasermasters Code)

Doch irgendwie... nein... kein Plan... allerdings habe ich den original Code auch ordentlich auseinander gerupft und auch bei dem nicht verstanden wo die Verbindung entsteht.

Hier nun mal der Code, der bei mir noch übrig ist. Zumindest funktioniert hier ja schon ein bisschen was.

Das kam oben im PHP Bereich dazu:
PHP:
    if($_GET[anzeigen]==1) {
        $monat = $_GET[monat];
        $jahr = $_GET[jahr];
    }
    else {
        $monat = date("m");
        $jahr = date("Y");
    }
Und das unmittelbar über dem <div id="k"> in dem sich der Kalender befindet:
PHP:
        <form name="formkalender" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <select name="monat" class="SELECTFELD">
                <option value="1" <?php if($monat == 1) echo "selected style='background-color=#99CCFF;'"?>>Januar</option>
                <option value="2" <?php if($monat == 2) echo "selected style='background-color=#99CCFF;'"?>>Februar</option>
                <option value="3" <?php if($monat == 3) echo "selected style='background-color=#99CCFF;'"?>>M&auml;rz</option>
                <option value="4" <?php if($monat == 4) echo "selected style='background-color=#99CCFF;'"?>>April</option>
                <option value="5" <?php if($monat == 5) echo "selected style='background-color=#99CCFF;'"?>>Mai</option>
                <option value="6" <?php if($monat == 6) echo "selected style='background-color=#99CCFF;'"?>>Juni</option>
                <option value="7" <?php if($monat == 7) echo "selected style='background-color=#99CCFF;'"?>>Juli</option>
                <option value="8" <?php if($monat == 8) echo "selected style='background-color=#99CCFF;'"?>>August</option>
                <option value="9" <?php if($monat == 9) echo "selected style='background-color=#99CCFF;'"?>>September</option>
                <option value="10" <?php if($monat == 10) echo "selected style='background-color=#99CCFF;'"?>>Oktober</option>
                <option value="11" <?php if($monat == 11) echo "selected style='background-color=#99CCFF;'"?>>November</option>
                <option value="12" <?php if($monat == 12) echo "selected style='background-color=#99CCFF;'"?>>Dezember</option>
            </select>
            
            <select name="jahr" style="width: 70px" class="SELECTFELD">
                <?php
                    // Anz. der Jahre nach heute
                    $anz_jahre = 4;
                    $jahr = date("Y");

                    for($i = $jahr; $i <= $jahr + $anz_jahre; $i++) {
                        if($i == $jahr)
                        echo "<option value=\"".$i."\" selected style='background-color=#99CCFF;'>".$i."</option>";
                        else
                        echo "<option value=\"".$i."\">".$i."</option>";
                    }
                ?>
            </select>
            
            <input type="submit" name="b_anzeigen" value="Monat anzeigen" class="BUTTON">
        </form>
 

blastermaster

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

du prüfst etwas was nie erfüllt werden kann
PHP:
if($_GET[anzeigen]==1) {
weil dein Formular ewas ganz anderes versendet
HTML:
<input type="submit" name="b_anzeigen" value="Monat anzeigen" class="BUTTON">
an den Browser wird folgender Link übermittelt - name_des_scripts.php?monat=6&jahr=2016&b_anzeigen=Monat+anzeigen
Also müsste die Überprüfung eigentlich so lauten
PHP:
if($_GET[b_anzeigen]=="Monat+anzeigen") {
das ganze kannst du dir auch sparen, und prüfe gleich auf Jahr und Monat und auch gleich Sicherheitstechnisch mit intval() -> nur Zahlen zulässig
PHP:
if(isset($_GET['m'])) $monat = intval($_GET['m']);
else $monat = date("m");
    
if(isset($_GET['y'])) $jahr = intval($_GET['y']);
else $jahr = date("Y");
Desweiteren überschreibst du die Variable $jahr die am Anfang des Scriptes gesetzt wird mit dieser hier (dewegen wurde auch das gewählte Jahr nicht selectiert)
PHP:
$jahr = date("Y");

for($i = $jahr; $i <= $jahr + $anz_jahre; $i++) {
Diese Variable müsste also umbenannt werden, z.B.
PHP:
$jahrcurrent = date("Y");
 for($i = $jahrcurrent; $i <= $jahrcurrent + $anz_jahre; $i++) {
 
Zuletzt bearbeitet:

AbbySu

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Hallo Blastermaster,

also erstmal habe ich mir deinen Beitrag x-Mal durchgelesen und dann versucht in mein Code einzubauen, aber das Ergebnis funktioniert nicht... demzufolge habe ich irgendwas falsch gemacht.

Nur was?

Ich habe den oberen PHP Teil komplett durch deinen ersetzt
PHP:
if(isset($_GET['monat'])) $monat = intval($_GET['monat']);
else $monat = date("m");
    
if(isset($_GET['jahr'])) $jahr = intval($_GET['jahr']);
else $jahr = date("Y");

Anschließend habe ich die $jahr Variable unten und den Teil in der "for"-Klammer so wie bei dir gestaltet.

Trotzdem wechselt er den kalender nicht auf den gewünschten Monat.
 

blastermaster

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Habe nochmal drübergeschaut und gesehen das die Calendar Class aus dem $_GET eigentlich dieses brauch
Code:
name_des_scripts.php?[B]m[/B]=6&[B]y[/B]=2016
aber das geliefert bekommt
Code:
name_des_scripts.php?[B]monat[/B]=6&[B]jahr[/B]=2016
Das heißt du mußt die Namen deiner Select-Felder ändern. Für den Monat:
HTML:
<select name="m">
und entsprechend für das Jahr
HTML:
<select name="y">
ebenso die Überprüfung der $_GET Übermittlung - habe es in meinem vorherigen Post korregiert
 

AbbySu

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Jo, funktioniert, danke!

Aber kannst du mir auch sagen warum er das braucht? Also sind das festgelegte Variablen oder so, die das $_GET vorgibt oder liegt das an meinem restlichen Skript?

Und dann habe ich einfach mal getestet, ob ich das b_anzeigen umbenennen kann. Das hat auch funktioniert. Also wozu der name?

Ganz lieben Gruß
 

blastermaster

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Aber kannst du mir auch sagen warum er das braucht? Also sind das festgelegte Variablen oder so, die das $_GET vorgibt oder liegt das an meinem restlichen Skript?
ja das sind festgelegte Variablen in der calendar.class.php
Zeile 25
PHP:
protected $getParams = array('month' => 'm', 'year' => 'y');
Und dann habe ich einfach mal getestet, ob ich das b_anzeigen umbenennen kann. Das hat auch funktioniert. Also wozu der name?
Kannst du auch komplett weglassen - Daten per $_GET werden direkt an die URL angehangen
 

AbbySu

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Achso. Hm, dass mir das Array nicht aufgefallen ist... danke.

Ich bin immer wieder fasziniert, doch so langsam lichten sich die Felder.
Zum Glück gibt es Menschen wie dich, die einem beim Verstehen helfen :)
 

AbbySu

Noch nicht viel geschrieben

AW: PHP Kalender feinschliff hilfe benötigt

Hi mal wieder :D

Mir ist durch die Validierung meiner Seite aufgefallen, dass der Autor meines Kalender das "longdesc" Attribut in einen Verweis eingebaut hat... ich habe mir die Stelle herausgesucht, an dem das passiert und es wird offenbar an keiner anderen Stelle in keinem anderen Dokument verwendet.

Kann ich dass dann einfach herauslöschen?
Ich hab ein bisschen Angst einen Fehler einzubauen, der mir vielleicht auch erst gar nicht auffällt, schließlich muss es doch einen Grund haben, dass der Autor beschlossen hat es mit aufzunehmen...

Hier mal der PHP Teil, in dem das "longdesc" eingebunden wird:
PHP:
private function htmlDay($val, $css = '', $holidays = array())
    {
        $css = ($css == '') ? '' : ' ' . $css;
        
        $holiday = array('name' => '', 'class' => '', 'url' => '', 'url2' => '');
        
        foreach($holidays as $holi)
        {
            $holiday['name'] .= $holi['name'] . $this->holiSep;
            $holiday['class'] .= $holi['class'] . ' ';
            $holiday['url'] = $holi['url'];
            $holiday['url2'] .= $holi['url'] . $this->holiSep;
        }
        
        $holiday['name'] = substr($holiday['name'], 0, strlen($holiday['name']) - strlen($this->holiSep));
        $holiday['class'] = substr($holiday['class'], 0, strlen($holiday['class']) - 1);
        $holiday['url2'] = substr($holiday['url2'], 0, strlen($holiday['url2']) - strlen($this->holiSep));
        
        if($holiday['name'] != '') {
            $return = '<td class="'.$this->classes['dayA'].$css.'">'.$this->n;
            
            if($holiday['url'] != '') {
                $longdesc = 'longdesc="';
                
                if($this->showAllUrls == true) {
                    $longdesc .= $holiday['url2'];
                }
                
                $longdesc .= '"';
                
                $return .= '<a href="'.$holiday['url'].'" '.$longdesc.' title="'.$holiday['name'].'" class="'.$holiday['class'].'" onclick="this.target=\'_self\'">'.$this->n.''.$val.$this->n.'</a>'.$this->n;
            }
            else {
                $return .=    '<span title="'.$holiday['name'].'"class="'.$holiday['class'].'">'.$this->n.''.$val.$this->n.'</span>';    
            }
            
            $return .= '</td>'.$this->n;
            
            return $return;
        }
        else {
            return '<td class="'.$this->classes['dayA'].$css.'">'.$this->n.''.$val.$this->n.'</td>'.$this->n;
        }
    }
Und so stell ich mir vor müsste das anschließend funktionieren:
PHP:
private function htmlDay($val, $css = '', $holidays = array())
    {
        $css = ($css == '') ? '' : ' ' . $css;
        
        $holiday = array('name' => '', 'class' => '', 'url' => '');
        
        foreach($holidays as $holi)
        {
            $holiday['name'] .= $holi['name'] . $this->holiSep;
            $holiday['class'] .= $holi['class'] . ' ';
            $holiday['url'] = $holi['url'];
        }
        
        $holiday['name'] = substr($holiday['name'], 0, strlen($holiday['name']) - strlen($this->holiSep));
        $holiday['class'] = substr($holiday['class'], 0, strlen($holiday['class']) - 1);
        
        if($holiday['name'] != '') {
            $return = '<td class="'.$this->classes['dayA'].$css.'">'.$this->n;
            
            if($holiday['url'] != '') {                
                $return .= '<a href="'.$holiday['url'].'" '.'title="'.$holiday['name'].'" class="'.$holiday['class'].'" onclick="this.target=\'_self\'">'.$this->n.''.$val.$this->n.'</a>'.$this->n;
            }
            else {
                $return .=    '<span title="'.$holiday['name'].'"class="'.$holiday['class'].'">'.$this->n.''.$val.$this->n.'</span>';    
            }
            
            $return .= '</td>'.$this->n;
            
            return $return;
        }
        else {
            return '<td class="'.$this->classes['dayA'].$css.'">'.$this->n.''.$val.$this->n.'</td>'.$this->n;
        }
    }

Irgendwie fürchte ich mich ein wenig es einfach auszuprobieren... mal sehen, ob ich gleich noch Mut entwickel :p
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben