Aufbau der Informationen

fredolin

Erfahrenes Mitglied
Hallo PHP Gurus,
ich habe ein Gestaltungsproblem mit PHP.
Genauer gesagt, hole ich mir Daten aus einer MySQL Datenbank und würde gerne, da es verschiedene Bereiche sind (z.B. Bereich CMS, Software, Betreibssystem usw) diese auch in einzelnen Box dargestellen.

Doch sobald ich mit einer "while-Schleife" arbeite, dann bekomme ich nur alles untereinander angezeigt.
In dem Bild sieht hier wie es z. Zeit in der Seite angezeigt wird. Ich würde gerne für jeden Bereiche eine einzelne Box anlegen und neben einander anzeigen, mit Überschrift und allen anderen Informationen.

Hier mal mein Code, so wie ich den bis lang hab:

PHP:
$db_sql04 = "SELECT * FROM " . DBKENT . " ORDER BY ID";
    $result04 = mysqli_query($dbhandle, $db_sql04);
   
    if (! $result04 ) {
        echo '<div style="background-color:#FF0000;color:#FFF;font-size:19px;padding:18px;">Eine Fehler ist aufgetreten &rarr; ' . mysqli_error($dbhandle).'</div>';
        exit();
    }

while($row = mysqli_fetch_array($result04, MYSQLI_ASSOC)){
            $levelprozent = $row['level'] * 10;
            //echo $levelprozent . '%';
            //$data[] = $row;
            /*$levelprozent = $row['level'] * 10;*/
            switch ($row['bereich']){
           
                case tools:
                echo '
                    <div class="progress">
                        <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
                            <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
                        </div>
                    </div>';
                break;
               
                case cms:
                echo '
                    <div class="progress">
                        <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
                            <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
                        </div>
                    </div>';
                break;
               
                case bs:
                echo '
                    <div class="progress">
                        <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
                            <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
                        </div>
                    </div>';
                break;
               
                case ssw:
                echo '
                    <div class="progress">
                        <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
                            <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
                        </div>
                    </div>';
                break;
           
           
           
            }
        }

Füge ich in den DIV'S Container einen zusätzlichen DIV Container ein, so wird er vor jeder Zeile eingefügt. Da möchte ich ja nicht.

Würde mich sehr freuen wenn ich da von Euch kleine Denkanstöße bekommen könnte..

Bedanke mich vorab und freue mich von Euch zu lesen ..

Danke Fredolin
 

Anhänge

  • kenntnisseaufbau.jpg
    kenntnisseaufbau.jpg
    203,5 KB · Aufrufe: 27
Wenn ich die Frage richtig verstehe, dann müsstest Du erst einmal die Inhalte entsprechend Deiner Boxen in der while-Schleife zusammenbauen und dann einzeln ausgeben.
Ich versuche mal den Code dir zu schreiben
PHP:
<?php
while($row = mysqli_fetch_array($result04, MYSQLI_ASSOC)){
  $levelprozent = $row['level'] * 10;
  //echo $levelprozent . '%';
  //$data[] = $row;
  /*$levelprozent = $row['level'] * 10;*/
  switch ($row['bereich']){
  
  case tools:
         $toolData .=
  '
<div class="progress">
  <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
  <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
  </div>
</div>
';
  break;
  
  case cms:
  $cmsData .=
  '
<div class="progress">
  <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
  <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
  </div>
</div>
';
  break;
  
  case bs:
  $bsData .=
  '
<div class="progress">
  <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
  <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
  </div>
</div>
';
  break;
  
  case ssw:
  $sswData .=
  '
<div class="progress">
  <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width:'.$levelprozent.'%">
  <div style="text-right">'.$levelprozent.'% Kenntnisse '. $row['art'].'</div>
  </div>
</div>
';
  break;
  
  
  
  }
  }
    
    
echo $cmsData;
echo $sswData;
echo $bsData;
echo $toolData;
     ?>
 
Strings gehören in Anführungszeichen (bei den case-Zeilen).

PHP:
$escape = function ($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); };

$groups = array();

while ($row = mysqli_fetch_assoc($result04)) {
    $levelprozent = $row['level'] * 10;

    if (false === array_key_exists($row['bereich'], $groups)) {
        $groups[$row['bereich']] = '';
    }

    $groups[$row['bereich']] .= '
        <div class="progress">
            <div class="progress-bar progress-bar-info progress-bar-striped active"
              role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100"
              style="width:' . $escape($levelprozent) . '%"
            >
                <div style="text-right">' . $escape($levelprozent) . '% Kenntnisse ' . $escape($row['art']) . '</div>
            </div>
        </div>
    ';
}

foreach ($groups as $group => $htmlContent) {
    echo '<h1>' . $escape($group) . '</h1>';
    echo $htmlContent;
}

(Ungetestet.)

$levelprozent müsste man nicht zwingend escapen (weil nummerischer Wert), aber erfahrungsgemäß ist es zumindest nicht verkehrt, einfach jeden variablen Wert beim Kontextwechsel zu escapen. Dann vergisst man es zum Beispiel später nicht, falls man der Variablen doch mal einen anderen Inhalt gibt.

- http://wiki.selfhtml.org/wiki/PHP/Anwendung_und_Praxis/Kontextwechsel
 

Neue Beiträge

Zurück