ich wollte meine php-Dateien, speziell die Tabellen etwas dynamischer machen.
Wen ich Daten aus einer MySQL Tabelle ausgebe erstelle ich eine HTML Tabelle, die Zeile die sich wiederholen soll schreib ich in eine Schleife.
Jetzt dachte ich mir man müsste die Tabelle(n) in einer Funktion habe, die ich dann immer wieder aufrufe.
Allerdings stehe ich vor einigen Problemen.
a) die unterschiedliche Anzahl der Spalten
b) manchmal ein, manchmal zwei th.
Ich habe auch wenig Ahnung wie ich das machen müsste, ob man so was überhaupt macht.?
Ich habe schon ein bisschen im Netz gesucht, aber nicht so das wahre gefunden, Weiß jemand ein Tut, wo so etwas beschrieben ist?
Nun, du möchtest ein Script was eine Datenbanktabelle komplett ausgibt, und selber erkennt, wie viele Splaten es hat und alle Als Index gekennzeichneten Spaltennamen als Überschriften (
) ausgibt?
Dann gucke dich doch mal im Bereich der Möglichkeiten mit SQL, und bei den ganzen MySQL Funktionen von PHP um.
fast;)
angenommen ich weiß wie viele Spalten ich habe, fehlt mir irgendwie ne Idee wie ich die Tabelle dynamisch gestallten kann.
Angenommen mysql_num_fields gibt mir 2 zurück, die Indexe kann ich nicht nutzen, da ich andere Bezeichnungen haben möchte.
[code]
[/code]
kann man so was irgendwie universeller erstellen, zB das ich an einer anderen Stelle der Datei, die gleiche Tabelle nur mit x Spalten mehr oder weniger und anderen colspan oder ganz auf die erste th verzichten.
Doch doch, es kommt denke ich an. Hast du dir mal die SQL Referenzen und das Mysql Funktionen Manual, was ich verlinkt habe komplett durchgelesen ? es gibt sicher auch ne Möglichkeit, die assoziativen Indexe rauszukriegen. vllt auch irgendeine Konstellaton mit mysql_fetch_array()…
Wenn dein Hauptproblem derzeit noch ist, dass du nicht weisst, wie du über eine variable Anzahl von Array-Elementen loopen sollst - dann bietet sich ggf. auch eine foreach-Schleife an der Stelle an.
(Und wenn nicht - dann werde ich aus deiner Problembeschreibung wohl nicht so ganz schlau …)
Du solltest, wenn du schon eine Funktion schreibst, vorher aber noch überprüfen, ob du von der Query überhaupt ein Ergebniss erhälst, oder ob das ganze als Error endet
Poste doch mal den Code wenn du nichts dagegen hast. Ein Forum sieht mehr, und hat mehr Ideen als einer alleine.
Das was du da grade machst, mach es nämlich extrem einfach, mal eben für iwas eine datenbanklösung zu bekommen - ohne den ganzen auslesescripting krams.
ich bin jetzt einen Schritt weiter, ich weiß nur nicht ob das was ich mache Sinn macht. Die Ergebnisse stimmen. Falls es Ok sein sollte, dann spare ich mir sehr viel Arbeit.
$erg1 = mysql_query(“SELECT ma_id, name, vorname,email FROM ma”);
[code] function zeigeTab($FErg, $FTitelErg) {
$anz = mysql_num_fields($FErg);
$tab= “
”; //Tabellenanfang
$tab.= “
”;
for($i=0;$i<$anz;$i++){ //Spalten für Kopf
$tab.= “
Ich bekomme eine Kopfzeile mit 4 Einträgen und Ergebniszeilen.
Da ich viele Dateien mit mit Tabellenansichten habe ist das schon mal ganz gut, denke ich.
Richtig toll wäre es, wenn ich zb die ma_id nicht mit in der Anzeige hätte, aber in einigen Tabellen brauche ich sie als GET Parameter.
Dann muss ich wohl jede Spalte einzeln in die Funktion einbeziehen?
Wenn du nichts dagegen hast, fände ich es gut wenn wir hier nochmal eine weiterführende Funktion schreiben (alle zusammen - wenn Interesse besteht)
Etwas in der Richtung:
function readTable($tablename, $spalten=NULL, $where=NULL){
// korrektheit der angaben überprüfen
if(is_array($spalten)){
$sql = "SELECT ";
$count_fe = 0;
foreach($spalten AS $spalte){
if($count_fe > 0)
$sql .= ", ";
$sql .= "`".$spalte."`";
}
$sql .= " FROM `".$tablename."`".((is_string($where) && @strlen($where) > 0)? " WHERE ".$where : "");
}else{
$sql = "SELECT * FROM `".$tablename."`";
}
// abfrage, ergebniss spalten rauskriegen und ausgeben, die überschriften nach index in der farbe ändern etc. . quasi alles was möglich ist. ;)
if(!$error)
return $tablestring;
else
return $error;
} // function end
ich bin ja kein Profi in php. Na klar habe ich Interesse, Ich muss mir Dein Script in Ruhe anschauen.
Da ist zu viel neu für mich, ich war ja schon froh das ich mein Script so hinbekommen habe;)
Natürlich kannst du auf verschiedene Spalten verzichten
nur den idx aus dem Array löschen kannst du zB so:
while($row = mysql_fetch_assoc($sql))
{
echo "<tr>";
$idx = array_shift($row); //Löscht erstes Element aus Array und gibt es zurück
foreach($row as $one)
echo "<td>$one</td>";
echo "</tr>";
}
ansonsten verzichtest du einfach komplett auf die Foreachschleife, und gibst die Elemente manuell an