PHP Vernünftige Tabelle hinbekommen?

@raven16: Natürlich, es gibt hier auch keinen richtigen oder falschen Stil. Wobei es immer besser ist den Code so zu schreiben dass man ohne Kommentare erkennt, was der Code macht... Um beim Beispiel $i zu bleiben, man könnte natürlich machen
$i = 0; // Stil-Index initialisieren
oder sowas
Aber ist
$stilNr = 0;
nicht aussagekräftiger, vor allem weil überall, wo es benutzt wird, klar ist, um was für eine Variable es sich handelt?

Ich sage pauschal nichts gegen Variablenbezeichner wie i (wenn sie in kurzen Abschnitten wie im JS-Code auftauchen), aber gerade i (bzw $i) wird häufig als Schleifen-Iterator verwendet, nur in dem Fall halt anders.

Und man sollte sich beim Programmieren durchaus Gedanken über den Code machen, zwar verbringt man am Beginn des Projekts extrem viel Zeit mit dem Programmieren, später besteht das Programmieren aber sehr häufig auch aus dem Lesen des bereits geschriebenen Codes... und da sollte man sich einfach keine Steine in den Weg legen, das rächt sich.
 
Mein Gott, es tut mir ja leid :D
PHP:
$Zeilenstil["Index"] = 0; # Dabei handelt es sich um die Variable,
# die die Zeilen, mithilfe einer CSS-Eigenschaft alternierend darstellt.
:D so besser?

Ich muss die zustimmen, man sollte sich Gedanken drüber machen. Ich habe zu Beginn meiner PHP-Projekten immer schlichte variablen wie "$Time"; "$Database" genommen. Später verliert man aber schnell die Übersicht wenn es sich um ein größere Projekt handelt. Oder Namenkollisionen wie z.B: für "$Time" treten häufger auf.

Arrays sind meiner Meinung nach hierfür eine elegante Lösung.
Z.B: für
PHP:
$config["database"]["host"] = 'localhost';
$config["database"]["name"] = 'test_db';
$config["database"]["password"] = 'xxx':
#später dann vielleicht
$database["connection"] = mysql_connect();
$database["tabel"]["downloads"] = 'test_downloads';
Hier ist es eindeutig klar, um was für eine Variable es sich handelt.
configs [für einstellungen; falls eine DB-Verbindung obligatorisch ist];
database [für alles im zusammenhang einer DB].

Konfiguration --> Datenbank --> Host. Scheint nachvollziehbar zu sein, oder nicht?
 
Zuletzt bearbeitet:
$i = 0; // Stil-Index initialisieren
Das ist ein schönes Beispiel für für einen schlechten Kommentar ;)

Die Verwendung von einem Variablennamen "$i" ist hier vollkommen normal und stört keineswegs bei der Verständlichkeit, da es eine einfache Zählvariable ist.

Jedoch solltest du unbedingt anstatt row'.$i.' ein $row'.$i % 2.' .. draus machen, und $i immer nur hochzählen lassen.
Dann kannst du dir das hier sparen:
if($i == 2) {$i = 0;}
Denn das ist nun wirklich nicht gut ;)
Zur Erleichterung kannst du das $i % 2 Ergebnis zwischenspeichern.


Aber jetzt mal zurück zum programmcode...
Im Momentdiskutiert ihr über kleine Schmutzpartikel auf einem Spiegel, der eigentlich zerbrochen ist. Löst doch lieber mal die extrem schwerwiegenden stiltechnischen Probleme, und dann geht in die Details.

-> In diesem Fall divs zu verwenden ist ja mal super eklig... (zu der Lösung von raven)
 
Zuletzt bearbeitet:
Sehr schöne Tipps von 1668mib. Erinnert mich an http://www.amazon.de/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882. Falls ihr mal in größeren Projekten arbeitet, werdet ihr besser verstehen, warum solche Dinge wichtig sind.
Schon mal eine 800 Zeilen lange Funktion in Java gelesen? Ich ja und das in einer Enterprise Anwendung eines der größten Unternehmen der Welt.

Man sollte seinen Code nicht einfach runtertippen, weil man's schon hundert mal so gemacht hat, ohne nachzudenken. Niemand ist perfekt, vor allem nicht in der IT. Ratschläge sind Know-How und das ist im Berufsleben später nicht immer kostenlos.
 
Muss ich jetzt um Verzeihung betteln oder was? Wie oft denn noch. SORRY!
Aber mein Ziel war es einfach nur, dem Threadersteller eine Alternative Möglichkeit zu zeigen wie man das umsetzten kann, der NAMEN der Variable spielt dabei absolut keine Rolle. Wieso behagt ihr auf den Mist?
Und ich habe ebenfalls Klassen in PHP mit über 500 Zeilen geschrieben. Als ob das von belangen wäre!
Anstatt den armen Threadersteller zu helfen (-diskutiert-)meckert ihr über eine Kleinigkeit.
Ehrlich gesagt verliere ich in der DIV-Suppe mit wiederholenden Style-Informationen die Übersicht. Versucht euer Glück!
 
Eagle-PsyX- schrieb:
Muss ich jetzt um Verzeihung betteln oder was? Wie oft denn noch. SORRY!

Pardon? Weder hab ich das persönlich gemeint, noch sollte es ein Angriff sein. Im Übrigen hast du so einiges falsch verstanden: das Beispiel mit der 800 Zeilen Funktion ist ein negativ Beispiel, wie man's nicht machen sollte.

Mach dich mal wieder locker, hier will dir niemand was. Das Problem des TE ist gelöst, er hat sich bereits entschieden. Und keine Sorge, Ratschläge bekommst du von mir nicht mehr ;)
 
Hoffentlich werde ich jetzt nicht gleich geschlagen wenn ich auch noch einen Vorschlag mache..

PHP:
<table class="LightDark">
    <tr>
        <th>Rang</th>
        <th>Titel</th>
        <th>Interpret</th>
        <th id="last">Album</th>
    </tr>
    <?php
        $lieder[1]['title'] = "you really got a hold on me";
        $lieder[1]['interpret'] = "she & him";
        $lieder[1]['album'] = "volume one";
        
        $lieder[2]['title'] = "take over, the breaks over";
        $lieder[2]['interpret'] = "fall out boy";
        $lieder[2]['album'] = "infinity on high";
        
        $lieder[3]['title'] = "seven nation army";
        $lieder[3]['interpret'] = "the white stripes";
        $lieder[3]['album'] = "elephant";
        
        for ($liedIndex = 1; $liedIndex <= count($lieder); $liedIndex++)
        {
            if ($liedIndex % 2)
                echo '<tr class="light">';
            else
                echo '<tr class="dark">';
            echo '<td>' . $liedIndex . '</td>';
            echo '<td>' . $lieder[$liedIndex]['title'] . '</td>';
            echo '<td>' . $lieder[$liedIndex]['interpret'] . '</td>';
            echo '<td>' . $lieder[$liedIndex]['album'] . '</td>';
            echo '</tr>';
        }
    ?>
</table>
und die .css:
Code:
table.LightDark
{
    border: 1px solid #aaa;
    border-spacing: 0;
}

table.LightDark tr.light
{
    background-color: #fffffd;
}

table.LightDark tr.dark
{
    background-color: #ecf2fe;
}

table.LightDark th, table.LightDark td
{
    padding-left: 5px;
    padding-right: 10px;
}

table.LightDark th
{    
    border-bottom: 1px solid #000;
    border-right: 1px solid #bebebe;
    text-align: left;
    background-color: #dedee0;
}

table.LightDark td
{
    border-bottom: 1px solid #e3e8ee;
}

th#last
{
    border-right: none;
}
Was mir noch nicht gefällt ist, dass es nötig ist bei der letzten Spalte den Rahmen wieder zu entfernen, wenn jemand noch eine schönere Möglichkeit kennt darf er das gerne verbessern.
In der letzten Zeile ist auch noch ein Rahmenstück unten, das ließe sich auf diese Weise auch entfernen, empfinde ich aber nicht als sehr störend.

Bei mir kommt das dabei raus:
 

Anhänge

  • tabelle.png
    tabelle.png
    5,9 KB · Aufrufe: 140
Zuletzt bearbeitet: (Heading-Hintergrund)
Zurück
Oben