PHP Ausgabe einer MYSQL Tabelle mit gefärbter Zeile.

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

  • PHP Ausgabe einer MYSQL Tabelle mit gefärbter Zeile.

    Hallo ihr PHP Fans

    Ich bin absoluter Laie in Hinsicht auf PHP und fülle sämtlichen Lücken mit Foren und Google. Deshalb nehmt mir mein fehlendes Fachwissen nicht übel ^^

    Derzeit arbeite ich an einem kleinen Projekt und zwar ist dies eine HTML-Tabelle welche sortierbar ist und ihre Daten aus der Datenbank holt.
    -----------------------------------------------------
    Aufbau meiner Datenbank:
    id | name | klasse | ausgaben | dkp | quotient
    -----------------------------------------------------
    Es handelt sich bei meinem Projekt um ein Gilden-Roster welches Mitglieder auflistet und je nach ID und / oder Punktestand sortierbar macht.

    Es gibt gewisse Charakterklassen mit unterschiedlichen Farben. Ich möchte gerne, dass man die komplette Zeile zum Beispiel der "klasse" Krieger in Braun färbt, der Magier in Blau usw.

    Alternativ oder sogar besser wäre es wenn nur die Schriftfarbe sich ändern würde in der Ausgabe.


    Ich habe hier im Forum diesen Post vom 27-07-2010, 07:21 gefunden: HIER KLICKEN leider konnte ich diesen nicht auf mein Projekt anwenden.

    Mein derzeitiger Code [db.php]
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    date_default_timezone_set('Europe/Berlin');

    {
    $db = new mysqli('localhost''xxx''xxx''xxx');
    }
    $db->set_charset('utf8');
    if (
    $db->connect_errno){
        die(
    'Sorry - gerade gibt es ein Problem');
    }
    ?>

    Mein derzeitiger Code [index.php]:
    PHP-Code:
    <?php
    require_once('inc/db.php');
    $sql "SELECT * FROM dkp ORDER BY id";

    if (
    $erg $db->query($sql)) {
        while (
    $datensatz $erg->fetch_object()) {
            
    $daten[] = $datensatz;
        }
    }
    ?> 


    <?php
        $farb_arr 
    = array("Druide" => "#FF7D0A");
    ?> 


    <html>
        <head>
            <script src="https://www.infight.net/inc/sort.js"></script>
            <meta charset="utf-8">
            <title>DKP - Übersicht</title>
            <style>
                    /*table {border: 1px solid black; padding: 0px;}*/
                    /*th {border: 1px solid black; padding: 5px;}*/
                    /*td {border: 1px solid black; padding: 5px;}*/
                
                body {
                    
                }
                
                h1 {
                    text-align: center;
                }
                
                h2 {
                    text-align: center;
                }
                
                table {
                    border: 1px solid black;
                    border-spacing: 0px;
                    border-collapse: collapse;
                    margin-left: auto;
                    margin-right: auto;
                }

                table td {
                    border: 1px solid black;
                    border-spacing: 0px;
                    border-collapse: collapse;
                    padding: 3px;
                    background: #8b8989;
                }

                table th {
                    border: 1px solid black;
                    border-spacing: 0px;
                    border-collapse: collapse;
                    padding: 3px
                }

                table h2 {
                    margin: 0
                }

                table caption {
                    padding: 0.5em;
                    text-align: left;
                    font-weight: bold;
                }

                table.is_sortable thead th {
                    background-color: lightgray;
                }
            </style>
        </head>
        <body>

    <h1>Überschrift 1</h1>
    <main>
        <h2>Überschrift 2</h2>
        <table class="sortierbar">
            <!--<caption>Empty</caption>-->
            <thead>
            <tr>
              <th data-priority="1">ID</th>
              <th data-priority="2">Name</th>          
              <th data-priority="3">Klasse</th>
              <!--<th data-priority="4">Raid</th>
              <th data-priority="5">Boss</th>
              <th data-priority="6">Item</th>
              <th data-priority="7">Off-Item</th>
              <th data-priority="8">Stunden</th>
              <th data-priority="9">Farm-DKP</th>-->
              <th data-priority="10">Ausgaben</th>
              <th data-priority="11">DKP</th>
              <th data-priority="12">Quotient</th>
            </tr>
          </thead>
          <tbody>
        <?php
            
    foreach ($daten as $inhalt) {
        
    ?>
            <tr>
                <td>
                    <?php echo $inhalt->id?>
                </td>
                <td>
                    <?php echo $inhalt->name?>
                </td>        
                <td style="backgound-color:<?echo $farb_arr[$daten['klasse']] ?>;" >
                    <?php echo $inhalt->klasse?>
                </td>
                <!--<td>
                    <?php echo $inhalt->raid?>
                </td>
                <td>
                    <?php echo $inhalt->boss?>
                </td>
                <td>
                    <?php echo $inhalt->item?>
                </td>
                <td>
                    <?php echo $inhalt->offitem?>
                </td>
                <td>
                    <?php echo $inhalt->stunden?>
                </td>
                <td>
                    <?php echo $inhalt->farmdkp?>
                </td>-->
                <td>
                    <?php echo $inhalt->ausgabe?>
                </td>
                <td>
                    <?php echo $inhalt->dkp?>
                </td>
                <td>
                    <?php echo $inhalt->quotient?>
                </td>           
          </tr>
        <?php
        
    }
        
    ?>
          </tbody>
            <!--<tfoot>
                <tr>
                    <td colspan=5>EMPTY</td>
                </tr>
            </tfoot>-->
        </table>

    </main>
        </body>
    </html>
    Ich habe mir in mühevoller Kleinstarbeit (ca 10 Stunden) diesen Stand erarbeitet und nun hänge fest an etwas mit Sicherheit total simplen.

    Ich würde mich freuen wenn sich jemand meinen Code einmal genauer ansieht, was ich denn falsch mache. Vielen Dank für eure Hilfe

    Projekt-Link: https://www.infight.net/

    Liebe Grüße
    Gie22kanne

  • #2
    hey gie22kanne,


    ich glaube bei so langer zeit am coden, übersiehst du ganz einfache fehler. Ich habe den Code mal angeschaut und musste das hier feststellen:
    PHP-Code:
    <td style="backgound-color:<?echo $farb_arr[$daten['klasse']] ?>;" >

    hier hast backgound geschrieben aber es heisst bei css background und bei PHP Tag starten hast du <?echo gemacht aber das soll eigentlich <?php echo so sein.


    Ansonsten was ich dir empfehlen würde, wäre entweder beim speichern der Daten den Farbencode mitzuspeichern und dann anzuzeigen. Ansonsten sollte zum Beispiel "rot" in der Tabelle gespeichert sein, dann eine funktion mit switch aufbauen und diese mithilfe der funktion den Farbencode zurückzugeben.


    Gruß
    Flava

    Kommentar


    • #3
      Vielen Dank für die Schnelle Antwort.

      Ich habe nun die Fehler behoben, leider stehe ich immer noch auf dem Schlauch da es noch nicht funktioniert.

      Ich habe es nun geändert zu:

      PHP-Code:
      <td style="background-color:<?php echo $farb_arr[$daten['klasse']] ?>;" >
      Ich schätze es funktioniert noch nicht, da ich bei ... $farb_arr[$daten['klasse']] ... eine Fehler habe und zwar das "$daten"

      zudem bin ich mir nicht sicher ob das:

      PHP-Code:
      <?php
          $farb_arr 
      = array("Druide" => "#FF7D0A");
      ?>
      in dieser Form richtig eingebunden ist.


      Mit der Bitte um Hilfe,
      Der unwissende Gie22kanne ^^

      Kommentar


      • #4
        hey gie22kanne,


        also ich kann dir einen vorschlag zeigen, dies ist aber nur ein weg um es zu lösen. Spontan fällt mir die Idee mit der funktion ein.


        und zwar zuerst die Funktion erstellen:


        <div>
        PHP-Code:
        function klassenFarben($var) {     
            switch(
        $var) {          
                  case 
        "Druide"$farbe "#FF7D0A"; break;  
                  case 
        "Krieger"$farbe "#FFFFFF"; break;   
                 case 
        "Magier"$farbe "#000000"; break; 
                 default: 
        $farbe "Fehler";     
            } 
             return 
        $farbe

        </div>

        Sobald die Funktion erstellt ist. Kannst du das in deinem Script einbauen und du kannst die Funktion immer erweitern, wenn eine klasse hinzu kommt.


        So würde es dann eingebunden aussehen:
        PHP-Code:
        <td style="background-color: <?php echo klassenFarben($daten['klasse']); ?>;">
        Somit würdest du die Farben ändern können.


        Die Funktion kannst du entweder in deiner index.php einbauen oder eine externe datei mit dem namen "functions.php" erstellen und diesen dann in der "index.php" datei einbinden. Du kannst selbst entscheiden wie du es machen möchtest.


        Viele Grüße
        Flava

        Kommentar


        • #5
          Vielen Dank für die schnelle Antwort

          Habe die Funktion hinzugefügt. Der Quellcode-Style zeigt mir das jedoch durchgestrichen.

          Code:
          element.style {
          background-color: Fehler;
          }
          Zumindest wird "Fehler" von der "function" schon angezeigt. Ich nähere mich dem Ziel ^^

          Ich bin mir trotzdem noch nicht sicher was ist anstelle von "$daten" angeben muss bzw ob das so richtig ist.

          PHP-Code:
          <tr style="background-color: <?php echo klassenFarben($daten['klasse']); ?>;">
          Eventuell liegt dort der Fehler aber ich wüsste nicht was ich sonst angeben muss. *Verzweiflung macht sich breit* xD

          Nochmals entschuldigung für den unendlich Thread ^^

          Hier nochmal der derzeitige Code:

          PHP-Code:
          <?php
          require_once('inc/db.php');
          $sql "SELECT * FROM dkp ORDER BY id";

          if (
          $erg $db->query($sql)) {
              while (
          $datensatz $erg->fetch_object()) {
                  
          $daten[] = $datensatz;
              }
          }
          ?> 

          <html>
              <head>
                  <script src="https://www.infight.net/inc/sort.js"></script>
                  <meta charset="utf-8">
                  <title>DKP - Übersicht</title>
                  <style>
                          /*table {border: 1px solid black; padding: 0px;}*/
                          /*th {border: 1px solid black; padding: 5px;}*/
                          /*td {border: 1px solid black; padding: 5px;}*/
                      
                      body {
                          
                      }
                      
                      h1 {
                          text-align: center;
                      }
                      
                      h2 {
                          text-align: center;
                      }
                      
                      table {
                          border: 1px solid black;
                          border-spacing: 0px;
                          border-collapse: collapse;
                          margin-left: auto;
                          margin-right: auto;
                      }

                      table td {
                          border: 1px solid black;
                          border-spacing: 0px;
                          border-collapse: collapse;
                          padding: 3px;
                          /*background: #8b8989;*/
                      }

                      table th {
                          border: 1px solid black;
                          border-spacing: 0px;
                          border-collapse: collapse;
                          padding: 3px
                      }

                      table h2 {
                          margin: 0
                      }

                      table caption {
                          padding: 0.5em;
                          text-align: left;
                          font-weight: bold;
                      }

                      table.is_sortable thead th {
                          background-color: lightgray;
                      }
                  </style>
              </head>
              <body>
              

          <?php
              
          function klassenFarben($var) {     
                  switch(
          $var) {          
                      case 
          "Druide"$farbe "#FF7D0A"; break;  
                      case 
          "Krieger"$farbe "#FFFFFF"; break;   
                      case 
          "Magier"$farbe "#000000"; break; 
                      default: 
          $farbe "Fehler";     
                  } 
                  return 
          $farbe
              }
          ?>    

              
              
              
              

          <h1>Überschrift 1</h1>
          <main>
              <h2>Überschrift 2</h2>
              <table class="sortierbar">
                  <!--<caption>Empty</caption>-->
                  <thead>
                  <tr>
                    <th data-priority="1">ID</th>
                    <th data-priority="2">Name</th>          
                    <th data-priority="3">Klasse</th>
                    <!--<th data-priority="4">Raid</th>
                    <th data-priority="5">Boss</th>
                    <th data-priority="6">Item</th>
                    <th data-priority="7">Off-Item</th>
                    <th data-priority="8">Stunden</th>
                    <th data-priority="9">Farm-DKP</th>-->
                    <th data-priority="10">Ausgaben</th>
                    <th data-priority="11">DKP</th>
                    <th data-priority="12">Quotient</th>
                  </tr>
                </thead>
                <tbody>
              <?php
                  
          foreach ($daten as $inhalt) {
              
          ?>
                  <tr style="background-color: <?php echo klassenFarben($daten['klasse']); ?>;">
                      <td>
                          <?php echo $inhalt->id?>
                      </td>
                      <td>
                          <?php echo $inhalt->name?>
                      </td>        
                      <td>
                          <?php echo $inhalt->klasse?>
                      </td>
                      <!--<td>
                          <?php echo $inhalt->raid?>
                      </td>
                      <td>
                          <?php echo $inhalt->boss?>
                      </td>
                      <td>
                          <?php echo $inhalt->item?>
                      </td>
                      <td>
                          <?php echo $inhalt->offitem?>
                      </td>
                      <td>
                          <?php echo $inhalt->stunden?>
                      </td>
                      <td>
                          <?php echo $inhalt->farmdkp?>
                      </td>-->
                      <td>
                          <?php echo $inhalt->ausgabe?>
                      </td>
                      <td>
                          <?php echo $inhalt->dkp?>
                      </td>
                      <td>
                          <?php echo $inhalt->quotient?>
                      </td>           
                </tr>
              <?php
              
          }
              
          ?>
                </tbody>
                  <!--<tfoot>
                      <tr>
                          <td colspan=5>EMPTY</td>
                      </tr>
                  </tfoot>-->
              </table>

          </main>
              </body>
          </html>
          LG
          Gie22kanne
          Zuletzt geändert von gie22kanne; 08.09.2020, 19:08. Grund: Kompletten derzeitigen Code vergessen

          Kommentar


          • #6
            hey Gie22kanne,


            hab den Fehler entdeckt


            Du machst einen foreach um die daten anzuzeigen und in dem foreach ändert sich der name der Variable von daten zu inhalt also musst du statt $daten["klasse"] so schreiben $inhalt->klasse also so:


            PHP-Code:
            <tr style="background-color: <?php echo klassenFarben($inhalt->klasse); ?>;">

            somit sollte es funktionieren.

            Kommentar


            • #7
              Zitat von Flavaslava Beitrag anzeigen
              hey Gie22kanne,


              hab den Fehler entdeckt


              Du machst einen foreach um die daten anzuzeigen und in dem foreach ändert sich der name der Variable von daten zu inhalt also musst du statt $daten["klasse"] so schreiben $inhalt->klasse also so:


              PHP-Code:
              <tr style="background-color: <?php echo klassenFarben($inhalt->klasse); ?>;">

              somit sollte es funktionieren.
              Du bist ein Genie!! und ich einfach zu blöd für sowas xD

              Vielen Vielen Dank endlich kann es weiter gehen *G* Hab dir mal eine F-Request geschickt evtl kann ich ja bei dir noch den ein oder anderen Tipp abholen auch gerne gegen bezahlung versteht sich

              Liebe Grüße
              Gie22kanne

              Kommentar

              Lädt...
              X