Post-Varibeln in array umspeichern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
argument
array
attribut
check
code
datum
first
formular
funktionieren
input
not
output
post
set
speichern
statement
tag
text
type
url
-
Hallo zusammen
Ich nehme an, dass die Lösung relativ simpel ist, habe aber irgendwie einen Ktag/not">notem im Kopf und komm einfach auf keine schlaue Idee.
Hintergrund
Ich möchte Daten aus einem Formular in eine DB speichern, dies sollte für die zukunft mit möglichst wenigen Anpassungen erweiterbar sein.
Problemstellung
Ich habe mir überlegt, die entsprechenden DB-Felder in ein array zu speichern, was kein Problem ist.
Die abzufüllenden Daten werden per POST übergeben, auch kein Ding. Jedoch weiss ich einfach nicht, wie ich die POST-Variabeln in der richtigen Folge in ein Array zu speichern. Die namen der post-variabel können gleich lauten wie die DB-Namen.
Habt Ihr eine Idee, einen Lösungsvorschlag, ein Verweis auf eine funkion oder whatever? Bin euch sehr dankbar :)
Gruss Sublime
Beitrag zuletzt geändert: 12.1.2012 17:54:18 von all-web -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mal so ins Blaue geschossen, sollte es so funktionieren:
<input type="text" name="daten[feld1]" /> <input type="text" name="daten[feld2]" />
Das bringt, wenn ich nicht irre, im empfangenden Script die Postdaten als Array.
Beitrag zuletzt geändert: 12.1.2012 18:36:07 von fatfreddy -
Da brauchst du nichts umspeichern, da $_POST bereits ein Array ist.
Was du mit der richtigen Reihenfolge meinst, kann man ohne genauere Angaben nicht sagen. Was kommt vom Formular? Wie heißen die DB-Spalten? -
fatfreddy schrieb:
Mal so ins Blaue geschossen, sollte es so funktionieren:
<input type="text" name="daten[feld1]" /> <input type="text" name="daten[feld2]" />
Das bringt, wenn ich nicht irre, im empfangenden Script die Postdaten als Array.
Heyhou,
Herzlichen Dank! Genau danach habe ich gesucht, dabei habe ich wohl weite Kreise gezogen... THX!!
EDIT: Habe mein Script fertiggestellt und da dachte ich, vielleicht kann es ja jemand anders gut gebrauchen :) Open source ist immer schön ;) Ihr dürft machen was ihr wollt, meine Seite sogar verlinken ;) Sorry für das falsche Englisch in den comments, habe mehr stichwortartig geschrieben..
<?php /*-------------------------------USER MANUAL----------------------------------*/ /* 1) Specific the fields in the Array name Must Set title Not necessary value Not necessary type default-value is an input field with type text style Not necessary extend_before Not necessary extend_tag Not necessary extend_after Not necessary save If its set on true, the field will write into the db. if its false, it does not save anything. this is useful for design-buttons as submit. 2) Output the fields with the function form_display_fields() and transmit the array with the attributes - Dont forget <form> 3) Save the fields in DB with function form_save_database() - Dont forget to etablish the db connection at first! First argument array The array with the attributes second argument true/false For Debugging, if true it outputs the sql statement and sql errors. default value is false third argument true/false For Saving, if true the sql statement will send to the DB - if false of course not. default value is true */ /*-------------------------------DEFINE GENERAL----------------------------------*/ $insert_into = "guestbook"; // Target DB /*-------------------------------DEFINE FIELDS----------------------------------*/ $array = array(); $array[] = array( "name" => "prename", "title" => "Vornamen", "value" => "standard", "type" => "text", "style" => "border: 3px solid red;", "extend_before" => "vorher", "extend_tag" => " class=\"reset\"", "extend_after" => "nachher!", "save" => true ); $array[1] = array( "name" => "mail", "title" => "eMail", "value" => "x@y.ch", "type" => "pw", "save" => true ); $array[2] = array( "name" => "web", "title" => "Website", "value" => "www.blubb.ch", "type" => "textarea", "style" => "border: 3px solid green;", "save" => true ); $array[3] = array( "name" => "submit", "title" => "Submit", "value" => "Submit form", "type" => "submit", "save" => false ); /*-------------------------------DISPLAY FIELDS----------------------------------*/ function form_display_fields($array) { //Reset the counter $i = 0; //Do it until the array is done foreach($array as $out) { //Return extension before if it is defined if(isset($out['extend_before'])) { echo $out['extend_before']; } //Open input/textarea field echo '<'; //Check for tag-name in type if($out['type'] == "textarea") { echo 'textarea '; } else { echo 'input '; } //Output the field name echo 'name="formdata['.$i.']" '; //Output the type if set, otherwise use input echo 'type="'; if(isset($out['type'])) { echo $out['type']; } else { echo "input";} echo '"'; //Output the value echo 'value="'.$out['value'].'"'; //Output the style if it is defined if(isset($out['style'])) { echo 'style="'.$out['style'].'"'; } //Output the attributes if it is defined if(isset($out['extend_tag'])) { echo $out['extend_tag']; } //Close the input/textarea tag echo ' >'; //Close the textarea tag if($out['type'] == "textarea") { echo $out['value'].'</textarea>'; } //Output the attributes if it is defined if(isset($out['extend_after'])) { echo $out['extend_after']; } //Count one up $i++; } } /*-------------------------------DEFINE FIELDS----------------------------------*/ function form_save_database($array, $debug = false, $submit = true) { //Which table to use $sql = "INSERT INTO ". $insert_into ."("; //Build the tablecolumns foreach($array as $out) { //Check about the save-attribut if($out['save']!=false) { $sql .= $out['name'] .","; } } //Close the tablecolumns $sql .= ") VALUES ("; //Reset counter $i = 0; //Build the values foreach($array as $out) { //Check about the save-attribut if($out['save'] != false) { //if the specific field is trasmitted, fill it up, otherwise clear the field if(isset($_POST['formdata'][$i])) { //Insert value and separator $sql .= $_POST['formdata'][$i] .","; // clear the field if nothing is submitted } else { $sql .=","; } //Count one up $i++; } } //Close sql statement $sql .= ");"; //Write into the database, if its not deactivated if($submit == true) { mysql_query($sql); } // Output the sql statement if its true if($debug == true) { echo $sql; mysql_error(); } } /*-------------------------------DEMONSTRATION----------------------------------*/ ?> <form action="test.php" method="post"> <? form_display_fields($array); ?> </form> <? if(isset($_POST)) { form_save_database($array, true, false); } ?>
Gruss Sublime
Beitrag zuletzt geändert: 12.1.2012 20:46:50 von all-web -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage