Hallo,
ich möchte eine Funktion schreiben die mir die Tabelle dyn. generiert.
D.h wenn später eine Spalte in der DB hinzugefügt wird, soll das Skript die neue Spalte mit einbeziehen.
Die Tabelle schaut derzeit so aus:
Zimmernr beschreibung tv balkon
58 mit ausblick 1 1
89 oberster stk. 1 0
Passen dazu sollen auch die richtigen Formelemente platziert werden. Also bei einer bool Spalte eine checkbox usw.
Bei meinem Script erhalte ich die Ausgabe:
58 58 58 58 58 58 58
89 89 89 89 89 89 89
Es wird also nur die erste Spalte ausgeben. ICh weiß nicht wie ich die weiteren Spalten bekomme.
Lösche ich die for schleife weg, erhalte ich das ergebniss:
58
89
Das switch wird also nur einmal pro Zeile durchlaufen. Was muss ich tun damit das swicht pro Zeile durch jede Spalte lauft?
mfg
ich möchte eine Funktion schreiben die mir die Tabelle dyn. generiert.
D.h wenn später eine Spalte in der DB hinzugefügt wird, soll das Skript die neue Spalte mit einbeziehen.
Die Tabelle schaut derzeit so aus:
Zimmernr beschreibung tv balkon
58 mit ausblick 1 1
89 oberster stk. 1 0
PHP-Code:
public function ms_table_form($sql,$post_formurl)
{
$dbconnect = $this->mssql;
if($dbconnect==false)
return trigger_error("Class dbcon_functions: Es wurde noch keine Verbindung von dieser Instanz zur DB aufgebaut! dbconnect(false)",E_USER_ERROR);
else
{
$result = mssql_query($sql);
$i=0;
while ($i < mssql_num_fields($result))
{
$meta = mssql_fetch_field($result, $i);
if (!$meta)
return trigger_error("Class dbcon_functions: Keine Information verfügbar ".var_dump($meta)."! dbconnect(false)",E_USER_ERROR);
else
$datentyp[] = $meta->type;
$i++;
}
$spaltenanzahl = Count($datentyp);
echo "\n".'<form action="'.$post_formurl.'" method="POST" name="form1">';
echo "\n\t<table border=\"1\">";
$result = mssql_query($sql);
if(gettype($result)!="boolean")
{
for($int = 0; $int<$spaltenanzahl;$int++)
$names[] = mssql_field_name ($result,$int);
$count = 0;
while($row = mssql_fetch_array($result))
{
echo "\t<tr>";
for($int = 0;$int<$spaltenanzahl;$int++)
{
switch ($datentyp[$count])
{
case "int":
echo "\t\t<td>".$row[$count]."</td>\n";
break;
case "text":
echo "\t\t<td><textarea name=\"".$names[$count].trim($row[0])."\" cols=\"35\" rows=\"4\">".trim($row[$count])."</textarea></td>\n";
break;
case "bit":
if($row[$count]=="1")
$checkbox = "checked=\"checked\"";
else
$checkbox = "";
echo "\t\t".'<td><input type="checkbox" name="'.$names[$count].trim($row[0]).'" value="'.$names[$count].'" '.$checkbox.'> '.$names[$count].'<br></td>'."\n";
break;
default:
echo "Für den ".$datentyp." gibt es kein passendes Steuerelement.";
}
}
echo "\t</tr>";
}
}
else
return trigger_error("Class dbcon_functions: Die übergebene Query $sql = ".$sql." ist fehlerhaft",E_USER_ERROR);
echo "\n\t</table>";
echo "\n\t".'</form>';
}
}
Bei meinem Script erhalte ich die Ausgabe:
58 58 58 58 58 58 58
89 89 89 89 89 89 89
Es wird also nur die erste Spalte ausgeben. ICh weiß nicht wie ich die weiteren Spalten bekomme.
Lösche ich die for schleife weg, erhalte ich das ergebniss:
58
89
Das switch wird also nur einmal pro Zeile durchlaufen. Was muss ich tun damit das swicht pro Zeile durch jede Spalte lauft?
mfg
Kommentar