Archiv verlassen und diese Seite im Standarddesign anzeigen : universelles formular???
moin
ich habe in meiner datenbank einige tabellen die öfter mal upgedatet werden müssen und da die alle recht gross sind stellt sich bei mir die frage:
kann ich da nich ein universelles formular erstellen das mir die daten aus der datenbank ausliest? sonst muss ich ja für jede tabelle eine eigene datei erstellen, oder?
kann mir da jemand weiter helfen?
gruss
olli
Ich würde es ähnlich erstellen wie es im PHPMyAdmin ist (auf meinem Entwicklungserver).
Du hast ein Select-Feld und wählst dir die Tabelle aus die du gerade brauchst. Jetzt nur noch durch eine Abfrage welche Tabelle gebraucht wird und alle Spalten werden zurverfügung gestellt. Ein Klick auf OK und dann hast du ein Universelles Formular.
MoRtAlAn 02-08-2002, 10:28 klar geht das, du läßt doch die Tabelle per schleife ausgeben, mußt nur auf die richtigen Felder ja nach Spaltentyp achten (textarea für Spaltentype Text, etc)
gruss
danke für die tips ich werd das gleich mal ausprobieren und berichten ob ich´s verstanden habe...
tja ich hab mein glück mal probiert aber ich bekomms nicht wirklich hin! das formular ist ja kein thema aber dann die vorhandenen daten anzeigen lassen funktioniert nich! habt ihr vielleicht noch nen tip für mich?
olli
Poste doch mal, was Du bisher gemacht hast, dann können wir Dir sagen, wo Du was ändern/einfügen mußt.
ich habs mal so versucht:
$query = "select * from tabelle";
$result = mysql_query($query)
or die(mysqL_error());
$ergebnis = mysql_query($query)
or die(mysql_error());
$anz_spalten = mysql_num_fields($ergebnis);
echo "<form action='submit.php'>\n";
echo "<table width=100% border=1>\n";
while ($zeile = mysql_fetch_row($ergebnis))
{
for ($l=0; $l<$anz_spalten; $l++)
{
if (!isset($zeile[$l]))
{echo "<tr><td colspan=2>Nix mehr da!</td></tr>";}
else
{$k=$zeile[$l];}
}
}
for ($i=0; $i<$anz_spalten; $i++)
{
echo "<tr><td>" . mysql_field_name($ergebnis, $i). "</td><td><input type=text name=" . mysql_field_name($ergebnis, $i) . " value=" . $k ."></td></tr>\n";
}
nich erschrecken ich bin noch relativ neu in der php sache ;-)
olli
schau dir mal das Ergebnis der Query "show fields from tabelle" an :)
ähm dumme frage vielleicht aber wie macht man das?
dumme Frage, fürwahr ... so wie bei jeder anderen Query auch:
$q = mysql_query("show fields from tabelle")
or die(mysql_error());
while ($x = mysql_fetch_assoc($q))
{
foreach($x as $k=>$v)
echo "<br>$k : ", htmlentities($v);
echo '<hr>';
}
Wenn du die Ergebnisse auswertest, dann kannst du ganz einfach den Typ einer Spalte ermitteln und aufgrund dieser Abfrage den richtigen Formularfeldtyp einsetzen:
für enum ein select oder radios, für set ein select multiple etc. pp.
Auch die maxlength für input type="text" erhältst du damit.
na gut :-)
ich bin ja wie gesagt neu im thema und versuch mein bestes ;-)
aber noch mal zurück zum thema! der sinn des ganzen ist halt eine idiotensichere site-administration herzustellen ;o)
und ich hab bestimmt noch ein paar mehr fragen dazu und wenn das dann mal fertich is dann kann ich das ja auch mal hier posten.. aber das wird noch nen bissl dauern.
so ich wer das dann mal morgen früh in ruhe ausprobieren und mich dann mal wieder melden... bis denne
olli
moin
@titus
ich hab das grad mal ausprobiert aber bekomme immer eine fehlermeldung unexpected T_STRING woran kann das liegen?
daran dass du dich vertippt hast ... poste mal die Zeile, in der der Fehler auftritt - bzw. den Befehl der dazu gehört.
PS: Ich würd dem Formular noch "method='post'" als Parameter mitgeben.
@titus
ich weis nich ob ich mich vertippt hab, ich hab sofort beim query den fehler bekommen, aber das ist jetzt auch egal weil ich was anderes probiert habe.
ich kann zwar jetzt die mysql_field_type abrufen aber wie setz ich sie ein das ich dann auch die passenden feld typen bekomme?
hier noch mal das skript:
$query = "select * from tabelle where id=$id";
$ergebnis = mysql_query($query)
or die(mysql_error());
$num_fields = mysql_num_fields($ergebnis);
for ($i=0; $i<$num_fields; $i++)
{
$type = mysql_field_type($ergebnis, $i)."<br>";
}
echo "<form action='submit.php' method=post>\n";
echo "<table width=100% border=1>\n";
while($row = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
{
while (list($key, $value) = Each ($row))
{
{echo "<tr><td><b>$key:</b></td><td><input type=???? name='$key' value='$value'></td></tr>\n";}
}
}
echo "<tr><td><input type=submit value=Update></td></tr>";
echo "</form>";
echo "</table>";
vielleicht hat da noch jemand einen kleinen tip für mich vielleicht kann ich dann auch bald mal helfen ;-)
|