"We are back" « oc.at

PHP/mysql: Formular als array übergeben

grOOvekill@ 23.07.2003 - 13:01 2530 22
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
S'gott,

ich benötige ein klitzekleines CMS. Daher hab ich mal angefangen ws zu basteln. Dieses Sktipr macht nichts anderes, als die Datensätze in einer mysql Datenbank direkt in Texteingabefelder einer Tabelle zu stopfen. Unter jedem Datensatz befindet sich ein Link für's Speichern der Änderungen. Diese Links werden natürlich über die id separat angesprochen. Ebenso wird beim Speichern die id mittels 'hidden' übermittelt. Nachdem es ja mehrere Input's gibt sollte ja, glaube ich, automatisch ein Array erstellt werden, das ich mit der Schleife im Speichern-Körper auszuwerten versuche. Das gane funzt auch ganz gut, nur werden dummerweise Änderungen, die ich in diesen Texteingabefeldern vornehme, nicht in die Datenbank eingetragen und ich komm nicht drauf, warum nicht.

Wer kann helfen?

Hier der Kot :) :

Code: PHP
[SIZE=2]<body>
<?php

$db = mysql_connect("xxx","xxx","xxx");
mysql_select_db("xxx",$db);

if ($speichern){   
$tCount = count($id); 
for ($n=0;$n<$tCount;$n++){ 
mysql_query("UPDATE table SET text=$text[n], data=$data[n] WHERE id=$id[n]"); 
}
echo "<b><center>Änderungen in Datenbank gespeichert!</center></b>"; ?>
<?php }?>	
<table border=1 cellpadding=3 cellspacing=0 align=center bordercolor="#e0e0e0">
<tr>
<Th>id</a></th>
<Th>text</a></th>
<Th>pfad</a></th>	
</tr>
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
<?php         
$result = mysql_query("SELECT * FROM table",$db);
while ($zeile =mysql_fetch_array ($result)){
echo ("<tr>"); ?>
<td><center><?php echo $zeile[id] ?></center>
<input type="hidden" name="id" value="<?php echo $zeile[id] ?>"></td>
<td><textarea name=text cols=50 rows=10><?php echo $zeile[text] ?></textarea></td>
<td><input type="Text" name="pfad" size="50" value="<?php echo $zeile[pfad] ?>"></td></tr>
<tr><td colspan="3" align="center"><?
printf("<a href=\"%s?id=%s&speichern=yes\">speichern</a><br>", $PHP_SELF, $zeile["id"]);
echo ("</td></tr>");
}
echo ("</table>");
?>
</form>
</body>[/SIZE]

edit: sorry, der code war wirklich shice zu lesen.
Bearbeitet von atrox am 25.07.2003, 11:39 (hergott: bitte laß es brauchbare threadtitle regnen :))

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
a) input type="hidden" name="id"
wird zu
input type="hidden" name="id[]" <-- sonts kein array
(selbes gilt auch für die anderen form felder)

b) brauchst keine 'quotes' wenn du strings in die tabelle einfügst ?

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
Meinst du so?
Code: PHP
mysql_query("UPDATE table SET text=\"$text[n]\", data=\"$data[n]\" WHERE id=\"$id[n]\""); 

HowlingWolf

...
Avatar
Registered: Jul 2001
Location: 2340
Posts: 1328
verwend lieber ' statt " dann brauchst du's nicht escapen.

Die Eigenschaften der Form Felder ghört auch noch geändert.

kleine Anmerkung am Rande:
Fließtext is ja was schönes aber bitte wenn du nen Code reinpostest der soo breit is, verwend mal ein paar Zeilenumbrüche mehr :)
Is echt schwer zu lesen das ganze wenn man keinen Monitor mit mehr als 1200x1024 Auflösung hat.

Phobos

&#10013;
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
genau, sind geschüzte quotes

es reicht aber auch '

HowlingWolf

...
Avatar
Registered: Jul 2001
Location: 2340
Posts: 1328
Nochwas ID is als eine Zahl definiert oder ein Array??
Falls eine Zahl, dann solltest du ID nicht in ' ' setzen. Ansonsten passts so.

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
Zitat von HowlingWolf
Die Eigenschaften der Form Felder ghört auch noch geändert.

Ehm, und was genau meinst du sollte ich bei den Form Feldern ändern?? :confused:

HowlingWolf

...
Avatar
Registered: Jul 2001
Location: 2340
Posts: 1328
Zitat von atrox
a) input type="hidden" name="id"
wird zu
input type="hidden" name="id[]" <-- sonts kein array
(selbes gilt auch für die anderen form felder)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
Ja, aber ein Freund von mir meinte, daß das id-array in PHP beim submit automatisch aufgebaut wird und ich mich nicht extra darum kümmern muß. Schasndreck gewesen?

edit: Also ich hab's jetzt auch mit id[] versucht, aber der Eintrag wird trotzdem nicht upgedated. Langsam gehen mir echt die Ideen aus. Ich komm einfach nicht drauf. Irgendwelche groben Fehler sind doch nicht drinnen, oder? :bash:
Bearbeitet von grOOvekill@ am 23.07.2003, 13:40

HowlingWolf

...
Avatar
Registered: Jul 2001
Location: 2340
Posts: 1328
ID is doch kein Array oder seh ich das falsch?? Du übergibst doch nur ein Zahl, oder?
Dann kannst die []-Klammern gleich weglassen nur musst dann beim UPDATE Query auch die " " weglassen.
(nur bei der Variable ID)
Die Variable wird ja sowieso als $id übergeben.

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
Also eigentlich übergebe ich die id als eine Zahl. Nachdem es aber mehrere Input Felder gibt, die ich ja irgendwie unterscheiden muß, wird die id in ein Array gepackt, welches ich anhand der for Schleife im SPEICHERN-Körper auszulesen versuche. Bin mir ja eigentlich auch gar nicht sicher, ob das auf diese Art und Weise funktioniert.

HowlingWolf

...
Avatar
Registered: Jul 2001
Location: 2340
Posts: 1328
wtf?
Die einzelnen Imputfelder kannst doch mit ihren Namen identifiziern. Da brauchst denen doch keine eigene ID zuweisen.
Irgendwie versteh ich nimma ganz was du willst. Sorry jetzt steh ich auf der Leitung.

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
Okay, ich versuche mal anhand zweier Abbildungen zu erklären, was Sache ist. Es gibt ein Backend, über welches die Informationen eingetragen werden sollen, das sieht so aus:
click to enlarge

Die Infos, die hier eingetragen werden, werden in die mysql DB gepfeffert. Nachdem es aber wie in diesem Fall 3 verschiedene Datensätze gibt, die ID, TEXT UND PFAD heissen, benötige ich ja irgendwie eine weitere Identifikation damit die Datenbank weiß, welches Inputfeld upgedated werden soll. Die fertigen Infos sehen dann so aus:

click to enlarge

Der Text is natürllich wischiwaschi, keine Frage. Wie gesagt, es handelt sich nur mal um Tests. Aber egal, was ich beim Backend eintrage, der ursprüngliche, mittels PHPmyAdmin in die DB eingetragene Text ändert sich nicht, egal wieviel Text ich hinzufüge.

War ich halbwegs verständlich? Ist irgendwie schwer zu beschreiben.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von grOOvekill@
Meinst du so?
Code: PHP
mysql_query("UPDATE table SET text='$text[$n]', data='$data[$n]' WHERE id='$id[$n]'"); 
lol -> im quote berichtigt was mir mal spontan auffiel :D

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2352
Ach, du Sch*****! Okay, hab's ausgebessert, aber so funzt es leider auch nicht. Jedesmal wenn ich auf Speichern klicke, erscheint wieder der ursprüngliche Text an der Stelle. Aber danke trotzdem! ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz