tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
164
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jul 2003
    Ort
    Ramsen (CH)
    Beiträge
    473
    Hallo zusammen

    Ich habe ein kleines Problem.

    Ich übergebe einer Funktion einen zweidimensionalen Array..

    in diesem Array hat es an verschiedenen Punkten ein Element, welche mehrere cols lang sein können.

    Nun kommt aber das Hauptproblem.. Wie wandle ich diesen zweidimensionalen Array richtig in eine Tabelle um:

    Hier der Beispielarray:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    0] => Zeit
                
    [1] => 8:00
                
    [2] => 8:30
                
    [3] => 9:00
                
    [4] => 9:30
                
    [5] => 10:00
                
    [6] => 10:30
                
    [7] => 11:00
                
    [8] => 11:30
                
    [9] => 12:00
                
    [10] => 12:30
                
    [11] => 13:00
                
    [12] => 13:30
                
    [13] => 14:00
                
    [14] => 14:30
                
    [15] => 15:00
                
    [16] => 15:30
                
    [17] => 16:00
                
    [18] => 16:30
                
    [19] => 17:00
                
    [20] => 17:30
                
    [21] => 18:00
            
    )

        [
    1] => Array
            (
                [
    0] => SZ Bibliothek
                
    [2] => Array
                    (
                        [
    STATUS] => 1
                        
    [Duration] => 6
                        
    [WER] => rgn
                        
    [ID] => 1
                        
    [Title] => asdf
                    
    )

                [
    12] => Array
                    (
                        [
    STATUS] => 1
                        
    [Duration] => 4
                        
    [WER] => rgn
                        
    [ID] => 5
                        
    [Title] => zusatzbesprechung
                    
    )

            )

        [
    2] => Array
            (
                [
    0] => SZ Hauptgebäude
                
    [3] => Array
                    (
                        [
    STATUS] => 1
                        
    [Duration] => 1
                        
    [WER] => rgn
                        
    [ID] => 2
                        
    [Title] => asdfasdfa
                    
    )

            )

        [
    3] => Array
            (
                [
    0] => SZ Nebengebäude
                
    [15] => Array
                    (
                        [
    STATUS] => 1
                        
    [Duration] => 2
                        
    [WER] => dg
                        
    [ID] => 4
                        
    [Title] => dani
                    
    )

            )

        [
    4] => Array
            (
                [
    0] => SZ Dachgeschoss
                
    [1] => Array
                    (
                        [
    STATUS] => 1
                        
    [Duration] => 19
                        
    [WER] => rgn
                        
    [ID] => 6
                        
    [Title] => test dachgeschoss
                    
    )

            )


    Wenn ich diesen Array in eine Tabelle umwandle, verschiebt es mir teilweise die anderen Felder:

    Funktion:
    PHP-Code:
    $source_array=$this->generateCalendarArray(@$this->result_array,$this->rooms,$this->zeiten);
            
            
    //print_r($source_array);
            
    echo "<br /><br />";
            
    $count_rows=count($source_array[0]);
            
    $count_cols=count($source_array);
            
    $s "<div  >\n";
            
    $s .= "<table class=\"dayview\" border=\"0\">\n";
            
    $s .= "<caption> Tagesübersicht</caption>";
            
    $s .= "<thead>";
            
    $s .= "<tr><td colspan=\"".$count_cols."\">";
            
    $s .= "Reservationen vom $day.$month.$year. <input type=\"hidden\" name=\"datum\" value=\"$day.$month.$year\" />";
            
    $s .= "</td></tr>";
            
    $s .= "</thead>";
            
            
    $s .= "<tbody>\n";
            
            
            
    $count="";
            
    $color_reserviert="";
            
            for(
    $j=0;$j<$count_rows;$j++){
                
    $s .= "<tr>\n";
                if(
    $j==0){
                    for (
    $i=0$i<$count_cols;$i++){
                        
    $s.="<th>".$source_array[$i][0]."</th>\n";
                    }
                } else {
                    for(
    $i=0;$i<$count_cols;$i++){
                        if(
    $i!=&& @$source_array[$i][$j]){
                            if(@!isset(
    $source_array[$i][$j]["STATUS"])){
                                
    $source_array[$i][$j]["STATUS"]=0;
                            }
                            if(
    $source_array[$i][$j]["STATUS"]==&& @$source_array[$i][$j]["Duration"]>0){
                                
    $s.="<td style=\"background-color:#FF0000; vertical-align:top;\" rowspan=\"".$source_array[$i][$j]["Duration"]."\">".$source_array[$i][$j]["Title"]."<br/> dauer:".$source_array[$i][$j]["Duration"]."</td>";;
                            }elseif(empty(
    $source_array[$i][$j])){
                            
    //elseif(@$source_array[$i][$j]["STATUS"]==0 && @$source_array[$i][$j]["Duration"]>0){
                                
    $s.="<td></td>\n";
                            } else {
                                
    $s.="";
                            }
                            
                            
    $count=@$source_array[$i][$j]["Duration"];
                        } else {
                            
    //echo $count;
                            
    if($count>&& $count--){
                                echo 
    $count;
                                
    $s.="";
                            } else {
                             
    $s.="<td>".@$source_array[$i][$j]."</td>\n";
                            }
                        }
                    }
                }
                
    $s .="</tr>\n";
                
    $count=0;
            }
            
            
    $s .= "</tbody>";
            
    $s .= "</table>";
            
    $s .= "</div>";

            return 
    $s
    Hier der Output in HTML:

    HTML-Code:
    <table class="dayview" border="0">
    <caption> Tagesübersicht</caption><thead><tr><td colspan="5">Reservationen vom 5.12.2008. <input type="hidden" name="datum" value="5.12.2008" /></td></tr></thead><tbody>
    
    <tr>
    <th>Zeit</th>
    <th>SZ Bibliothek</th>
    <th>SZ Hauptgebäude</th>
    <th>SZ Nebengebäude</th>
    <th>SZ Dachgeschoss</th>
    </tr>
    <tr>
    <td>8:00</td>
    <td></td>
    <td></td>
    
    <td></td>
    <td style="background-color:#FF0000; vertical-align:top;" rowspan="19">test dachgeschoss<br/> dauer:19</td></tr>
    <tr>
    <td>8:30</td>
    <td style="background-color:#FF0000; vertical-align:top;" rowspan="6">asdf<br/> dauer:6</td></tr>
    <tr>
    <td>9:00</td>
    <td></td>
    <td style="background-color:#FF0000; vertical-align:top;" rowspan="1">asdfasdfa<br/> dauer:1</td><td></td>
    
    </tr>
    <tr>
    <td>9:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>10:00</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    
    <tr>
    <td>10:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>11:00</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    
    <td>11:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>12:00</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>12:30</td>
    
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>13:00</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>13:30</td>
    <td style="background-color:#FF0000; vertical-align:top;" rowspan="4">zusatzbesprechung<br/> dauer:4</td></tr>
    
    <tr>
    <td>14:00</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>14:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    
    <td>15:00</td>
    <td></td>
    <td></td>
    <td style="background-color:#FF0000; vertical-align:top;" rowspan="2">dani<br/> dauer:2</td></tr>
    <tr>
    <td>15:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    
    <td>16:00</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>16:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>17:00</td>
    
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>17:30</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    <tr>
    <td>18:00</td>
    <td></td>
    
    <td></td>
    <td></td>
    <td></td>
    </tr>
    </tbody></table>
    Hatte jemand schon so ein Problem mit dem Colspan

    Falls ja, kann derjenige mir sagen, wie er das Problem angegangen / gelöst hat?


    Danke im vorraus für eure Hilfe
    Geändert von xloouch (18.12.08 um 11:51 Uhr) Grund: Einfügen der Erstellerfunktion
     
    Grüsse

    Xloouch


    Sich selber zu bekriegen ist der schwerste Krieg.
    Sich selber zu besiegen ist der schönste Sieg!

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Du müsstest jedes mal prüfen, ob ein vorhergehendes Ereignis bereits vorüber ist und erst dann eine neue Tabellenzelle ausgeben.
     
    Markus Wulftange

  3. #3
    Registriert seit
    Jul 2003
    Ort
    Ramsen (CH)
    Beiträge
    473
    Hi Gumo.

    Hab es schon mal so probiert gehabt, aber dannn habe ich das Problem mit der "duration" Variable, welche überschrieben wird...

    Hm. wenn ich für jede Spalte eine Variable definiere, und dieser dann den entsprechenden Wert zuweise, könnte es funktionieren, oder?
     
    Grüsse

    Xloouch


    Sich selber zu bekriegen ist der schwerste Krieg.
    Sich selber zu besiegen ist der schönste Sieg!

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Ja, du musst das schon für jede Spalte einzeln machen.
     
    Markus Wulftange

  5. #5
    Registriert seit
    Jul 2003
    Ort
    Ramsen (CH)
    Beiträge
    473
    Nur, wie mach ich das, falls es mehrere "events" in einer Spalte gibt..

     
    Grüsse

    Xloouch


    Sich selber zu bekriegen ist der schwerste Krieg.
    Sich selber zu besiegen ist der schönste Sieg!

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Sobald ein neues Ereignis beginnt, erhöhst du einen Zähler der Spalte um <Duration>. Bei jeder Zeile prüfst du dann, ob der Zähler gleich 0 ist, gibst dann gegebenenfalls die leere Zelle aus und dekrementierst den Zähler.
     
    Markus Wulftange

  7. #7
    Registriert seit
    Jul 2003
    Ort
    Ramsen (CH)
    Beiträge
    473
    Gute Idee.. ich mach mich mal dran, und poste dann das Ergebnis.

    Dank dir
     
    Grüsse

    Xloouch


    Sich selber zu bekriegen ist der schwerste Krieg.
    Sich selber zu besiegen ist der schönste Sieg!

Ähnliche Themen

  1. Fehler beim erstellen einer Tabelle
    Von Binio im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 22.12.07, 22:25
  2. Probleme beim Erstellen einer .gif Animation
    Von Rishu-chan im Forum Sonstige Grafik-Programme
    Antworten: 0
    Letzter Beitrag: 08.05.07, 19:13
  3. Problem beim Erstellen einer Tabelle
    Von Zimtgruen im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 16.04.05, 18:16
  4. Antworten: 5
    Letzter Beitrag: 28.02.05, 18:11
  5. Antworten: 1
    Letzter Beitrag: 22.06.04, 19:37