Formular, UPDATE: Problem mit Variablen / Wertübergabe |
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
Hallo,
ich mache eine kleine Formfenster-function, mit der ich
später Datenbank-Werte bearbeiten möchte.
Wenn ich wie unten mit einer Variablen arbeite
finde ich aber nach submit immer nur deren Wert eingetragen.
Z.B. f280, $f280, ...
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11: |
$k = "f".$vwf['id'];
echo "
";
if ($$k == TRUE) {
$up = "UPDATE test SET xx1 = '$$k' WHERE id = ".$vwf['id']."";
mysql_query($up); } else {
echo "nix eingegeben, nix in db";}
|
Eigenartig für mich ist, wenn ich statt $k
ein gg als name nehme, werden Werte (Text, ...) übergeben.
Habe schon einige Verknüpfungen oder Verkettungen
mit Variblen versucht, komm aber auf keinen grünen Zweig.
Weiß jemand, wie man die Variable im UPDATE-Select richtig
schreibe?
Danke, Jörg
|
 Profil
Editieren
Zitieren
|
beule
Otto-Normal-Poster
Beiträge: 91 |
Hey
versuch mal dem from und dem textarea statische namen zu geben. ich bin der meinung, du kannst keine variable aus der variable machen. also $$k meine ich. php denkt dann die variable heisst $k und merkt nicht das du hier den wert aus der variable $k willst... also ich glaube es ist so hatte das problem auch schon will hier aber nichts falsches erzählen.
cheers
beule
|
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
PHP nutzt bei $$k schon den Inhalt der Variable $k als Variablennamen. Dies sollte man jedoch vermeiden. Einfacher ist die Verwendung von $_POST[$k], da man so auch gleich register_globals beachten würde. Viel einfacher wäre jedoch die Verwendung von Arrays. Wenn man in HTML die Feldnamen in der Form name="f[1]" angibt. Erstellt das aufgerufene PHP-Script daraus ein Array - also $_POST['f']['1'] . (Die 1 in meinem Beispiel entspricht dem Inhalt von $vwf['id'].)
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
Hallo und vielen Dank!
monmentan sehe ich aber nichts mehr. Hatte ´s einfach so eingesetzt, aber ...
u.a. ...
davor hatte ich schon sowas bearbeitet:
das funktioniert (eigentlich) - aber nicht als function:
Der Haken liegt wohl am Submit-Button,
an den ich nicht mehr gelange?
... besser erstmal abwaschen ;-\
habt ihr noch ein paar Tipps?
Danke, Gruß, Jörg
|
 Profil
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
Hallo,
also ich kapiere nicht, wie du das meinst.
Ich wollte mit Namen aus der id wie f722 arbeiten.
Die kann ich "produzieren" oder vorfertigen in je einem Array.
Wie aber soll die hier rein- bzw. rauskommmen?
SET titel = ".$_POST['f']['1']."
Hab ja (u.a. :-/ ) das Problem, kein Doppeltes $$ zu verwenden,
sonst könnt man ja vor $array ...
meine vorherige "Lösung" arbeitet auch unsauber
und liefert im Quellcode:
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
In der vorherigen Lösung schreibst du auch Attribute der Eingabefelder in die Action des Formulars. Das solte einen sehr seltsamen HTML-Quellcode ergeben.
In der aktuellen Variante bist du schon nah dran. Allerdings passen der Name des Textarea und die genutzte Variable nicht zusammen. Der Name muss nach dem Schema f[id] aufgebaut sein. Also
Im aufgerufenen PHP-Script exisitert dann $_POST[$vwf[1]]. Schau doch mal mit einerm var_dump($_POST) in die übermittelten Variablen.
Wichtig ist auch das du alle Formularwerte für die MySQL-Query absicherst.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
Hallo und Dank,
so schauts:
wird meist nix in die DB eingetragen -
machmal eine 1 (??)
aber ? ...
Grüße
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Was soll das print_r() da tuen?
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
Hi,
.. Verzweiflung, Wahnsinn, ...
|
 Profil
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
nee -
nach Anderem nur ein (verzagter) Versuch ...
1:
2: | $up = "UPDATE $tab SET $updf = '".$_POST['0']."' WHERE $idf = ".$vwf[1]."";
|
ick wees net, wat icke bei SET noch verwsuchen soll.
dat array schaut so aus:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11: |
array(2) {
["f"]=>
array(1) {
[712]=>
string(7) "aaaa cc"
}
["submit"]=>
string(7) "Und ab!"
}
|
bloß das aaaa cc kommt nicht in die DB ...
Grüße.
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Da steht doch das der Wert in $_POST['f'][712] drin ist. Nciht in $_POST['0']. 712 sollte $vwf[1] entsprechen - also $_POST['f'][$vwf[1]].
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
Jippie! "Richtfest" - zumindest für diesen Abschnitt.
Danke!
So klappt es jetzt:
1:
2:
3:
4:
5: |
if ($_POST["submit"])
$up = "UPDATE $tab SET $updf = '".$_POST['f'][$vwf[1]]."' WHERE $idf = ".$vwf[1]."";
mysql_query($up);
|
Zwei Fragen noch - eine zugleich auch Teil der Ursache
des "Fehlers" bzw. der letzten Verzögerung:
Zum einen lags am Klammern- und Apostoph-Wirrwar vor meinen
Augen: Im Formfenster konnte ich das Wert-Update nicht gleich
sehen, sondern habs in MySql-Front verfolgt.
- Gibt es einen einfachen Trick, wie ich hier
(Form oben, if() unten ...)
mit dem Submit gleich den akt Wert oben sehen
(hier stellt sich immer wieder letzte Stand her,
erst nach Seiten-reload sehe ich korrigiertes)
- Formularwerte für die MySQL-Query absichern:
bzgl. absichern mit mysql_real_escape_string arbeite
ich mit php 4.2.1.
Habt ihr diesbzgl. eine Tipp für mich?
Grüße von der waterkant,
Jörg
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Du kannst dir die Array Strukturen von PHP ähnlich wie eine Verzeichnisstruktur vorstellen. Wenn eine Element komplett in [] steht, wird es erstmal zu einem Wert aufgelöst (also der Wert aus der Variable ausgelesen) und bildet einen Schlüsselnamen.
aus
$_POST['f'][$vwf[1]]
wird so intern
$_POST['f'][712]
Zu mysql_real_escape_string() solltest du einfach mal einen Blick in das PHP-Manual. Am besten schaust du auch mal in das QNet Tutorial.
Wenn du in der Form immer den aktuellen Wert sehen willst, mußt du halt die Variable, welche du ausgibst, nach dem erfolgreichen Update ändern.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
elster
Otto-Normal-Poster Threadstarter
Beiträge: 61 |
jupp - alles klar - soweit
Sicherheit muß ich bei Zeiten noch machen ...
Hab vor die Form noch ein
platziert.
Danke, ciao, Jörg
|
 Profil
Editieren
Zitieren
|