kostenloser Webspace werbefrei: lima-city


Post-Varibeln in array umspeichern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    all-web

    all-web hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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?
  5. Autor dieses Themas

    all-web

    all-web hat kostenlosen Webspace.

    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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!