Echoausgabe, Formatierung HTML

Fruitgum

Erfahrenes Mitglied
Hallo,

Mein Script

PHP:
<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

include 'config.php';
$db = @new MySQLi($host, $username, $password, $db_name);
if (mysqli_connect_errno()) {
    die('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error());
}
$sql = 'SELECT * FROM news ORDER BY datetime DESC';
$result = $db->query($sql);
if (!$result) {
    die ('Konnte den Folgenden Query nicht senden: '.$sql."<br />\nFehlermeldung: ".$db->error);
}
if (!$result->num_rows) {
    echo '<p class="info">Es sind keine Newsbeiträge vorhanden</p>';
} else {
    while ($row = $result->fetch_assoc()) {
        echo "<dl>\n";
		echo "<dt>".$row['titel']."</dt>\n";
        echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row['datei']."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n";
        echo "<dd>".$row['text']."</dd>\n";
		echo "<br><br><br></dl>\n";
		
		echo "<dl class=\"alt\">\n";
		echo "<dt>".$row['titel']."</dt>\n";
        echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row['datei']."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n";
        echo "<dd>".$row['text']."</dd>\n";
		echo "<br><br><br></dl>\n";
    }
}
?>

ruft einige Daten aus der Datenbank auf und gibt sie aus. Die Ausgabe ist mit CSS gesteuert und funktioniert auch prima. Wie man sieht gibt es 2 Blöcke, ein einfach <dl> und eine <dl class"alt"> die ordnen die Ausgabe unterschiedlich an.

Ich habe 5 Einträge in der Datenbank aber jeder eintrag wird doppelt ausgegeben, aber ich möchte das die letzten Einträge sich mit der <dl> class abwechseln.

Wie gehe ich da ran?


LG, Marc
 
Hi,

Ich habe 5 Einträge in der Datenbank aber jeder eintrag wird doppelt ausgegeben, aber ich möchte das die letzten Einträge sich mit der <dl> class abwechseln.

ich weiß nicht, was Du mit "die letzten Einträge" meinst, wolltest Du auf Folgendes hinaus?

PHP:
$alt_flag = false;
while ($row = $result->fetch_assoc()) {
   echo "<dl";
   if($alt_flag) {
      echo ' class="alt"';
      $alt_flag = false;
   } else {
      $alt_flag = true;
   }
   echo ">\n";     
   echo "<dt>".$row['titel']."</dt>\n";
   echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row['datei']."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n";
   echo "<dd>".$row['text']."</dd>\n";
   echo "<br><br><br></dl>\n";
}

LG
 
Ich denke er möchte das erreichen.


PHP:
$farb_counter = 0;
$alt_flag = false;
while ($row = $result->fetch_assoc()) {
 if($farb_counter % 2 == 0)$class = 'class="rowA"';
          else $class = 'class="rowB"';
  
 echo "<dl ".$class.">\n";     
   echo "<dt >".$row['titel']."</dt>\n";
   echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row['datei']."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n";
   echo "<dd>".$row['text']."</dd>\n";
   echo "<br><br><br></dl>\n";
$farb_counter++;
}
 
Zuletzt bearbeitet von einem Moderator:
Okay, ich glaube ich habe mich nicht richtig ausdrücken können, deshalb stückle ich mal mein code.



der ist ja klar, das ist nur meine verbindung zur Datenbank und abfragen ob auch alles geht.

PHP:
<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

include 'config.php'; 
$db = @new MySQLi($host, $username, $password, $db_name); 
if (mysqli_connect_errno()) { 
    die('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error()); 
} 
$sql = 'SELECT * FROM news ORDER BY datetime DESC'; 
$result = $db->query($sql); 
if (!$result) { 
    die ('Konnte den Folgenden Query nicht senden: '.$sql."<br />\nFehlermeldung: ".$db->error); 
} 
if (!$result->num_rows) { 
    echo '<p class="info">Es sind keine Newsbeiträge vorhanden</p>'; 
} else {


Der zweite Teil ist für die ausgabe:
PHP:
while ($row = $result->fetch_assoc()) { 

# erster Echoblock
        echo "<dl>\n"; 
        echo "<dt>".$row['titel']."</dt>\n"; 
        echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row['datei']."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n"; 
        echo "<dd>".$row['text']."</dd>\n"; 
        echo "<br><br><br></dl>\n"; 



# zweiter Echoblock        
        echo "<dl class=\"alt\">\n"; 
        echo "<dt>".$row['titel']."</dt>\n"; 
        echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row['datei']."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n"; 
        echo "<dd>".$row['text']."</dd>\n"; 
        echo "<br><br><br></dl>\n"; 
    } 
} 
?>

Der obere Block, erster Echoblock, formatiert die Ausgabe anders, also im zweiten Echoblock. Einmal wird das Bild links ausgegeben und im zweiten Echoblock rechts. Dieses verhalten wird durch eine css Datei gesteuert.

Wenn ich nun in der SELECT zeile noch einstelle das er mir 2 oder 5 der letzten Einträge ausgeben soll ist das auch klar wie ich das gemeint habe mit den letzten Einträgen ausgeben!?

Wenn ich die Seite aufrufe gibt er, bei 5 Einträgen, 10 aus, weil er alle doppelt ausgibt.

ich möchte aber immer, Eintrag 1 = erster Echoblock, Eintrag 2 = zweiter Echoblock, Eintrag 3 = wieder erster Echoblock. Verstanden.

Dabei möchte ich aber einfach neue einträge machen, er soll immer nur vom jüngsten Datum aus, 5 Einträge "oder 50" im Wechsel mit den Echoblöcken ausgeben.


:)
 
Zuletzt bearbeitet:
PHP:
$counter = 0;
while ($row = $result->fetch_assoc()) { 
   if($counter % 2 == 0){
      # erster Echoblock in der ersten Runde
      echo "<dl>\n"; 
      echo "<dt>".$row->titel."</dt>\n"; 
      echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row->datei."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n"; 
      echo "<dd>".$row->text."</dd>\n"; 
      echo "<br><br><br></dl>\n"; 
   }else{
      # zweiter Echoblock in der zweiten Runde
      echo "<dl class=\"alt\">\n"; 
      echo "<dt>".$row->titel."</dt>\n"; 
      echo "<dd class=\"img\"><br><br><br><img src=\"admin/news/image/".$row->datei."\" alt=\"Bild\" width=\"180\" height=\"180\" ></dd>\n"; 
      echo "<dd>".$row->text."</dd>\n"; 
      echo "<br><br><br></dl>\n"; 
   } 
   $counter ++;
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück