Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Tage hervorheben

Einklappen

Neue Werbung 2019

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

  • Mehrere Tage hervorheben

    Hallo PHP-Leute,
    habe eine kleines Problem und zwar habe ich ein Kalender der mir die Urlaubstage einträgt von mir. Die Einträge speichere ich in eine DB. Nun zu meinem Problem wie bekomme ich es hin das er mir alle Tage meines Kalenders makiert in der ich Urlaub habe und nicht nur den Ersten Tag.
    PHP-Code:
    <?php
        
    include("connection.php");
        include(
    "head.html");
        Include(
    "ueberpruefe_dmy.php");
        include(
    "insert_into_db.php");

        
    date_default_timezone_set('Europe/Berlin');
    ?>
            <table border='1' align='center'>
                <tr>
                    <td><input class='goLastMonat' type='button' value='<' name='back' onclick="goLastMonat(<?php echo $monat.",".$jahr;?>)"></td>
                    <td colspan='5' align="center" valign="middle"><?php echo $monate.", ".$jahr;?></td>
                    <td><input class='goNextMonat' type='button' value='>' name='next' onclick="goNextMonat(<?php echo $monat.", ".$jahr;?>)"></td>
                </tr>
                <tr>
                    <td width='50px'>Mo</td>
                    <td width='50px'>Di</td>
                    <td width='50px'>Mi</td>
                    <td width='50px'>Do</td>
                    <td width='50px'>Fr</td>
                    <td width='50px'>Sa</td>
                    <td width='50px' style="color: red">So</td>
                </tr>
                <?php 

        
                    
    //erstellung der Tage
                    
                    
    echo "<tr>";
                    for(
    $i 1$i $tage+1$i++, $zaehler++)
                    {
                        
    $timeStamp strtotime("$jahr-$monat-$i");
                        if(
    $i == 1)
                        {
                            
    $ersterTag date("w",$timeStamp);
                            
    $ersterTag--;
                            if(
    $ersterTag<0)
                            
    $ersterTag=6;
                            for(
    $j 0$j $ersterTag$j++, $zaehler++)
                            {
                                echo 
    "<td>&nbsp;</td>";
                            }
                        }
                        if(
    $zaehler %==0)
                        {
                            echo
    "<tr></tr>";
                        }
                        
    $monatstring $monat;
                        
    $monatlaenge strlen($monatstring);
                        
    $tagstring $i;
                        
    $taglaenge strlen($tagstring);
                        if(
    $monatlaenge <= 1)
                        {
                            
    $monatstring ="0".$monatstring;
                        }
                        if(
    $taglaenge <= 1)
                        {
                            
    $tagstring ="0".$tagstring;
                        }

                        
    $heutedatum date("Y-m-d");
                        
    $datum_vergleichen $jahr .'-'.$monat'-'.$tagstring;
                        echo 
    "<td align='center' ";
                        if(
    $heutedatum == $datum_vergleichen)
                        {
                            
    //Aktuelles Datum farblich abheben
                            
    echo "class='heute'";
                        }
                        else
                        {
                            
    //Termine farblich abheben

                            
    $sql="SELECT * FROM tbl_Urlaubsplan WHERE von='$datum_vergleichen'";
                            
                            
    $ist_termin=mysqli_num_rows(mysqli_query($verbindung,$sql));
                            if(
    $ist_termin >=1)
                                {
                                    echo 
    "class='termin'";
                                }
                        }
                        include (
    "abfragen/feiertage.php");
                        echo
    "><a href='".$_SERVER['PHP_Self']."?month=".$monatstring."&day=".$tagstring."&year=".$jahr."&v=true'>".$i."</td>";
                        
                    }
                    echo
    "</tr>";
                
    ?>
            </table>
            <?php 
                
    include("antraege_zeigen.php");
                include(
    "footer.html");
            
    ?>

  • #2
    Bei laengeren Zeitspannen brauchst du Zwei Zeitpunkt d.h. musst da dann die Daten ausrechnen bzw. die tage(Anzahl), derrer, die makiert werden sollen.
    http://www.php-resource.de/forum/php...-ausgeben.html

    In einer while schleife kannst du dann alle daten eines jahres ausgeben, bis das naechste jahr erreicht ist und jedes mahl via db. eine abfrage taetigen, ob hierbei ein termien oder eine zeitspanne gegeben ist...

    weiste wie ich das meine?

    in deinem Fall der programmierung muesste das umsetzen sogar noch leichter sein...
    Ein tipp.. Du brauchst bei der umsetzung einer tagesrechnung eine variable, die runter gezaehlt wird um nicht am ende tausend makierte felder zu haben

    Kommentar


    • #3
      Zitat von lucienn3 Beitrag anzeigen
      Bei laengeren Zeitspannen brauchst du Zwei Zeitpunkt d.h. musst da dann die Daten ausrechnen bzw. die tage(Anzahl), derrer, die makiert werden sollen.
      http://www.php-resource.de/forum/php...-ausgeben.html

      In einer while schleife kannst du dann alle daten eines jahres ausgeben, bis das naechste jahr erreicht ist und jedes mahl via db. eine abfrage taetigen, ob hierbei ein termien oder eine zeitspanne gegeben ist...

      weiste wie ich das meine?

      in deinem Fall der programmierung muesste das umsetzen sogar noch leichter sein...
      Ein tipp.. Du brauchst bei der umsetzung einer tagesrechnung eine variable, die runter gezaehlt wird um nicht am ende tausend makierte felder zu haben
      Leider habe ich nicht rtichtig verstanden was du meinst

      Kommentar


      • #4
        Glaub die einfachste Methode ist wenn du jeden Tag per while-schleife ausliest und dan halt mit einer if abfrage überprüfst ob ein timestamp vorhanden ist und je nach dem lässt du das hervorheben oder nicht

        Kommentar


        • #5
          Zitat von kevbog Beitrag anzeigen
          Glaub die einfachste Methode ist wenn du jeden Tag per while-schleife ausliest und dan halt mit einer if abfrage überprüfst ob ein timestamp vorhanden ist und je nach dem lässt du das hervorheben oder nicht
          kann es sein das du den code nicht angeschaut hast ich mache das doch nur nicht mit einer while schleife.
          PHP-Code:
          //WENN Aktuelles Datum DANN farblich abheben
                              
          if($heutedatum == $datum_vergleichen)
                              {
                                  
                                  echo 
          "class='heute'";
                              }
          // WENN Termin in der DB DANN farblich abheben
                              
          else
                              {
                                  
          //Termine farblich abheben

                                  
          $sql="SELECT * FROM tbl_Urlaubsplan WHERE von='$datum_vergleichen'";
                                  
                                  
          $ist_termin=mysqli_num_rows(mysqli_query($verbindung,$sql));
                                  if(
          $ist_termin >=1)
                                      {
                                          echo 
          "class='termin'";
                                      }
                              } 

          Kommentar


          • #6
            Man muss doch nur prüfen ob das aktuelle Datum zwischen Urlaubsanfang und Urlaubsende liegt..

            Datum >= Urlaubsanfang und Datum <= Urlaubsende ...

            sollte nicht so schwer sein.
            Vieles kann, wenig muss.

            Kommentar


            • #7
              Irgendwie stehe ich auf dem schlauch...
              habe jetzt das versucht funktioniert jedoch nicht
              PHP-Code:
              if($heutedatum>=$von && $heutedatum<=$bis)
                                      {
                                      echo 
              "class='termin'";
                                      } 

              Kommentar


              • #8
                If = 1 mal
                while = x mal

                vllt hilfts dir weiter

                Kommentar


                • #9
                  PHP-Code:
                  for($i 1$i $tage+1$i++, $zaehler++)
                                  {
                                      
                  $timeStamp strtotime("$jahr-$monat-$i");
                                      if(
                  $i == 1)
                                      {
                                          
                  $ersterTag date("w",$timeStamp);
                                          
                  $ersterTag--;
                                          if(
                  $ersterTag<0)
                                          
                  $ersterTag=6;
                                          for(
                  $j 0$j $ersterTag$j++, $zaehler++)
                                          {
                                              echo 
                  "<td>&nbsp;</td>";
                                          }
                                      }
                                      if(
                  $zaehler %==0)
                                      {
                                          echo
                  "<tr></tr>";
                                      }
                                      
                  $monatstring $monat;
                                      
                  $monatlaenge strlen($monatstring);
                                      
                  $tagstring $i;
                                      
                  $taglaenge strlen($tagstring);
                                      if(
                  $monatlaenge <= 1)
                                      {
                                          
                  $monatstring ="0".$monatstring;
                                      }
                                      if(
                  $taglaenge <= 1)
                                      {
                                          
                  $tagstring ="0".$tagstring;
                                      }

                                      
                  $heutedatum date("Y-m-d");
                                      
                  $datum_vergleichen $jahr .'-'.$monat'-'.$tagstring;
                                      echo 
                  "<td align='center' ";
                                      if(
                  $heutedatum == $datum_vergleichen)
                                      {
                                          
                  //Aktuelles Datum farblich abheben
                                          
                  echo "class='heute'";
                                      }
                                      else
                                      {
                                          
                  //Termine farblich abheben

                                          
                  $sql="SELECT * FROM tbl_Urlaubsplan WHERE von='$datum_vergleichen'";
                                          
                                          
                  $ist_termin=mysqli_num_rows(mysqli_query($verbindung,$sql));
                                          if(
                  $ist_termin >=1)
                                              {
                                                  echo 
                  "class='termin'";
                                              }
                                      } 
                  Hat einer ne Ahnung wo ist hinschreiben muss es funktioniert leider immer noch nicht

                  Kommentar


                  • #10
                    Das wär lustig wenn es nicht so traurig wär...

                    Zitat von ac2111 Beitrag anzeigen
                    Irgendwie stehe ich auf dem schlauch...
                    habe jetzt das versucht funktioniert jedoch nicht
                    PHP-Code:
                    if($heutedatum>=$von && $heutedatum<=$bis)
                                            {
                                            echo 
                    "class='termin'";
                                            } 
                    Du musst schon verraten wie du $heutedatum, $von, $bis befüllst.
                    Oder besser noch gib dir den Inhalt der Variablen einfach mal aus...
                    Und mit "funktioniert jedoch nicht" kann ich nichts Anfangen.

                    @kevbog
                    Man brauch für das Problem keine (weitere) Schleife es werden doch schon alle Tage durchlaufen die von Relevanz sind.
                    Vieles kann, wenig muss.

                    Kommentar


                    • #11
                      Zitat von Varon Beitrag anzeigen
                      Das wär lustig wenn es nicht so traurig wär...



                      Du musst schon verraten wie du $heutedatum, $von, $bis befüllst.
                      Oder besser noch gib dir den Inhalt der Variablen einfach mal aus...
                      Und mit "funktioniert jedoch nicht" kann ich nichts Anfangen.

                      @kevbog
                      Man brauch für das Problem keine (weitere) Schleife es werden doch schon alle Tage durchlaufen die von Relevanz sind.
                      Heutedatum ist wie im Code schon steht mit dem aktuellen datum deklariert.
                      $von= ist ein eintarg aus der DB genau so wie $bis

                      Kommentar


                      • #12
                        Das ist gar nicht so schwer, du musst nur drauf achten wie du die Werte die aus der DB kommen mit den Werten die du anzeigst, oder wie auch vergleichen willst.
                        Da musst du einen gemeinsamen Nenner finden.

                        Dann weiter.

                        1.) Lies die Daten aus der Db aus und schreibe sie in ein Array, mysqli und auch PDO bieten dir da so etwas wie ne Methode die fetchAll() heist.

                        2.) arbeite das Array am besten mit einer foreach() Schleife ab, die eigenet sich hervorragend für assoziatzive Arrays.

                        2.) Vergleiche die Werte im Schleifendurchlauf und wenn IF true ergibt (das bedeutet die Bedingung ist wahr), dann binde eine jeweilige CSS Klasse ein.

                        Das war es, mehr ist nicht dazu.

                        Gruß der Litter
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        [URL]http://www.lit-web.de[/URL]

                        Kommentar


                        • #13
                          Zitat von litterauspirna Beitrag anzeigen
                          Das ist gar nicht so schwer, du musst nur drauf achten wie du die Werte die aus der DB kommen mit den Werten die du anzeigst, oder wie auch vergleichen willst.
                          Da musst du einen gemeinsamen Nenner finden.

                          Dann weiter.

                          1.) Lies die Daten aus der Db aus und schreibe sie in ein Array, mysqli und auch PDO bieten dir da so etwas wie ne Methode die fetchAll() heist.

                          2.) arbeite das Array am besten mit einer foreach() Schleife ab, die eigenet sich hervorragend für assoziatzive Arrays.

                          2.) Vergleiche die Werte im Schleifendurchlauf und wenn IF true ergibt (das bedeutet die Bedingung ist wahr), dann binde eine jeweilige CSS Klasse ein.

                          Das war es, mehr ist nicht dazu.

                          Gruß der Litter
                          Danke für deine Hilfe habe es jetzt geschafft mehrere Tag zu makieren nur jetzt habe ich ein neues Problem jetzt makiert er mir alle Tage also wirklich alle Tage im Jahr
                          PHP-Code:
                                              $sql="SELECT bis FROM tbl_Urlaubsplan";
                                              
                          $array mysqli_fetch_all(mysqli_query($verbindung,$sql));
                                              
                                              foreach(
                          $array as $von => $value)
                                              {    

                                                  echo 
                          "class='termin'";

                                              } 

                          Kommentar


                          • #14
                            Ja es wird genau das gemacht was du programmiert hast. Du brauchst eine if / else abfrage kontrollstruktur um das verhalten zu beeinflussen.
                            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                            [URL]http://www.lit-web.de[/URL]

                            Kommentar

                            Lädt...
                            X