PHP Datenbank Frontend

selberbauer

Captain
Registriert
Juni 2009
Beiträge
3.604
Hallo,
ich plane ein PHP Frontend für eine Datenbank zu machen, mit welchem ich allerdings wesentlich weniger Funktionen habe wie bsw. bei Adminer/MyPHPAdminer und eine vereinfachte Oberfläche.


Das soll dann bsw. so aussehen:

| ID | Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 | Spalte 5 | Spalte 6 |
Datensatze 1
Datensatze 2
Datensatze 3
Datensatze 4
...

Nun kann ich bsw. über einen Button einen neuen Datensatz hinzufügen.

Meine Frage ist nun, wie ich die Tabelle am besten "verwirkliche".


Ich dachte da an eine Klasse, welche in eine HTML Tabelle mit den Daten aus der Tabelle bestückt
Code:
<table>
 <tr>
  <td>PHP holt ersten Spaltennamen aus Tabelle</td>
  <td>PHP holt zweiten Spaltennamen aus Tabelle</td>
  .....
 </tr>
</table>

Ist das der einzige Weg oder gibt es noch eine schönere Variante?
 
Guck dir mal CakePHP an. Das baut dir einfache Eingabe/Ausgabeseiten ohne dass du wirklich Programmieren muss.

Edit: Stimmt, für Anfänger ist das nix ;) Sorry. Rechnen hat man auch ohne Taschenrechner gelernt :D
 
Zuletzt bearbeitet:
Ich würde dir Empfehlen noch Paar Bücher über PHP zu Lesen und dir die MySQL Doku Durschzulesen.
Diese ganzen Frameworks wie CakePHP etc solltest du auf keinenfall Benutzen...
Bitte sei mir jetzt nicht Böse, ich mein es nur Gut^^
 
Die Basics von PHP kann ich.
Nur die Erfahrung fehlt mir.

Ist mein semantischer Ansatz oben denn falsch?
Wie sieht ein besserer aus?

Frameworks benutze ich auch nicht gerne
 
Im Grunde ist das schon korrekt. Tabelle sollen in HTML auch mit Tabellen dargestellt werden.

Wenn du jetzt deine Datensätze abfragst, generierst du einfach den entsprechenden html Code zusammen mit den Inhalten.
 
also typischerweise sieht das im Code dann so aus:
Code:
$result = mysql_query("");
if(!$result) {...}

echo "<table>";

while(($row = mysql_fetch_assoc()) !== false) {
    echo '<tr><td>'.$row['id'].'</td></tr>';
}
echo "</table>";
Du kannst auch mysql_fetch_object() nutzen, schenkt meines Wissens nach allerdings nichts, wenn man "nur" Daten hin und herschieben will.

Und wenn du das hast, versuch mal den HTML und PHP-Code in zwei Dateien zu trennen.
 
Und wenn du das hast, versuch mal den HTML und PHP-Code in zwei Dateien zu trennen.

Das ist der springende Punkt.
Wenn ich nun mit einer foreach Schleife SQL Abfragen in eine Tabelle schreibe, dann ist eine Trennung doch schlichtweg unmöglich.
 
:E die letzten PHP-Themen kommen alle von dir.

Templates ist das Stichwort was hier wohl angerissen wird. Dabei Lädst du Template-Files mit Platzhaltern optional auch Code in den Cache ob_start()... include ... ob_get_clean() und dann werden beim parsen Platzhalter ersetzt.

PHP:
/*
annahme $data ist ein verschachteltes Array, welches die Daten enthält
*/
$tpl = new Template('meintemplate.html');
$tpl->setVar("tabelle",$data);
print $tpl->parse();

Im Template könnte es dann folgendermaßen aussehen (das ist übrigens geschmackssache, ob man PHP-Code in Templates benutzt).
PHP:
<table>
<?php
foreach($this->tabelle AS $zeile)
{
print "<tr>";
foreach($zeile AS $spalte)
{
printf("<td>%s</td>", $spalte);
}
print "</tr>";
}
?>
</table>

Diese Methode setzt Caching voraus mit Includes.

Andere würden die Daten in einer Schleife abarbeiten und ein reines Html-Template mit Platzhaltern nutzen
PHP:
<tr>
<td>${spalte1}</td>
<td>${spalte2}</td>
<td>${spalte3}</td>
</tr>

Interessant bei Templates können auch folgende Methoden sein:

__get()
__toString()
 
Zuletzt bearbeitet:
Gut :) Dann schau dir mal Smarty an. Smarty ist eine Template-Engine macht das relativ schick.

Da sieht der Code dann so aus:
Code:
    $result = mysql_query("");
    if(!$result) {...}
    $data = array();
     
    while(($row = mysql_fetch_assoc()) !== false) {
        $data[] = $row;
    }

    $tpl->assign("data", $data);
    $tpl->display('tabelle.tpl');
 
@herbert
:E die letzten PHP-Themen kommen alle von dir.
;)
Templates ist das Stichwort was hier wohl angerissen wird. Dabei Lädst du Template-Files mit Platzhaltern optional auch Code in den Cache ob_start()... include ... ob_get_clean() und dann werden beim parsen Platzhalter ersetzt.
Danke für das ausführliche Konzept, werde mich das Wochenende mal dransetzen.

@enigma
Ich bin nicht sehr der Freund von frameworks, aber danke für den Tipp
 
Zurück
Oben