MYSQL Inhalt in Tabelle ausgeben

Michael81

Mitglied
MYSQL Inhalt in Tabelle ausgeben. Problem bei der aufteilung/ verteilung

Hallo,
ich habe folgendes Problem. Ich habe im meiner MYSQL Tabelle 57 Einträge. Diese möchte ich in einer Tabelle ausgeben. Bisher ist das ja kein Problem. Aber die Räume 1-28 sollen Links aufegführt werden, daneben Name und Buchnummer. Die Datensätze 29-57 sollen aber nicht darunter ausgegeben werden, sondern neben 1-28. Da ich das ganze nicht beschreiben kann, habe ich das als Bild angehangen, wie es ausshen soll.

Ich habe schon alles versucht. aber mir wird immer alles untereinander angezeigt oder nur fehler.




PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bestand</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<?php

//includieren von datein
include 'lib/error.php';
include 'lib/connect.php';
include 'lib/kontrolle_eingabe.php';

//mysql daten abrufen
$anzeigen = mysql_query("SELECT * FROM bestand ORDER BY haftraum");


//tabelle generieren
echo "<table id='tabelle_ausgabe' border='1'>";
echo "<tr>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "</tr>";

//datenabfrage und in tabelle füllen 
while($ausgabe = mysql_fetch_array($anzeigen)){
    echo "<tr>";
    echo "<td>".$ausgabe['haftraum']."</td>";
    echo "<td>".$ausgabe['nachname']."</td>";
    echo "<td>".$ausgabe['vorname']."</td>";
    echo "<td>".$ausgabe['gebdatum']."</td>";
    echo "<td>".$ausgabe['Buchnummer']."</td>";    
    echo "</tr>";
  }

echo "</table>";

?>
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    39,1 KB · Aufrufe: 345
Zuletzt bearbeitet:
Moin,

also ich konnte nach schnellem Überfliegen gerade nur einen Fehler entdecken:
Code:
echo "<td>Haftraum</td><td>Nachname</td><th>Vorname</td><td>Geburtsdatum</td>
...da ist ein <th>-Tag anstelle eines <td>-Tags reingerutscht.
Vllt. löst es das Problem ja schon.
 
Ne, leider nicht. Ich habe das gestern nur vergessen zu ändern. Das war mal <th>.
Aus faulheit habe ich da "suchen und ersetzen" benutzt. ist aber jetzt geändert
 
Zuletzt bearbeitet:
Bei codes ist es Sinnvoll die entsprechenden Tags zu verwenden.
Bei php gibt es:
[.PHP][./PHP]
Du musst nur die Punkte entfernen und den code dazwischen posten.

Des weiteren wüsste ich gerne was genau Dein Problem ist? Gibt es eine Fehlermeldung, wenn ja welche?
Kopieren und hier posten.


grüße
 
Sorry, ich habe beim ändern des Quelltextes ausvershen alles überschrieben. Also auch meine Fragestellung und das [.PHP][./PHP].
 
In diesem Fall würde ich 2 Div Boxen verwenden und diese mittels dem CSS command "float: left;" nebeneinander setzen.
In diese setzt Du jeweils deine Abfragen.
PHP:
<div class="haftraumbestand">
//tabelle generieren
echo "<table id='tabelle_ausgabe' border='1'>";
echo "<tr>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "</tr>"; 

$getknast = mysql_query("SELECT * FROM bestand WHERE haftraum >= 0 ORDBER BY haftraum LIMIT 0, 28 ");
//datenabfrage und in tabelle füllen 
while($ausgabe = mysql_fetch_array($anzeigen)){
    echo "<tr>";
    echo "<td>".$ausgabe['haftraum']."</td>";
    echo "<td>".$ausgabe['nachname']."</td>";
    echo "<td>".$ausgabe['vorname']."</td>";
    echo "<td>".$ausgabe['gebdatum']."</td>";
    echo "<td>".$ausgabe['Buchnummer']."</td>";    
    echo "</tr>";
  } 

echo "</table>"; 
</div>

PHP:
<div class="haftraumbestand">
//tabelle generieren
echo "<table id='tabelle_ausgabe' border='1'>";
echo "<tr>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "</tr>"; 

$getknast = mysql_query("SELECT * FROM bestand WHERE haftraum >= 29 ORDBER BY haftraum ");
//datenabfrage und in tabelle füllen 
while($ausgabe = mysql_fetch_array($anzeigen)){
    echo "<tr>";
    echo "<td>".$ausgabe['haftraum']."</td>";
    echo "<td>".$ausgabe['nachname']."</td>";
    echo "<td>".$ausgabe['vorname']."</td>";
    echo "<td>".$ausgabe['gebdatum']."</td>";
    echo "<td>".$ausgabe['Buchnummer']."</td>";    
    echo "</tr>";
  } 

echo "</table>"; 
</div>

So müsste es funktionieren.
 
Noch ein kleiner Tip für ein effizienteres und übersichtlicheres Programmieren.

Findest Du es nicht mühsam, die ganze Tabelle und jede einzelne Zeile per echo auszugeben?

Sowas finde ICH persönlich übersichtlicher:

PHP:
<?php while ($row = mysql_fetch_assoc($result) { ?>
Einträge ausgeben
<?php } ?>

Oder noch besser (wurde mir hier erst gerade kürzlich gezeigt und ist mein Favorit):

PHP:
<?php while ($row = mysql_fetch_assoc($result): ?>
Einträge ausgeben.
<?php endwhile; ?>

Habe übrigens die Version meines Vorposters selbst ausprobiert und bei mir hat es problemlos funktioniert ;)

Viele Grüsse
 
Ich habe das jetzt umgesetzt. Nun habe ich das Problem, das die linke Tabelle richtig ausgefüllt wird. Aber die rechte bleibt immer leer. Ich habe die Variabelen, der rechten Tabelle mit ner 1 vershen. Also $ausgabe1, $anzeige1 usw. Damit die nicht doppelt vorkommen. Danach habe ich nach versucht nach der linken Tabelle php zu beenden und die rechtein einen eigenen Abschnitt zu setzen. Aber egal was ich mach, die rechte bleibt leer. Ich bekomm aber auch keine MySQL Fehler angezeigt. Weder mit mysql_errno, mysql:error und error_reporting E-All E-Notice.
momentan sieht es so aus:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bestand</title>
<html>
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  </head>
<body>

<?php

//includieren von datein
include 'lib/error.php';
include 'lib/connect.php';


//tabelle links generieren
echo "<div class='haftraumbestand'>";
echo "<table style='float:left; margin-left:20px; margin-bottom:10px' border='1'>";
echo "<tr>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "</tr>";

//datenabfrage und in tabelle füllen
$anzeigen = mysql_query("SELECT * FROM bestand WHERE haftraum >= 0 ORDER BY haftraum LIMIT 0, 28 ");
while($ausgabe = mysql_fetch_array($anzeigen)){
    echo "<tr>";
    echo "<td>".$ausgabe['haftraum']."</td>";
    echo "<td>".$ausgabe['nachname']."</td>";
    echo "<td>".$ausgabe['vorname']."</td>";
    echo "<td>".$ausgabe['gebdatum']."</td>";
    echo "<td>".$ausgabe['Buchnummer']."</td>";    
    echo "</tr>";
  }
echo "</table>";
echo "</div>";




//tabelle rechts generieren
echo "<div class='haftraumbestand'>";
echo "<table style='float:left; margin-left:1px; margin-bottom:10px' border='1'>";
echo "<tr>";
echo "<th>Haftraum</th><th>Nachname</th><th>Vorname</th><th>Geburtsdatum</th><th>Buchnummer</th>";
echo "</tr>"; 


//datenabfrage und in tabelle füllen 
$anzeigen = mysql_query("SELECT * FROM bestand WHERE haftraum >= 29 ORDER BY haftraum");
//$anzeigen = mysql_query("SELECT * FROM bestand WHERE haftraum >= 29 ORDER BY haftraum LIMIT 29, 53 ");
while($ausgabe = mysql_fetch_array($anzeigen)){
    echo "<tr>";
    echo "<td>".$ausgabe['haftraum']."</td>";
    echo "<td>".$ausgabe['nachname']."</td>";
    echo "<td>".$ausgabe['vorname']."</td>";
    echo "<td>".$ausgabe['gebdatum']."</td>";
    echo "<td>".$ausgabe['Buchnummer']."</td>";    
    echo "</tr>";
  } 
echo "</table>"; 
echo "</div>";

?>


Ach Kero, so ähnlich wie du es beschrieben hast, hatte ich es mal. aber auch da hatte ich das Problem mit den links rechts anordnen. an die Div box habe ich nie gedacht. Wäre ich auch nicht selber drauf gekommen.
Danke schonmal für den tip Martin
 
Zuletzt bearbeitet:
Ich habe es jetzt so unter kontrolle bekommen. Weiß zwar nicht ob es nicht nen schöneren weg gibt. Aber es ****t.

Bei der rechten Tabelle habe ich den Querry zu dieser Version geändert
PHP:
$anzeigen1 = mysql_query("SELECT * FROM bestand WHERE haftraum <= 29 ORDER BY haftraum LIMIT 29, 53 ");
 
Das ist an sich schonmal gut,

allerdings hat dein "LIMIT" in der Query jetzt jeden Sinn verloren, denn du würdest ja mit deinem letzten Ergebnis beginnen und danach 53 weitere anschließen, obwohl du garnicht so viele Räume in der DB hast (vllt. doch, da spezielle Raumnummerierungen....).

Wenn man mal alles rein objektiv betrachtet, dann würde es doch eher Sinn machen, die linke Tabelle mit folgender Query zu generieren:

PHP:
$anzeigen = mysql_query("SELECT * FROM bestand WHERE haftraum < 29 ORDER BY haftraum");

Dadurch spart man sich an dieser Stelle auch das Limit.

Für die rechte Tabelle würde damit folgender Ausdruck sinnvoll sein:

PHP:
$anzeigen1 = mysql_query("SELECT * FROM bestand WHERE haftraum >= 29 ORDER BY haftraum LIMIT 28");

....und hinter das Limit schreibst du dann einfach nur die Anzahl der Datensätze, die du hier anzeigen lassen willst.
Wenn du natürlich versuchst, die Tabelle symmetrisch aufzubauen, dann kannst du dir die LIMITS komplett sparen und arbeitest mit dem Bedingungswert hinter WHERE.

Hoffe das konnte die Sache vllt. noch ein wenig vereinfachen.
 
Zurück