[JS]jeditable
Hi,
versuch mich grad etwas in AJAX und bissl dynamische Seiten einzuarbeiten.
jetzt bin ich grad dabei die editierung von daten mithilfe von jeditable dynamisch zu gestalten.
Dass ein Textfeld kommt, wenn ich auf den ensprechenden div klicke, ist kein Problem, aber wie speicher ich das ganze dann in der Datenbank.
Mal als kleines Codebeispiel:
JS-Code siehe Link oben.
Wie muss jetzt die save.php aussehen, dass ich die Änderungen auch in die DB schreiben kann?
danke
leo
versuch mich grad etwas in AJAX und bissl dynamische Seiten einzuarbeiten.
jetzt bin ich grad dabei die editierung von daten mithilfe von jeditable dynamisch zu gestalten.
Dass ein Textfeld kommt, wenn ich auf den ensprechenden div klicke, ist kein Problem, aber wie speicher ich das ganze dann in der Datenbank.
Mal als kleines Codebeispiel:
|
|
Quellcode |
1 2 3 4 |
<tr>
<td width="50%"><font size="-1"><strong>Name</strong></font></td>
<td width="50%"><font size="-1"><strong><div class="edit" id="vorname">$vorname</div> <div class="edit" id="nachname">$nachname</div></strong></font></td>
</tr>
|
JS-Code siehe Link oben.
Wie muss jetzt die save.php aussehen, dass ich die Änderungen auch in die DB schreiben kann?
danke
leo
wenn du nicht genau weißt, wie die $_POST-Variablen heißen, dann lass dir doch testweise den ganzen $_POST-Array ausgeben:
Soweit ich gesehen habe, müßten die Werte in $_POST['value'] und in $_POST['id'] stehen, sofern von dir nicht verändert. Oder habe ich dich falsch verstanden?
|
|
PHP-Quelltext |
1 2 3 4 5 |
echo "<pre>\n";
var_export($_POST);
echo "</pre>\n";
|
Soweit ich gesehen habe, müßten die Werte in $_POST['value'] und in $_POST['id'] stehen, sofern von dir nicht verändert. Oder habe ich dich falsch verstanden?
Zitat
...What is sent to server?
When submitting change following data will be POST:ed to server:
id=elements_id&value=user_edited_content
In some cases you might want to change default parameter names. If you want to data to be POST:ed as: ...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ospx« (20. Oktober 2009, 21:59)
Du meinst, du weißt dann nicht welcher Nutzer etwas geändert hat und brauchst nun z.B. noch einen Parameter für den passenden Nutzer dazu?
Habe mich mit jedit nicht wirklich auseinandergesetzt. Aber prinzipiell kannst du z.B. mit Sessions arbeiten. (via cookie)
Die entsprechenden Daten werden normalerweise, genauso, wie bei einer gewöhnlichen Browser-Anfrage übertragen.
kannst ja mal testweise eine Session setzen und in deiner Save.php den $_REQUEST- Array ausgeben lassen( var_export()). Da wirst du sehen, dass deine Session-Kennung im $_COOKIE-Array enthalten ist.
Habe mich mit jedit nicht wirklich auseinandergesetzt. Aber prinzipiell kannst du z.B. mit Sessions arbeiten. (via cookie)
Die entsprechenden Daten werden normalerweise, genauso, wie bei einer gewöhnlichen Browser-Anfrage übertragen.
kannst ja mal testweise eine Session setzen und in deiner Save.php den $_REQUEST- Array ausgeben lassen( var_export()). Da wirst du sehen, dass deine Session-Kennung im $_COOKIE-Array enthalten ist.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ospx« (20. Oktober 2009, 23:26)
ok, danke =)
die übergabe passt soweit. jetzt hab ich folgendes problem. ich sollte noch ne weitere variable übergeben, sonst weiß mein query ja nicht, welcher datensatz in der DB upgedatet werden soll.
gibts da ne einfache version für, oder muss ich da im JS Code rumfrickeln...![]()
So wie ich es gehsehen habe , musste für jede einzelne spalte einen anderen code verwenden zu bearbeiten.
die haben in der live demo einen div class ="editable_textile" und mit folgenden code überabreiten die es:
|
|
Javascript-Quelltext |
1 2 3 4 5 6 7 8 |
$(".editable_textile").editable("http://www.appelsiini.net/projects/jeditable/php/save.php?renderer=textile", { indicator : "<img src='img/indicator.gif'>", loadurl : "http://www.appelsiini.net/projects/jeditable/php/load.php", type : "textarea", submit : "OK", cancel : "Cancel", tooltip : "Click to edit..." }); |
also schätze cih dass du entweder für jeden div , so einen script erstellst oder du generierst es automatisch mit php.
also while($row = hole texte aus db){
speichere jede zeile in einen div
und erstelle dabei einen string den du in <js tag reinpackst mit anderer id
}
oder könntest ja ein script machen, welcher ALLE daten in db abspeichert unabhängig davon ob es bearbeitet wurde oder nicht. somit kannste sachen ändern und die werden gespeichert
EDIT: Also habe auch noch gerade im Quellcode nachgesehen. So wie ich es verstanden habe wandelt der Code beim klicken den div/tr whatever in ein inputfield oder textarea also kannste in deiner save php dann abfragen
if(isset($_POST['nameDesDivs'])){
UPDATE tabelle SET feld = $_POST['nameDesDivs'];
}
bin aber nicht ganz sicher desswegen gebe mal in der save.php das $_POST array aus
MFG
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cccpmik« (21. Oktober 2009, 08:37)
Das Problem ist doch schon gelöst, wenn ich das richtig sehe. Und er braucht natürlich nicht für jedes Feld eine eigene Datei erstellen, da ja sowieso die id des Feldes übertragen wird.
Zitat
...also schätze cih dass du entweder für jeden div , so einen script erstellst oder du generierst es automatisch mit php.
also while($row = hole texte aus db){
speichere jede zeile in einen div
und erstelle dabei einen string den du in <js tag reinpackst mit anderer id
}...
Er muß auch nicht unbedingt die Standardwerte ändern, worauf ja die Geschichte mit dem von dir gepostetem js hinausläuft.
Mit deinem Vorschlag bleibt aber sein Problem bestehen, dass er dann nicht weiß, welcher Datensatz(id des Datensatzes) konkret zu ändern ist. Er weiß nur, welches Feld in der Tabelle zu ändern ist.
Zumindest habe ich sein Problem so verstanden.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ospx« (21. Oktober 2009, 12:00)
Das ist egal. Ich kann für jedes Feld die gleiche div klasse nehmen. Die Felder werden durch die id unterschieden, das ist nicht das Problem.
Ich habs jetzt auch geschafft alles korrekt zu übergeben, nur irgendwie läuft das Datenbankupdate nicht.
mal der Code meiner save.php:
also die Variablen passen.
Wenn ichs mir durch diesen Code ausgeben lasse:
kommt folgendes:
Ich habs jetzt auch geschafft alles korrekt zu übergeben, nur irgendwie läuft das Datenbankupdate nicht.
mal der Code meiner save.php:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
include('../config.php');
$connectionid = @mysql_connect("$dbhost", "$dbuser", "$dbpw");
mysql_select_db("$db");
$kunde = $_SESSION['x_kunde'];
$inhalt = $_POST['value'];
$feld = $_POST['id'];
$sql = mysql_query("UPDATE x_kunde SET $feld = $inhalt WHERE kndnr = $kunde");
$_SESSION['x_kunde'] = '';
print $inhalt;
|
also die Variablen passen.
Wenn ichs mir durch diesen Code ausgeben lasse:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 |
session_start();
echo "<pre>\n";
var_export($_POST);
var_export($_SESSION);
echo "</pre>\n"
|
kommt folgendes:
|
|
Quellcode |
1 2 3 4 5 6 |
array ( 'value' => 'Erikaa', 'id' => 'vorname', )array ( 'x_kunde' => '3', ) |
bin mir nicht sicher was da nicht funktioniert(kein fehler gefunden) aber änder mal just for fun die zeile 10 in
|
|
PHP-Quelltext |
1 |
mysql_query("UPDATE x_kunde SET ".$feld." = ".$inhalt." WHERE kndnr = ".$kunde);
|
Mein kleines Projekt
-Cruel Online-
-Cruel Online-


