Portal > Foren > PHP > PHP-Programmierung > Klassiker - Zeilenumbruch nach best. Anzahl von Spalten
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 26.11.2007, 18:08 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 285
Standard Klassiker - Zeilenumbruch nach best. Anzahl von Spalten

Nabend,

Ich habe verschiedene Bildinfos in der Datenbank die ich zusammen mit den Bildern in einer HTML Tabelle auflisten will. Alle 5 Spalten wird eine neue Zeile gemacht werden die sich dann wieder füllt.

Ich denke Modulo geht schon in die richtige Richtung, aber ich bekomm einfach keine saubere Tabelle zustande...

Tst, ich kriegs einfach nicht...Sorry für den komischen Code allerdings befinde ich mich in der View und da siehts etwas anders aus.

PHP-Code:
<table border="1">
<tr>

<?php foreach($this->images as $key => $image) : ?>
<td>
    <img src="">
</td>
<?php if($key == 0) : ?>
</tr><tr>
<?php else : ?>
<td></td>
<?php endif; ?>

<?php endforeach; ?>
</tr>

</table>
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.11.2007, 18:33 Nach oben    #2
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 539
Standard

also zunächst mal, key is auch immer ne zahl? *g*
Aber ich vermute das problem kommt einmal daher, dass du in der else-Anweisung immer eine weitere Spalte einfügst, die sollte da nicht hin.
Und in der letzten Zeile bleibt ja noch platz übrig, wenn dort nur ein oder zwei bilder drin stehen; also solltest du den rest mit leerzellen ausfüllen (die anzahl bekommst du über einen modulo am ende raus).
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.11.2007, 19:05 Nach oben    #3
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.203
Standard

wie wäre es, das ganze "fließend" ohne tabelle zu machen ? bin damit selbst aktuell etwas am versuchen, einfach nen div den man floatet mit vielleicht fester größe (kommt auf deine bilder an) und durch das floaten wandern die halt in reihen, wenn dem ganzen mehr platz zur Verfügung steht sind es weniger reihen und ansonsten halt mehr.

Ansonsten ist dein problem dass du das array mit "dummys" füllen musst um auf eine sauber durch die anzahl der elemente pro reihe teilbare menge zu kommen, damit eine reihe nicht auf einmal nur noch ein <td></td> hat sondern selbst wenn nur 1 bild drin ist, auch die weiteren 4 <td></td>.

entweder auf for-schleifen umsteigen und mit ner erkennung und break arbeiten oder weiter mit foreach und dann halt das array mit einer passenden Menge Daten füllen..
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.11.2007, 20:30 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 285
Standard

So hab im Netz nen Schnipsel aufgabelt und das sieht soweit ganz gut aus.

@Straight
Wie geschrieben muss ich noch die leeren Zeilen ergänzen allerdings steig ich grad nicht durch wie der modulo das hinkriegen soll

PHP-Code:
<table border="1">
<?php foreach($this->images as $key => $image) : ?>
<?php 
if($key == 0) : ?>
<?php 
if($key != 0) : ?>
</tr>
<? endif; ?>
<tr>
<? endif; ?>
<td><img title=""></td>



<?php endforeach; ?>
</table>
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.11.2007, 22:05 Nach oben    #5
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 539
Standard

PHP-Code:
<table>
<tr>
<?php foreach($this->images as $key => $image) : ?>
<td><!--img--></td>
<?php if($key == 0) : ?>
</tr><tr>
<?php endif; ?>
<?php 
endforeach; ?>
<?php 
for($i 0$i count($this->images) % 3$i++) : ?>
<td></td>
<?php endif; ?>
</tr>
</table>
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.11.2007, 22:05 Nach oben    #6
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 848
Standard

Hast noch vergessen, beim lezten Bild den Sack wieder zuzumachen, also colspan anzugeben und </tr>.

Letztes Bild hat $key === count($this->images) - 1, was du einmal vor der Schleife ausrechnen solltest und colspan ist $iNumCols + 1 - ($key % $iNumCols), glaub ich.

Hilfreich zum debuggen ist es, den Quellcode (HTML-Ausgabe) einzurücken.

Basti

Geändert von Basti (27.11.2007 um 14:09 Uhr)
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.11.2007, 09:31 Nach oben    #7
Patrick Freitag
 
Registriert seit: 17.08.2005
Beiträge: 125
Standard

Wie Benjamin schon geschrieben hat, wär es auch ne interessantere und wahrscheinlich sogar einfachere Lösung eine gefloatete Liste zu erstellen. Der gibst du einfach deine gewünschte Breite (wenn du 5 Bilder hast musst du halt ausrechnen wie die entgültige Breite ist). Wird die Breite überschritten, wandert das in eine neue Zeile. Und basiert nur auf CSS&HTML.
Neq' ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.11.2007, 12:12 Nach oben    #8
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 285
Standard

Die Thumbnails haben eine unterschiedliche Breite und Höhe. Unter jedem Thumb soll noch eine Checkbox sein und vielleicht noch 1-2 Icons zum klicken.
Die Dinge unter jedem Thumb sollen dabei in der ganzen Zeile auf der gleichen höhe sein und das ist mit floatenden DIVs nicht ganz einfach.

Oder geht das mit verschachtelten Listen einfacher? etwa so:

HTML Code:
  1. <li><img2></li>
  2. <ul>
  3. <li>Edit Bild 2 | Delete Bild 2 | ...</li>
  4. </ul>
  5. <li><img3></li>

Ich würd ja lieber PEAR Datagrid einsetzen. Aber ich möchte das nicht so mit ZF verwurschteln.

Geändert von Ben (27.11.2007 um 12:17 Uhr)
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.11.2007, 15:23 Nach oben    #9
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

Du programmierst nicht zufällig fast das gleiche wie ich?
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.11.2007, 17:47 Nach oben    #10
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

@ex³

Dazu müsstest du einfach einen DIV-Container mit fester Breite und Höhe nehmen. Darin kannst du dann das Thumbnail positionieren (z.B. zentriert) und die weiteren Inhalte wie du möchtest.

Allerdings je nach dem wie das Design der Seite realisiert wurde, musst du mit floaten etwas experimentieren bevor du da eine in allen Browsern einheitliche Darstellung erzeugst.

Hab das schon selbst realisiert gehabt. Auf Tabellen bist du hier auf jeden Fall nicht angewiesen.


EDIT:
Mit Listen-Elementen würde es auch gehen. Einfach eine ungrade Liste nehmen (<ul> ... </ul>) und darin pro Thumbnail ein Listen-Element (<li><img ... /></li>) erzeugen.

Geändert von dago (27.11.2007 um 17:51 Uhr)
dago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.11.2007, 22:27 Nach oben    #11
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 285
Standard

Da käme schon das nächste prob. wenn meine thumbs nicht alle die gleich größe haben sondern ungefähr relativ verkleinert wurden dann würde ich sie gern auch VERTIKAL zentrieren und das ist und das ist auch nicht so einfach.

Das ganze ist für ein Admincenter da reicht vorerst der Tabellenkram.

Übrigens. Osthofen...das liegt doch hinter Worms.
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.11.2007, 09:14 Nach oben    #12
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 848
Standard

Zitat:
Zitat von dago Beitrag anzeigen
eine ungrade Liste
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.11.2007, 10:28 Nach oben    #13
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

@ex³
Hast schon recht. Kenne außer ein paar Tricks auch keine saubere Lösung.

Zitat:
Zitat von ex³ Beitrag anzeigen
Übrigens. Osthofen...das liegt doch hinter Worms.
Jup, genau.


@Basti
Weiß selbst nicht wie ich da auf "ungerade" komme. Gemeint wahr unsortierte Liste.


EDIT:
@ex³
Eben fällt mir doch was ein. Eigentlich müsstest du ja die Breite und die Höhe des Thubnail kennen. Du müsstest hier halt die Thumbnails nicht global in der CSS Datei, sondern direkt jedes Thumbnail einzeln positionieren.

So in etwa könnte es aussehen:
Code:
<div class="ThumbBox">
    <img style="position:absolute; top:50%; left; 50%; width:100px; height:80px; margin: -40px 0 0 -50px;" src="..." alt="..." />
</div>
Die richtigen Werte für margin müsstest du dann mit PHP vorher oder im Template berechnen.

Geändert von dago (28.11.2007 um 10:51 Uhr)
dago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.11.2007, 11:17 Nach oben    #14
Patrick Freitag
 
Registriert seit: 17.08.2005
Beiträge: 125
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
Da käme schon das nächste prob. wenn meine thumbs nicht alle die gleich größe haben sondern ungefähr relativ verkleinert wurden dann würde ich sie gern auch VERTIKAL zentrieren und das ist und das ist auch nicht so einfach.
Und wo liegt da das Problem? Du kannst doch jedes Listenelement vertikal zentrieren lassen, oder versteh ich dein Problem gerade nicht?
Neq' ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.11.2007, 11:28 Nach oben    #15
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

@Neq'
Und wie würdest du da Browser übergreifend vorgehen?
dago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45