Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP/MYSQL Tabellen Zeilen farblich markieren

Einklappen

Neue Werbung 2019

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

  • PHP/MYSQL Tabellen Zeilen farblich markieren

    Hallo community,
    ich bin gerade dabei ein Tabellen Script zu schreiben und treffe dabei auf folgendes problem:

    aktuell listet mir meine Datei alles so auf wie ich es will:
    1. Bayern/x/x/x/x/x
    2. Dortmund/x/x/x/x
    usw. usw.

    Nun möchte ich aber, dass die zeilen 1-3 im hintergrund grün sind und die zeilen 4-6 dunkelgrün. die folgenden zeilen sollen so bleiben wie sie sind und die zeilen 17-18 dunkelrot und die zeile 16 hellrot.

    Wie realisiere ich das? kann mir da wer helfen?
    Ich habe mich bei meiner bisherigen programmierung an diesem beispiel orientiert:
    PHP-Code:
    //Testdaten
    $teams range(1,18);

    //Formatierungen für die Zeilen definieren
    $colors array_fill(13,'green'
            + 
    array_fill(43'darkgreen')
            + 
    array_fill(79'')
            + 
    array_fill(161'red')
            + 
    array_fill(172'darkred');

    //Die Position definieren        
    $pos=0;
    //Anstelle des foreach dein while auf das DB-Resultat        
    echo '<table>';
    foreach(
    $teams as $teamNr){
        
    //Die position eins hochzählen und die Farbe auslesen: {$colors[++$pos]
        
    echo "<tr><td bgcolor=\"{$colors[++$pos]}\">Team {$teamNr}</td></tr>";
    }
    echo 
    '</table>'
    Meine Datei sieht nun so aus:

    PHP-Code:
    <?php

    $colors 
    array_fill(13,'green'
            + 
    array_fill(43'darkgreen')
            + 
    array_fill(79'')
            + 
    array_fill(161'red')
            + 
    array_fill(172'darkred');

    //Die Position definieren        
    $pos=0;
    while(
    $row_bl mysql_fetch_object($ergebnis_bl))
       {
       echo 
    '<tr>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="32" align="center">&nbsp;</td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="40" align="center">&nbsp;</td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="115" align="center"><strong>'.$row_bl->name.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="95" align="center"><strong>'.$row_bl->besitzer.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="37" align="center"><strong>'.$row_bl->spiele.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="37" align="center"><strong>'.$row_bl->siege.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="37" align="center"><strong>'.$row_bl->unentschieden.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="37" align="center"><strong>'.$row_bl->niederlagen.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="74" align="center"><strong>'.$row_bl->tore.':'.$row_bl->gegentore.'</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="37" align="center"><strong>TD</strong></td>
        <td bgcolor="{'
    .$colors[++$pos].'}" width="49" align="center"><strong>'.$row_bl->punkte.'</strong></td>
      </tr>'
    ;
       }
       echo 
    '</table></td>
      </tr>
    </table>'
    ;
    ?>

    Vielen dank für die Hilfe im vorraus!

  • #2
    Zitat von DonDemf Beitrag anzeigen
    Wie realisiere ich das?
    Zähler mitlaufen lassen, und abhängig von dem ggf. passende Klasse ausgeben. (Formatierung wird selbstverständlich per CSS gemacht.)

    Meine Datei sieht nun so aus:
    Das sieht eher so aus, als ob du Spalten statt Zeilen meinst.

    Kommentar


    • #3
      jede zeile besteht ja aus mehreren spalten, so dass ich jeder spalte den background geben wollte... :S

      Und es wäre nett, wenn du mir sagst, wie ich den zähler mitlaufen lasse.

      Kommentar


      • #4
        Zitat von DonDemf Beitrag anzeigen
        Und es wäre nett, wenn du mir sagst, wie ich den zähler mitlaufen lasse.
        Zählervariable mit 0 initialisieren, und mit $zaehlervariable++ erhöhen.

        Kommentar


        • #5
          PHP-Code:
          <?php

          function e($s)
          {
              return 
          htmlspecialchars($sENT_QUOTES'UTF-8');
          }

          class 
          Team
          {
              public 
          $name;
              public 
          $besitzer;
              public 
          $spiele;
              public 
          $siege;
              public 
          $unentschieden;
              public 
          $niederlagen;
              public 
          $tore;
              public 
          $gegentore;
              public 
          $punkte;

              public function 
          __construct($name)
              {
                  
          $r = function () {
                      
          $a func_get_args();
                      
          $rand array_rand($a);
                      return 
          $a[$rand];
                  };

                  
          $this->name $name;
                  
          $this->besitzer $r('van Bommel''Barrios''Messi''Basler''Möller');
                  
          $this->spiele 0;
                  
          $this->siege 0;
                  
          $this->unentschieden 0;
                  
          $this->niederlagen 0;
                  
          $this->tore 0;
                  
          $this->gegentore 0;
                  
          $this->punkte 0;
              }
          }

          $teamNames = array(
              
          '1. FC Kaiserslautern',
              
          '1. FC Köln',
              
          '1. FC Nürnberg',
              
          '1. FSV Mainz 05',
              
          '1899 Hoffenheim',
              
          'Bayer 04 Leverkusen',
              
          'Bayern München',
              
          'Borussia Dortmund',
              
          'Borussia Mönchengladbach',
              
          'FC Augsburg',
              
          'FC Schalke 04',
              
          'Hamburger SV',
              
          'Hannover 96',
              
          'Hertha BSC',
              
          'SC Freiburg',
              
          'VfB Stuttgart',
              
          'VfL Wolfsburg',
              
          'Werder Bremen'
          );

          $teams = array();

          foreach (
          $teamNames as $teamName) {
              
          $teams[] = new Team($teamName);
          }

          ?>


          <table>
          <?php 
          $pos
          =1;
          $colors array_fill(13,'green')
                  + 
          array_fill(43'darkgreen')
                  + 
          array_fill(79'')
                  + 
          array_fill(161'red')
                  + 
          array_fill(172'darkred');    
          ?>
          <?php 
          foreach ($teams as $team) : ?>
              <tr bgcolor="<?php echo e($colors[$pos]);?>">
                  <td width="32" align="center">&nbsp;</td>
                  <td width="40" align="center">&nbsp;</td>
                  <td width="115" align="center"><strong><?php echo e($team->name); ?></strong></td>
                  <td width="95" align="center"><strong><?php echo e($team->besitzer); ?></strong></td>
                  <td width="37" align="center"><strong><?php echo e($team->spiele); ?></strong></td>
                  <td width="37" align="center"><strong><?php echo e($team->siege); ?></strong></td>
                  <td width="37" align="center"><strong><?php echo e($team->unentschieden); ?></strong></td>
                  <td width="37" align="center"><strong><?php echo e($team->niederlagen); ?></strong></td>
                  <td width="74" align="center"><strong><?php echo e($team->tore.':'.$team->gegentore); ?></strong></td>
                  <td width="37" align="center"><strong>TD</strong></td>
                  <td width="49" align="center"><strong><?php echo e($team->punkte); ?></strong></td>
              </tr>
              <?php $pos++; ?>
          <?php 
          endforeach; ?>
          </table>

          Kommentar


          • #6
            Vielen Dank!

            Zitat von mermshaus Beitrag anzeigen
            PHP-Code:
            <?php

            function e($s)
            {
                return 
            htmlspecialchars($sENT_QUOTES'UTF-8');
            }

            class 
            Team
            {
                public 
            $name;
                public 
            $besitzer;
                public 
            $spiele;
                public 
            $siege;
                public 
            $unentschieden;
                public 
            $niederlagen;
                public 
            $tore;
                public 
            $gegentore;
                public 
            $punkte;

                public function 
            __construct($name)
                {
                    
            $r = function () {
                        
            $a func_get_args();
                        
            $rand array_rand($a);
                        return 
            $a[$rand];
                    };

                    
            $this->name $name;
                    
            $this->besitzer $r('van Bommel''Barrios''Messi''Basler''Möller');
                    
            $this->spiele 0;
                    
            $this->siege 0;
                    
            $this->unentschieden 0;
                    
            $this->niederlagen 0;
                    
            $this->tore 0;
                    
            $this->gegentore 0;
                    
            $this->punkte 0;
                }
            }

            $teamNames = array(
                
            '1. FC Kaiserslautern',
                
            '1. FC Köln',
                
            '1. FC Nürnberg',
                
            '1. FSV Mainz 05',
                
            '1899 Hoffenheim',
                
            'Bayer 04 Leverkusen',
                
            'Bayern München',
                
            'Borussia Dortmund',
                
            'Borussia Mönchengladbach',
                
            'FC Augsburg',
                
            'FC Schalke 04',
                
            'Hamburger SV',
                
            'Hannover 96',
                
            'Hertha BSC',
                
            'SC Freiburg',
                
            'VfB Stuttgart',
                
            'VfL Wolfsburg',
                
            'Werder Bremen'
            );

            $teams = array();

            foreach (
            $teamNames as $teamName) {
                
            $teams[] = new Team($teamName);
            }

            ?>


            <table>
            <?php 
            $pos
            =1;
            $colors array_fill(13,'green')
                    + 
            array_fill(43'darkgreen')
                    + 
            array_fill(79'')
                    + 
            array_fill(161'red')
                    + 
            array_fill(172'darkred');    
            ?>
            <?php 
            foreach ($teams as $team) : ?>
                <tr bgcolor="<?php echo e($colors[$pos]);?>">
                    <td width="32" align="center">&nbsp;</td>
                    <td width="40" align="center">&nbsp;</td>
                    <td width="115" align="center"><strong><?php echo e($team->name); ?></strong></td>
                    <td width="95" align="center"><strong><?php echo e($team->besitzer); ?></strong></td>
                    <td width="37" align="center"><strong><?php echo e($team->spiele); ?></strong></td>
                    <td width="37" align="center"><strong><?php echo e($team->siege); ?></strong></td>
                    <td width="37" align="center"><strong><?php echo e($team->unentschieden); ?></strong></td>
                    <td width="37" align="center"><strong><?php echo e($team->niederlagen); ?></strong></td>
                    <td width="74" align="center"><strong><?php echo e($team->tore.':'.$team->gegentore); ?></strong></td>
                    <td width="37" align="center"><strong>TD</strong></td>
                    <td width="49" align="center"><strong><?php echo e($team->punkte); ?></strong></td>
                </tr>
                <?php $pos++; ?>
            <?php 
            endforeach; ?>
            </table>

            Kommentar


            • #7
              PHP-Code:
              <?php

              $colors 
              array_fill(13,'green'
                      + 
              array_fill(43'darkgreen')
                      + 
              array_fill(79'')
                      + 
              array_fill(161'red')
                      + 
              array_fill(172'darkred');

              //Die Position definieren        
              $pos=0;
              while(
              $row_bl mysql_fetch_object($ergebnis_bl))
                 {
                 echo 
              '<tr>
                  <td bgcolor="{'
              .$colors[++$pos].'}" width="32" align="center">&nbsp;</td>
                  <td bgcolor="{'
              .$colors[++$pos].'}" width="40" align="center">&nbsp;</td>
              //[...]
                  <td bgcolor="{'
              .$colors[++$pos].'}" width="49" align="center"><strong>'.$row_bl->punkte.'</strong></td>
                </tr>'
              ;
                 }
                 echo 
              '</table></td>
                </tr>
              </table>'
              ;
              ?>
              Das Problem hierbei dürfte gewesen sein, dass du für jede Zelle die $pos erhöht hast. Einmal in der Schleife hätte gereicht. So hat er vermutlich am Anfang jede Zelle eingefärbt?

              PHP-Code:
              <?php

              $colors 
              array_fill(13,'green'
                      + 
              array_fill(43'darkgreen')
                      + 
              array_fill(79'')
                      + 
              array_fill(161'red')
                      + 
              array_fill(172'darkred');

              //Die Position definieren        
              $pos=0;
              while(
              $row_bl mysql_fetch_object($ergebnis_bl))
                 {
                 echo 
              '<tr>
                  <td bgcolor="{'
              .$colors[++$pos].'}" width="32" align="center">&nbsp;</td>
                  <td bgcolor="{'
              .$colors[$pos].'}" width="40" align="center">&nbsp;</td>
              //[...]
                  <td bgcolor="{'
              .$colors[$pos].'}" width="49" align="center"><strong>'.$row_bl->punkte.'</strong></td>
                </tr>'
              ;
                 }
                 echo 
              '</table></td>
                </tr>
              </table>'
              ;
              ?>
              So sollte es meiner Meinung nach auch gehen, oder einfach die farbe in <tr> asulagern

              Kommentar


              • #8
                ++$pos aber ans Ende der Schleife, denn sonst springt man schon nach der ersten Spalte auf die nächste Zeile...
                ungefähr genauso wie mermshaus das in seinem Beispiel bereits gemacht hatte:
                Zitat von mermshaus Beitrag anzeigen
                PHP-Code:
                <?php foreach ($teams as $team) : ?>
                    <tr bgcolor="<?php echo e($colors[$pos]);?>">
                ...
                    </tr>
                    <?php $pos++; ?>
                <?php 
                endforeach; ?>
                </table>

                Kommentar

                Lädt...
                X