tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
692
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    Hallo,

    ich habe ein Script in dem ich bestimmte Tage aus der Datenbank abfrage. Wenn diese in der Datenbank eingetragen sind sollen diese bei der Ausgabe gefärbt werden. Das klappt soweit auch alles wunderbar nur werden zu den gefärbten Tagen die gleichen Tage angezeigt die noch ungefärbt sind. D.h. er wiederholt die Tage.

    Bsp.: 4(gefärbt) 4 (normal) | 5(gefärbt) 5 (normal) usw..

    Wie kann ich die doppelten Tage die ungefärbt sind, also nicht aus der DB kommen, aussortieren um sie nicht zwischen den gefärbten anzuzeigen?

    Hier das Script:
    PHP-Code:
    for ($day=1$day<=$total_days$day++)
            {
              if (
    $day_highlight && ($day == $n_day) && ($month == $n_month) && ($year == $n_year))
              {
            echo 
    "\t";
            echo 
    '</td>
                   <td id="day_'
    .$day.'" style="'.$options['today_class'].'">'.$day.'';
                   echo 
    "\n";                   
            }                
        else {
            
            
    $query mysql_query("SELECT * FROM XXXXX WHERE Titel='$Titel'order by Datum2",$db);
            
    $num=mysql_NumRows($query);
            
    $i=0; while ($i<$num):
            
    $row mysql_fetch_array($query);
            
    $Datum1=makedate($row[Datum1]);
            
    $Datum2=makedate($row[Datum2]);
                    
            if ((
    $day == $Datum2 [1]) && ($month == $Datum2 [2])&& ($year == $Datum2 [3])) {
              echo 
    "\t";
              echo 
    '</td>
               <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
               echo 
    "\n";           
            }                 
            
    $i++; endwhile; 
                echo 
    "\t";
                echo 
    '</td>
                <td id="day_'
    .$day.'">'.$day.'</td>';
                 echo 
    "\n";
               }
                   
    $day_offset++;
                if (
    $day_offset == 7)   {
                
    $day_offset 0;
                if (
    $day $total_days)
               {
                   echo 
    "</tr>\n<tr>";
                }
               } 
    Vielleicht hat jemand von Euch eine Idee oder einen Hinweis für mich.

    Danke und schöne Grüße
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wäre noch interessant, zu wissen welche Style, dass der gefärbte ist. (oder halt welcher echo-Block in deinem Code.

    Unabhängig davon. Warum gehst du die Schlaufe mit den DB-Resultate für jeden $day durch?
    Ich versteh nicht, was dein Code machen sollte. Schreibe doch mal einige Kommentarzeilen rein. Beschreibe all deine Variablen (zB. $n_day, $month, etc), denn so seh ic nicht, was da eigentlich verglichen wird.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    Hallo,

    vielen Dank für Deine Antwort.

    der gefärbte Block ist
    style="'.$options['block_class'].'"

    Ich hole erst die Tage aus der Datenbank die eingetragen wurden um zu zeigen, dass dort gebucht wurde. Diese Tage sollen dann im Kalender gefärbt werden. Das geht auch soweit, nur werden auch die Tage angezeigt, die nicht gefärbt sind.

    Die Färbung der Tage geschieht hier:

    PHP-Code:
     if (($day == $Datum2 [1]) && ($month == $Datum2 [2])&& ($year == $Datum2 [3])) {
              echo 
    "\t";
              echo 
    '</td>
               <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
               echo 
    "\n";           
            }                 
            
    $i++; endwhile; 
    Die Frage ist, wie kann ich den anderen doppelten Tagen sagen, dass sie nicht angezeigt werden sollen?

    hier ist mal das ganze Script:
    PHP-Code:
    <?PHP        

        $month 
    = isset($_GET['month']) ? intval($_GET['month']) : date('n');
        
    $year = isset($_GET['year']) ? intval($_GET['year']) : date('Y');
        
        
    $options['today_class'] = "background-color:#008bb8; font-weight:bold; color:#fff;";
        
    $options['block_class'] = "background-color:#ab0000; font-weight:bold; color:#fff;";
        
    $weekdays = array('So''Mo''Di''Mi''Do''Fr''Sa');
        
        
    $weekdays = array('So''Mo''Di''Mi''Do''Fr''Sa');
        
    $months = array('01' => 'Januar''02' => 'Februar''03' => 'M&aumlrz''04' => 'April''05' => 'Mai''06' => 'Juni''07' => 'Juli''08' => 'August''09' => 'September''10' => 'Oktober''11' => 'November''12' => 'Dezember');
        
        
    $prev_symbol "&laquo;";
        
    $next_symbol "&raquo;";
        
    $summary "Belegungsplan";
        
    $caption "Belegungsplan";
        
    $options['month_link']     = '<a href="'.$_SERVER['PHP_SELF'].'?month=%d&amp;year=%d&Titel='.$Titel.'">%s</a>';
        
        
    $total_days date('t'mktime(000$month1$year));
        
    $day_offset date('w'mktime(000$month1$year));
        
        list(
    $n_month$n_year$n_day) = split(', 'strftime('%m, %Y, %d'));
        
    $day_highlight = (($n_month == $month)."&amp;&amp;".($n_year == $year));
        
        list(
    $n_prev_month$n_prev_year) = split(', 'strftime('%m, %Y'mktime(000$month-11$year)));
        
    $prev_month_link sprintf($options['month_link'], $n_prev_month$n_prev_year$prev_symbol);
     
        list(
    $n_next_month$n_next_year) = split(', 'strftime('%m, %Y'mktime(000$month+11$year)));
        
    $next_month_link sprintf($options['month_link'], $n_next_month$n_next_year$next_symbol);
        
        echo 
    '
        <table border="0" summary="'
    .$summary.'" style="width: 400px;">
        <caption>'
    .$caption.'</caption>
        <thead>
        <tr>
        <th style="background-color:#647b8d;">'
    ?> 
        
        <?PHP
            
    if (date('m') >= $month AND date('Y') == $year): 
                 
                else:     
                 echo 
    $prev_month_link;     
              endif; 
        
    ?>
        
        <?PHP echo '</th>
        <th colspan="5">'
    .$months[strftime('%m'mktime(000$month1$year))].' '.$year.'</th>
        <th style="background-color:#647b8d;">'
    .$next_month_link.'</th>
        </tr>'
    ;
        echo 
    "<tr>\n";
        
        foreach (
    $weekdays as $weekday)
            {
              echo 
    "\t";
              echo 
    "<th>".$weekday."</th>\n";
              echo 
    "\n";
            }
            
        echo 
    "\n";
        echo 
    "\n";
        echo 
    "</tr>
        </thead>
        <tbody>\n"
    ;
        echo 
    "<tr>\n";
        
        if (
    $day_offset 0) {
          for (
    $i=0$i<$day_offset$i++)
            {
                echo 
    "\t";
                echo 
    '<td class="empty_cell">';
                echo 
    "\n";
            } 
         }
         for (
    $day=1$day<=$total_days$day++)
            {
              if (
    $day_highlight && ($day == $n_day) && ($month == $n_month) && ($year == $n_year))
              {
                  echo 
    "\t";
                  echo 
    '</td>
                     <td id="day_'
    .$day.'" style="'.$options['today_class'].'">'.$day.'';
                     echo 
    "\n";                   
                } 
                    
        else {
            
            
    $query mysql_query("SELECT * FROM belegungsplangebucht WHERE Titel='$Titel'order by Datum2",$db);
            
    $num=mysql_NumRows($query);
            
    $i=0; while ($i<$num):
            
    $row mysql_fetch_array($query);
            
    $Datum1=makedate($row[Datum1]);
            
    $Datum2=makedate($row[Datum2]);
                    
            if ((
    $day == $Datum2 [1]) && ($month == $Datum2 [2])&& ($year == $Datum2 [3])) {
              echo 
    "\t";
              echo 
    '</td>
               <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
               echo 
    "\n";           
            }         
                    
            
    $i++; endwhile;        
                    
                echo 
    "\t";
                echo 
    '</td>
                <td id="day_'
    .$day.'">'.$day.'</td>';
                 echo 
    "\n";
               }
                   
    $day_offset++;
                if (
    $day_offset == 7)   {
                
    $day_offset 0;
                if (
    $day $total_days)
               {
                   echo 
    "</tr>\n<tr>";
               }
               }   
           
         }     
         if (
    $day_offset 0)
            {
              
    $day_offset 7-$day_offset;
            }
        if (
    $day_offset 0)
        {
        for (
    $i=0$i$day_offset$i++)
        {
        echo 
    '<td class="empty_cell">';
         echo 
    "\n";
      }
    }    
    ?>
    Geändert von sheel (16.11.11 um 16:02 Uhr) Grund: Doppel
     

  4. #4
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Also ehrlich gesagt blick ich bei deinem Code nicht durch.
    Was ich aber sehe ist, dass du jedes Mal in der for-Schleife (ist doch stellvertretend für jeden Tag?) das Query abschießt, das dir ich-weiß-es-nicht zurückgibt.

    darunter kommt

    PHP-Code:
    if (($day == $Datum2 [1]) && ($month == $Datum2 [2])&& ($year == $Datum2 [3])) {
              echo 
    "\t";
              echo 
    '</td>
               <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
               echo 
    "\n";           

    und DANACH kommt wiederum

    PHP-Code:
    echo "\t";
    echo 
    '</td>
      <td id="day_'
    .$day.'">'.$day.'</td>';
    echo 
    "\n"
    Das heißt, du gibst einmal bei Erfolg das formatierte TD aus, und danach, ohne Prüfung, das Standard-TD. Beide Male greifst du auf die Variable $day zu, es wird also in der logischen Konsequenz doppelte Tage geben.

    Das zum Grundproblem. Ich würde dir gerne einen Ansatz-Schnipsel hinwerfen, aber ich hab absolut keine Ahnung, welche Werte hier wann vorliegen.
    Vielleicht hilft dir ja die Theorie weiter:

    Entweder fragt man einmalig alle Tage ab, zu denen es ein Ereignis in der DB gibt, und packt diese Tage ein Array. Danach geht man alle möglichen (?) Tage in einer Schleife durch, prüft, ob zu diesem Tag ein Wert in dem Array existiert, und wenn ja, gibt man das formatierte TD aus. Wenn nicht, dann eben das normale.

    Oder man geht alle möglichen (?) Tage durch und schickt innerhalb dieser Schleife je ein Query ab, das die DB nach genau diesem Tag anfragt. Hier kommt entweder ein (oder mehrere) Datensatz zurück oder keiner. Mit (u.a.) mysql_num_rows kann man das überprüfen; im positiven Fall gibt man das formatierte Td aus, im negativen...bla.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  5. #5
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    Hey,

    vielen Dank für Deine Tipps!

    Im Prinzip ist es so, dass es Variablen für Tag, Monat und Jahr gibt die ich versuche mit der DB zu vergleichen und wenn diese dann in der Schleife vorkommen sollen diese gefärbt werden.

    Deine Variante eins wäre die Optimallösung.
    Wie packe ich diese Tage aus der DB denn in ein Array und gehe diese dann danach alle durch um die danach zu prüfen ob sie vorkommen oder nicht? Da stehe ich etwas auf der Leitung.
     

  6. #6
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Das kommt drauf an wie deine Tabellen aussehen (wenn möglich die Create-Statements hier posten).

    Ich geh jetz einfach mal davon aus, dass jeder Tag, der in deiner Tabelle belegungsplangebucht vorkommt, "belegt" ist.

    PHP-Code:
    $sql "SELECT `SpalteMitDatum` FROM belegungsplangebucht"
    Falls Daten auch mehrfach in der Tabelle vorkommen können, wäre hier noch ein GROUP BY angebracht. Da du innerhalb der Schleife je den Tag, den Monat und das Jahr vergleichen willst, holen wir uns pro Treffer in der DB das Datum jeweils als Tag, Monat und Jahr formatiert. Dafür muss die Spalte DateTime sein.

    Der grobe Plan:

    PHP-Code:
    $query mysql_query("SELECT            
      DATE_FORMAT(`SpalteMitDatum`, '%d' AS 'day', 
      DATE_FORMAT(`SpalteMitDatum`, '%m' AS 'month', 
      DATE_FORMAT(`SpalteMitDatum`, '%Y' AS 'year'
      FROM belegungsplangebucht"
    $db);

    while (
    $row mysql_fetch_assoc($query)) {
      
    $date[] = $row;
      
    /* ein Beispieldatensatz müsste so aussehen:
         $date => Array(
           [0] => Array(
             ['day'] => '01',
             ['month'] => '12',
             ['year'] => '2011'
           )
         )
     */
    }  
       
    for (
    $day=1$day<=$total_days$day++){

      if (
    $day_highlight && ($day == $n_day) && ($month == $n_month) && ($year == $n_year)){
       echo 
    "\t";
       echo 
    '</td>
       <td id="day_'
    .$day.'" style="'.$options['today_class'].'">'.$day.'';
       echo 
    "\n"
                      
      }else{

        
    $hit false;

        while(list(
    $index$data) = each($date)){

         
    /* vergleiche die jetzigen Daten mit denen aus dem Array */    
          
    if($day == $data['day'] && $month == $data['month'] && $year == $data['year']){
        
    $hit true;
        break; 
    /*lass gut sein */
          
    }
        }
        
    reset($date); /* setz den zeiger auf das erste Element, weil wir die Schleife mehrfach brauchen */

        
    if ($hit){ /* wenn Treffer */
          
    echo "\t";
          echo 
    '</td>
          <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
          echo 
    "\n"
              
        }else{  
    /* sonst */ 
                    
          
    echo "\t";
          echo 
    '</td>
          <td id="day_'
    .$day.'">'.$day.'</td>';
           echo 
    "\n";
        }
      }

    1. Ob das so mit deinen Daten hinhaut, weiß ich nicht.
    2. Es gibt sicher noch andere (schnellere, effektivere...) Lösungen, das nur zum grundsätzlichen Ansatz.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  7. #7
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    also ich habe versucht dein script an meins anzupassen.
    leider ohne erfolg.

    die struktur in meiner tabelle sieht so aus:

    id Titel Datum2
    1 Blabla 2011-11-09
    2 Blabla2 2011-11-10

    das datum wird immer in 2011-11-09 usw. abgespeichert.

    ich dachte wenn ich das datum aus der db in das format bringe wie in deinem script, klappt es.

    PHP-Code:
      $query mysql_query("SELECT * FROM belegungsplangebucht WHERE Titel='$Titel'order by Datum2",$db);
            
    $i=0; while ($i<$num):    
            
    $row mysql_fetch_array($query);
            
            
    $Datum1=makedate($row[Datum1]);
            
    $Datum2=makedate($row[Datum2]);
            
            
    $date = array("day"=>$Datum2 [1], "month"=>$Datum2 [2], "year"=>$Datum2 [3]);                        
            
    $i++; endwhile; 
       
            for (
    $day=1$day<=$total_days$day++){

      if (
    $day_highlight && ($day == $n_day) && ($month == $n_month) && ($year == $n_year)){
       echo 
    "\t";
       echo 
    '</td>
       <td id="day_'
    .$day.'" style="'.$options['today_class'].'">'.$day.'';
       echo 
    "\n"
                      
      }else{
          
        
    $hit false;
        
        while(list(
    $index$data) = each($date)){
         
    /* vergleiche die jetzigen Daten mit denen aus dem Array */    
          
    if($day == $data['day'] && $month == $data['month'] && $year == $data['year']){
        
    $hit true;
        break; 
          }
        }
        
        
    reset($date);

        if (
    $hit){ /* wenn Treffer */
          
    echo "\t";
          echo 
    '</td>
          <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
          echo 
    "\n"
              
        }else{  
    /* sonst */ 
                    
          
    echo "\t";
          echo 
    '</td>
          <td id="day_'
    .$day.'">'.$day.'</td>';
           echo 
    "\n";
        }

    wo liegt mein denkfehler?
    Geändert von diggakool (21.11.11 um 13:01 Uhr)
     

  8. #8
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Also erstmal initialisierst du $date in jedem Schleifengang neu:

    PHP-Code:
    $date = array("day"=>$Datum2 [1], "month"=>$Datum2 [2], "year"=>$Datum2 [3]); 
    Also wirds auch jedes Mal überschrieben. Deswegen hatte ich
    PHP-Code:
    $date[] 
    verwendet. Du kannst natürlich auch das $i als Index nehmen, wäre aber nicht notwendig.

    Zum Zweiten schriebst du

    die struktur in meiner tabelle sieht so aus:

    id Titel Datum2
    1 Blabla 2011-11-09
    2 Blabla2 2011-11-10
    Also gibt es nur eine Spalte, die dir ein Datum zurückgibt. Ich benutze mysql_fetch_array zwar nie, aber das, was da zurückkommt, kann eigentlich kaum mit der Datenbankabfrage übereinstimmen.

    $Datum2[1] müsste nach meiner Ansicht den Titel tragen, $Datum2[2] das Datum und $Datum2[3]....nichts. Lass meine Ansicht da natürlich gern korrigieren. Aber je einen als Tag, Monat und Jahr formatierten Datumsstring wirst du wohl nicht bekommen, demzufolge fällt auch der Vergleich flach. Deswegen
    wenn ich das datum aus der db in das format bringe
    DATE_FORMAT im Query verwenden
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  9. #9
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    juchuu!
    ich habe es nun hinbekommen!

    PHP-Code:
    $hit false;
        
         
    $query mysql_query("SELECT * FROM belegungsplangebucht WHERE Titel='$Titel'order by Datum2",$db);
            
    $i=0; while ($i<$num):    
            
    $row mysql_fetch_array($query);
            
            
    $Datum1=makedate($row[Datum1]);
            
    $Datum2=makedate($row[Datum2]);
            
            
    $date = array("day"=>$Datum2 [1], "month"=>$Datum2 [2], "year"=>$Datum2 [3]); 
                         
            if(
    $day == $date['day'] && $month == $date['month'] && $year == $date['year']){
            
    $hit true
          }                             
          
    $i++; endwhile;     
        
        
    reset($date);

        if (
    $hit){ /* wenn Treffer */
          
    echo "\t";
          echo 
    '</td>
          <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
          echo 
    "\n"
              
        }else{  
    /* sonst */ 
                    
          
    echo "\t";
          echo 
    '</td>
          <td id="day_'
    .$day.'">'.$day.'</td>';
           echo 
    "\n";
        } 
    ich habe einfach die datenbankabfrage anders platziert!

    vielen dank für deine hilfe para_noid!
    mein tag ist gerettet!
     

  10. #10
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    Moin,

    vielen Dank noch mal an para_noid für die Hilfe. Klappt alles super!
    Ich stehe jetzt aber wieder vor einem neuen "Problem".

    Es soll jetzt nicht nur 1 Monat ausgegeben werden sondern 3.
    Beispiel: Dezember 2011 - Januar 2012 - Februar 2012

    Zur Zeit wird nur ein Monat angezeigt.

    Hier mein Script:

    PHP-Code:
    <?PHP  // Parameter festlegen 
    $month = isset($_GET['month']) ? intval($_GET['month']) : date('n');
    $year = isset($_GET['year']) ? intval($_GET['year']) : date('Y');
        
    $options['today_class'] = "background-color:#008bb8; font-weight:bold; color:#fff;";
    $options['block_class'] = "background-color:#ab0000; font-weight:bold; color:#fff;";
    $weekdays = array('So''Mo''Di''Mi''Do''Fr''Sa');    
    $weekdays = array('So''Mo''Di''Mi''Do''Fr''Sa');
    $months = array('01' => 'Januar''02' => 'Februar''03' => 'M&aumlrz''04' => 'April''05' => 'Mai''06' => 'Juni''07' => 'Juli''08' => 'August''09' => 'September''10' => 'Oktober''11' => 'November''12' => 'Dezember');

       
    $prev_symbol "&laquo;";
    $next_symbol "&raquo;";
    $summary "Belegungsplan";
    $caption "Belegungsplan";
    $options['month_link']     = '<a href="'.$_SERVER['PHP_SELF'].'?month=%d&amp;year=%d&Titel='.$Titel.'">%s</a>';
        
    $total_days date('t'mktime(000$month1$year));
    $day_offset date('w'mktime(000$month1$year));
        
    list(
    $n_month$n_year$n_day) = split(', 'strftime('%m, %Y, %d'));
    $day_highlight = (($n_month == $month)."&amp;&amp;".($n_year == $year));
        
    list(
    $n_prev_month$n_prev_year) = split(', 'strftime('%m, %Y'mktime(000$month-11$year)));
    $prev_month_link sprintf($options['month_link'], $n_prev_month$n_prev_year$prev_symbol);
     
    list(
    $n_next_month$n_next_year) = split(', 'strftime('%m, %Y'mktime(000$month+11$year)));
    $next_month_link sprintf($options['month_link'], $n_next_month$n_next_year$next_symbol);
     
     
    // Ausgabe HTML 
        
    echo '
    <table border="0" summary="'
    .$summary.'" style="width: 400px;">
    <caption>'
    .$caption.'</caption>
    <thead>
    <tr>
    <th style="background-color:#647b8d;">'
    ?> 

    <?PHP
    if (date('m') >= $month AND date('Y') == $year) { 

    }    else {     
        echo 
    $prev_month_link;     
    }
    ?>
        
    <?PHP 
    echo '</th>
    <th colspan="5">'
    .$months[strftime('%m'mktime(000$month1$year))].' '.$year.'</th>
    <th style="background-color:#647b8d;">'
    .$next_month_link.'</th>
    </tr>'
    ;
    echo 
    "<tr>\n";

    foreach (
    $weekdays as $weekday) {
        echo 
    "\t";
        echo 
    "<th>".$weekday."</th>\n";
        echo 
    "\n";
    }

    echo 
    "\n";
    echo 
    "\n";
    echo 
    "</tr>
    </thead>
    <tbody>\n"
    ;
    echo 
    "<tr>\n";

    if (
    $day_offset 0) {
    for (
    $i=0$i<$day_offset$i++)
    {
    echo 
    "\t";
    echo 
    '<td class="empty_cell">';
    echo 
    "\n";



    for (
    $day=1$day<=$total_days$day++) {

    if (
    $day_highlight && ($day == $n_day) && ($month == $n_month) && ($year == $n_year)) {

        
    $hit false;

        
    $query mysql_query("SELECT * FROM XX WHERE Titel='$Titel'order by Datum2",$db);
        
    $i=0; while ($i<$num):    
        
    $row mysql_fetch_array($query);

        
    $Datum1=makedate($row[Datum1]);
        
    $Datum2=makedate($row[Datum2]);

        
    $date = array("day"=>$Datum2 [1], "month"=>$Datum2 [2], "year"=>$Datum2 [3]); 

        if(
    $day == $date['day'] && $month == $date['month'] && $year == $date['year']) {
            
    $hit true
    }       

    $i++; endwhile;     

    reset($date);

    if (
    $hit) { // wenn Treffer
        
    echo "\t";
        echo 
    '</td>
        <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
        echo 
    "\n"

    }    else {  
    // aktuellen Tag 

        
    echo "\t";
        echo 
    '</td>
        <td id="day_'
    .$day.'" style="'.$options['today_class'].'">'.$day.'';
        echo 
    "\n"
    }
    }    else {
        
    $hit false;
        
    $query mysql_query("SELECT * FROM XX WHERE Titel='$Titel'order by Datum2",$db);
        
    $i=0; while ($i<$num):    
        
    $row mysql_fetch_array($query);

        
    $Datum1=makedate($row[Datum1]);
        
    $Datum2=makedate($row[Datum2]);

        
    $date = array("day"=>$Datum2 [1], "month"=>$Datum2 [2], "year"=>$Datum2 [3]); 

    if(
    $day == $date['day'] && $month == $date['month'] && $year == $date['year']) {
        
    $hit true
    }                             
    $i++; endwhile;     

    reset($date);

    if (
    $hit) { // wenn Treffer Tag markieren 
        
    echo "\t";
        echo 
    '</td>
        <td id="day_'
    .$day.'" style="'.$options['block_class'].'">'.$day.'';
        echo 
    "\n"

    }    else {  
    // sonst /

        
    echo "\t";
        echo 
    '</td>
        <td id="day_'
    .$day.'">'.$day.'</td>';
        echo 
    "\n";
    }
    // restliche Tage
    $day_offset++;
    if (
    $day_offset == 7)   {
        
    $day_offset 0;
    if (
    $day $total_days) {
        echo 
    "</tr>\n<tr>";
    }
    }   

    }     
    if (
    $day_offset 0) {
        
    $day_offset 7-$day_offset;
    }
        if (
    $day_offset 0) {
        for (
    $i=0$i$day_offset$i++) {
        echo 
    '<td class="empty_cell">';
        echo 
    "\n";
    }
    }    
    ?>
    Hat jemand eine Idee, einen Lösungsansatz oder einen Tipp für mich wie ich das in Zusammenhang mit meinen Script umsetzen könnte?
     

  11. #11
    Avatar von Yugeen
    Yugeen Yugeen ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    69
    Hast du es schon mal mit 'between' versucht?
    PHP-Code:
    $select  "SELECT feld1 FROM table WHERE datum BETWEEN '2011-12-01' AND '2012-02-01'"
    also jetzt nur so als beispiel
     

  12. #12
    diggakool diggakool ist offline Mitglied Bronze
    Registriert seit
    Aug 2004
    Beiträge
    41
    Hallo Yugeen,

    vielen Dank für Deine Antwort.

    also es geht mir eigentlich mehr darum sowas wie hier

    http://www.ostsee-appartements.de/ka...ISE=15.12.2011

    zu haben wo 3 Monate nebeneiander sind. Zur Zeit habe ich nur 1 Monat der angezeigt wird.
     

  13. #13
    Avatar von Yugeen
    Yugeen Yugeen ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    69
    Nun ja du könntest ja drei Tabellen erstellen, via schleife oder wie es dir gerade gefällt und dann die Daten in die jeweilige Tabelle eintragen lassen.
    haben die auf der von dir verlinkten seite ja auch mehr oder weniger gemacht. Nur dort ist es eine verschachtelte Tabelle wenn ich es richtig gesehen habe.
     

Ähnliche Themen

  1. Doppelte Ausgabe
    Von Giraffe im Forum PHP
    Antworten: 7
    Letzter Beitrag: 18.04.09, 16:34
  2. Doppelte Ausgabe
    Von sanjo im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 01.05.06, 14:08
  3. Wieso doppelte ausgabe?
    Von 2Pac im Forum PHP
    Antworten: 3
    Letzter Beitrag: 02.04.04, 14:08
  4. doppelte Ausgabe
    Von quidnovi im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 08.01.04, 17:16
  5. Doppelte Ausgabe verhindern?
    Von Lemmingz Shadow im Forum PHP
    Antworten: 2
    Letzter Beitrag: 22.11.02, 17:08