Struckturierte Ausgabe

LoMo

Erfahrenes Mitglied
hi @ all

Ich würde die Daten aus meiner Tabelle gerne in vier Spalten ausgeben. Ich hab es so probiert:

PHP:
	function tabellentext_ausgeben($rs)
	{
		$i = 0;
		echo "<table width=\"100%\" height=\"100%\" cellpadding=\"0\" cellspacing=\"0\">";
		while ($objekt = mysql_fetch_object($rs))
		{
			echo "<tr>";
			$i = $i + 1;
			if ($i==4)
			{
				$i=0;
				echo '<td><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=test&feldinhalt='.trim($objekt->test).'" target="hauptframe">'.trim($objekt->test).'</a></td></tr>'; 
			}
			else
			{
				echo '<td><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=test&feldinhalt='.trim($objekt->test).'" target="hauptframe">'.trim($objekt->test).'</a></td>'; 

			}
		}
		echo "</tr>";
		echo "</table>";
	}

Weiss jemand wo der Fehler liegen könnte ?

Kleine Kurzbeschreibung:

Er soll alle Datensätze aus den Query Ergebniss ausgeben innerhalb von vier Spalten.
z.B.

Feldinhalt | Feldinhalt | Feldinhalt | Feldinhalt
Feldinhalt | Feldinhalt | Feldinhalt | Feldinhalt


Das soll er solang wiederhohlen bis er alle Datensätze ausgegeben hat.

mfg lomo
 
Zuletzt bearbeitet:
du hast in der WHILE-Schjleife bei dem else vergessen <tr> zu zu machen :)

ich hoffe, das war es - denn ich hab ihn nicht ausprobiert, sondern nur geguckt...
 
Versuch das ganze mal mit Modulus zu lösen.
Modulus gibt immer den Rest von 2 Zahlen an, wenn man sie teilt.
$i % 4 ist immer dann 0, wenn $i glatt durch 4 Teilbar ist.
Also wenn $i = 0, 4, 8, 12, 16 ... ist, ergibt $i % 4 0.
Damit kannst du sowas am besten lösen.
Kleiner Ansatz:
PHP:
while(...)
{
If($i % 4 == 0 && $i != 0) {
echo "</tr>";
echo "<tr>";
}
echo "<td>...</td>";
$i++;
}
Musst natürlich noch abfangen, dass die Schleife nur 5x durchlaufen wird und dann die Tabelle nicht HTML-konform (also ohne </tr>) abgeschlossen wird.
 
Zuletzt bearbeitet:
Erstmal vielen Dank.

Einen Fehler hab ich noch und zwar macht er jetzt 5 Spalten wenn ich den Code folgendermaßen Aufbau:

PHP:
	function branchen_ausgeben($rs)
	{
		$i = 0;
		echo "<table cellpadding=\"0\" cellspacing=\"0\">";
		while($objekt = mysql_fetch_object($rs)) 
		{ 
			If($i % 4 == 0 && $i != 0)
			{ 
				echo "</tr>"; 
				echo "<tr>"; 
				echo '<td width=\"25%\"><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=Branchen&feldinhalt='.trim($objekt->Branche).'" target="hauptframe">'.trim($objekt->Branche).'</a></td>'; 
			} 
				echo '<td width=\"25%\" align=\"left\" valign=\"bottom\"><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=Branchen&feldinhalt='.trim($objekt->Branche).'" target="hauptframe">'.trim($objekt->Branche).'</a></td>'; 
				$i++; 
		} 
		echo "</tr>";
		echo "</table>";
	}

Weist du vielleicht noch wie das machbar ist das er nur 4 Spalten macht, und die immer nach unten weiter fortführt ?

mfg lomo
 
Zuletzt bearbeitet:
Starte mal $i = 1 und nicht mit 0.
PHP:
function branchen_ausgeben($rs) 
    { 
        $i = 1; 
        echo "<table cellpadding=\"0\" cellspacing=\"0\">"; 
        while($objekt = mysql_fetch_object($rs)) 
        { 
            If($i % 4 == 0 && $i != 1) 
            { 
                echo "</tr>"; 
                echo "<tr>"; 
                echo '<td width=\"25%\"><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=Branchen&feldinhalt='.trim($objekt->Branche).'" target="hauptframe">'.trim($objekt->Branche).'</a></td>'; 
            } 
                echo '<td width=\"25%\" align=\"left\" valign=\"bottom\"><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=Branchen&feldinhalt='.trim($objekt->Branche).'" target="hauptframe">'.trim($objekt->Branche).'</a></td>'; 
                $i++; 
        } 
        echo "</tr>"; 
        echo "</table>"; 
    }
 
Ich hab noch einen Fehler entdeckt weiss aber nicht wie ich ihn lösen könnte. Es geht um folgendes:

Ich lese die Einträge aus einer Tabelle aus. Es kann aber sein das zwar der Datensatz da ist aber des Feld wo ich gegliedert darstellen will leer ist. Wenn das Feld leer ist fülle ich es nicht aber des Problem ist wenn z.b. 8 Datensätze in der Tabelle stehen und fünf der gewünschten Felder sind leer dann zählt er den Zähler ja trotzdem weiter und er gliedert sie dann falsch.

PHP:
	function ausgeben($rs)
	{
		$i = 0;
		echo '<table width="100%">';
		while($objekt = mysql_fetch_object($rs)) 
		{ 
			If($i % 4 == 0 && $i != 0)
			{ 
				echo "</tr>"; 
				echo "<tr>"; 
				if ($objekt->Feldinhalt != '')
				{
					echo '<td width="25%" height="25" align="left" valign="top"><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=Feldinhalt&feldinhalt='.$objekt->Feldinhalt.'" target="hauptframe">'.$objekt->Feldinhalt.'</a></td>'; 
					$i++;
				}
			} 
			else
			{
				if ($objekt->Feldinhalt != '')
				{
					echo '<td width="25%" height="25" align="left" valign="top"><a href="'.$_SERVER['PHP_SELF'].'"?suchoption=Feldinhalt&feldinhalt='.$objekt->Feldinhalt.'" target="hauptframe">'.$objekt->Firma.'</a></td>'; 
					$i++; 
				}
			}
		} 
		echo "</tr>";
		echo "</table>";
	}


Ich komm da irgendwie nicht drauf. Weiss vielleicht jemand eine Lösung ?

//Edit: Hat sich erledigt habs jetzt richtig aber ein Problem hab ich noch wenn ich nur 2 Datensätze habe dann verschiebt er sie toatal eigenartig.

Beispiel:

feldinhalt | feldinhalt | feldinhalt | feldinhalt

so gliedert er wenn ich 4 oder mehr wie vier Feldinhalte habe

feldinhalt _________| feldinhalt // Der Unterschreichungsstrich (_) steht für ein leer

und so wenn er weniger wie 4 hat wie hier z.B. nur 2

feldinhalt | feldinhalt

so hätte ich es gerne.

weiss jemand woran des liegen könnte ?

mfg lomo
 
Zuletzt bearbeitet:
Nachtrag: habe mir von einem erfahrenen er helfen lassen.

Meine Frage hat sich erledigt: falls Interesse am Script besteht, einfach via PN melden^^

:::::::::::::
*Problem mit Verständnis für Modulus*

Hallo. Ich bin recht neu hier und habe als "Laie" eine Frage:

Ich bin am erstellen einer Bildgalerie. Einlesen, ausgeben, Datei löschen etc. habe ich fertig. Nun stehe ich vor dem Problem, dass ich meine Bilder in 4 Zeilen ausgeben möchte (Breite) und nach unten vorerst einmal keine Begrenzung 8später sollen max 5 Spalten ausgegeben werden und dann mit Seitenzahlforführung (Blätterfkt.) die Bedienbarkeit erweitert werden.

Heute früh bin ich auf den "Modulus" gekommen. Meine Bücher sagen mir hier jedoch nichts dazu. Im Internet finde ich was, aber ich werde nicht schlau draus (zu dumm dafür :( ). Könnte mir jemand einen Rat geben? Bin völlig "gedankenlos" warum es nicht klappt. Habe verschiedene Varianten versucht, aber ohne Erfolg. Meine Ausgabe gibt alle Bilder in einer Linie an.

Ich habe verschiedene Möglichkeiten versucht, die ich hier im Forum gefunden habe: aber ohne Erfolg

System: aus einem Formular werden Bilder in 2 verschiedene Ordner abgelegt:
-Ordner 1 Grossbild
-Ordner 2 Thumbnail

PHP:
<?php
echo '<table border="1">';
echo '<tr>';
echo "<h2>Bisher hochgeladene Dateien</h2>";
$uverz="bildablage"; //Grossbild
$tnuverz="tnbildablage"; //Thumbnail
$verzeichnis= opendir($tnuverz);

//Auslesen der Bilder und Darstellung der Thumbnails mittels Hyperlink auf Großbild (Target_blank)

while($file=readdir($verzeichnis))
{
if(is_file($tnuverz."/".$file))
{

//Uebergabe des Hyperlink an "Array"
$href=array("<a href=\"".$uverz."/".$file."\"target=\"_blank\"><img src=".$tnuverz."/".$file."></a><br>");
}

//hier aus dem Forum kopiert

for ($b=0; $b < count($href);$b++){

echo '<td>';
echo $href[$b];
echo '</td>';


}

if($b%3==2 ){
echo '</tr><tr>';

}
echo '</tr></table>';
}
closedir($verzeichnis);

?>
 
Zuletzt bearbeitet:
Zurück