Automatisch neue Tabellenzeile
Devoa
- html
Hallo,
ich habe mir (möglicherweise viel zu umständlich) so eine Tabelle zusammengeschustert:
<table border="0" cellpadding="15">
<tr>
<?php
$c0 = '28.09.02';
$c1 = '11.05.04';
$c2 = '03.05.05';
$arr = array('<a href="termine.php?c=0">'.$c0.'</a>',
'<a href="termine.php?c=1">'.$c1.'</a>',
'<a href="termine.php?c=2">'.$c2.'</a>');
$termine = count($arr);
$datum = 'c'.$_GET[c];
$arr[$_GET[c]] = $$datum;
for ($i = 0; $i < $termine; $i++) {
echo "\n\t",'<td>'.$arr[$i].'</td>';
switch ($i) {
case 8: echo "\n\n",'</tr>'."\n\n".'<tr>',"\n"; break;
case 17: echo "\n\n",'</tr>'."\n\n".'<tr>',"\n"; break;
case 26: echo "\n\n",'</tr>'."\n\n".'<tr>',"\n"; break;
case 35: echo "\n\n",'</tr>'."\n\n".'<tr>',"\n"; break;
}
}
echo "\n"; ?>
</tr>
</table>
<?php
include("termin$_GET[c].php");
?>
Funktion: Die Variablen c0-c2 sind Daten für bestimmte Termine. Ich erzeuge eine Tabelle, in der alle Termine nacheinander reingeschrieben werden. Beim Klick auf das entsprechende Datum wird die Nummer des Termins als GET-Parameter gespeichert und die entsprechende Terminseite (heißt dann "termin0.php" etc.) included.
Funktioniert alles soweit hervorragend, soweit zur Vorrede :(
Das eigentliche Problem: Die switch-case-Anweisung. Diese dient im Moment dazu, alle 9 Termine eine neue Zeile anzufangen. Funktioniert auch soweit *g*, doch das Problem tritt auf, falls die Auflösung verändert wird, und die Seite muss kompatibel zu unterschiedlichen Auflösungen sein. Der Wert "9" ist für meine verwendete Auflösung 1280x1024 entstanden, so dass es da am besten aussieht!
Ich dachte schon an eine Einbindung eines JavaScriptes, welches die Bildschirmauflösung des Benutzers ausliest und dann abhängig davon verschiedene switch-case-Anweisungen ansteuert mit anderen Zahlen... doch das erschien mir alles zu kompliziert und umständlich, da steckt zu viel dahinter.
Ist es nicht viel mehr irgendwie möglich (Bezug zum Titel, oh ja!) automtisch eine neue Tabellenzeile anzufangen? Etwa so: ich definiere eine Tabellenbreite und alles, was drüber geht, geht in eine neue Zeile. Bei dem normalen "width"-Attribut ist es ja so, dass einfach nur gequetscht wird, jedoch keine neue Zeile begonnen wird.
Weiß jemand Rat?
Gruß
Hi,
ich habe mir (möglicherweise viel zu umständlich) so eine Tabelle zusammengeschustert:
vor allem viel zu falsch, denn es bleibt immer ein leeres <tr></tr> übrig. Warum beginnst Du die Ausgabe einer jeden Zeile nicht mit dem Beginn der Zeile, also dem <tr>, anstatt eben dies erst mal pauschal in die Welt zu klatschen?
Das eigentliche Problem: Die switch-case-Anweisung. Diese dient im Moment dazu, alle 9 Termine eine neue Zeile anzufangen. Funktioniert auch soweit *g*, doch das Problem tritt auf, falls die Auflösung verändert wird, und die Seite muss kompatibel zu unterschiedlichen Auflösungen sein. Der Wert "9" ist für meine verwendete Auflösung 1280x1024 entstanden, so dass es da am besten aussieht!
Du hast ein HTML- oder CSS-Problem. PHP-Code ist hier nutzlos und kontraproduktiv. Zeige bitte Code auf, anhand dessen das Problem nachvollzogen werden kann.
Ich dachte schon an eine Einbindung eines JavaScriptes, welches die Bildschirmauflösung des Benutzers ausliest
Recherchiere zunächst über die absolute und grenzenlose Sinnfreiheit des Betrachtens der Bildschirmauflösung.
Ist es nicht viel mehr irgendwie möglich (Bezug zum Titel, oh ja!) automtisch eine neue Tabellenzeile anzufangen? Etwa so: ich definiere eine Tabellenbreite und alles, was drüber geht, geht in eine neue Zeile. Bei dem normalen "width"-Attribut ist es ja so, dass einfach nur gequetscht wird, jedoch keine neue Zeile begonnen wird.
Mir ist nicht klar, was dieser Lösungsansatz mit Deinem Problem zu tun haben soll.
Cheatah
Lass einfach die komplette switch-case-Anweisung weg. Dann wird eine lange Tabellenzeile erzeugt.
Ich möchte allerdings, dass automatisch eine neue Zeile angefangen wird, wenn der zur Verfügung stehende Platz ausgefüllt ist, d.h. alles auf die aktuelle Seite passt und der Betrachter nicht nach rechts scrollen muss.
Hi,
Lass einfach die komplette switch-case-Anweisung weg. Dann wird eine lange Tabellenzeile erzeugt.
der Punkt ist, dass Du Hilfe durch andere effektiv verhinderst, wenn Du bei clientseitigen Problemen serverseitigen Code postest. Wenn Du also Hilfe haben möchtest, dann zeigst Du den *erzeugten* Code, nicht den erzeugenden.
Ich möchte allerdings, dass automatisch eine neue Zeile angefangen wird, wenn der zur Verfügung stehende Platz ausgefüllt ist, d.h. alles auf die aktuelle Seite passt und der Betrachter nicht nach rechts scrollen muss.
In dem Fall ist die zeilenweise Zuordnung offensichtlich kein integraler Bestandteil der Daten. Du hast also keine tabellarischen Daten vorliegen - nimm keine Tabelle.
Cheatah
Om nah hoo pez nyeetz, Devoa!
Ist es nicht viel mehr irgendwie möglich (Bezug zum Titel, oh ja!) automtisch eine neue Tabellenzeile anzufangen?
Die Daten, die in den Zellen einer Zeile stehen, sollten schon irgendwie zusammen gehören. Ich vermute, dass das in deiner Tabelle nicht der Fall ist, weil es ja sonst nicht egal wäre, wann eine neue Zeile beginnt. Ich denke, du missbrauchst eine Tabelle zu Layoutzwecken.
Ich schlage deshalb vor, dass du deine Termine in ein geeigneteres Element packst, da es möglicherweise eine Liste von Terminen ist, bietet sich wohl <li> an und sie via CSS nach deinen Wünschen formatierst. Damit sich die Termine zeilenweise ausrichten, gibt es die Varianten float:left;
oder display: inline-block;
.
Matthias