Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
plouki
Δημοσιεύσεις: 5
Εγγραφή: 03 Σεπ 2010 20:21

Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Δημοσίευση από plouki » 03 Σεπ 2010 20:40

Χρειάζομαι επειγόντως βοήθεια στο εξής θέμα: έχω την παρακάτω φόρμα η οποία παίρνει για την μεν var1 τις τιμές από βάση δεδομένων, ενώ ο χρήστης πληκτρολογεί τις αντίστοιχες τιμές που επιθυμεί στην var2.

<form method=post action=test.php>
<input type=hidden name=user[][var1] value=$a1>$a1</input>
<input type=text name=user[][var2]></input>

Aυτό που προκύπτει απο εδώ σαν έξοδος για να βοηθήσω είναι το εξής:

τεστ1 [input textbox var2]
τεστ2 [input textbox var2]
τεστ3 [input textbox var2]

τώρα το επιθυμητό είναι αυτές οι τιμές να περαστούν στην mysq2l με τη μια.

Ο δικός μου κώδικας:


foreach($_POST['user'] as $post_key){

$query_string .= " ( '".$post_key[var1]."',''),".$post_key[var2]."";
}
$query_string = substr_replace($query_string,"",-1);

mysql_connect ("localhost", "root", "") or die ("Cannot connect to database server.");

mysql_select_db ("db") or die ("Cannot open database.");

$mysql_return = mysql_query("INSERT INTO `table` ( `field1`,`field2`) VALUES".$query_string) or die(mysql_error());




Το πρόβλημά μου είναι οτι δεν εισάγονται τα δεδομένα σε μία γραμμή ταυτόχρονα αλλα εναλλάξ.
Αν πχ έχω εισάγει: τεστ1,τεστ2 και τεστ3,τεστ4
αντί στην mysql να εισάγει δύο γραμμές , εισάγει 4 οι οποίες έχουν την εξής δομη:
τεστ1,κενο και κενο,τεστ2 και τεστ3,κενο και κενο,τεστ4.

Εαν με κατάλαβε κάποιος και μπορεί να βοηθήσει θα το εκτιμούσα ιδιαίτερα!!

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Δημοσίευση από burnmind » 03 Σεπ 2010 21:26

Κατ'αρχήν, καλό θα είναι να χρησιμοποιείς τα code tags ώστε ο κώδικάς σου να είναι πιο ευδιάκριτος.

Ας θεωρήσουμε ότι ο χρήστης δίνει "123".

Αν κάνεις ένα print_r($_POST['user']); θα δεις πως δημιουργείς ένα array που περιέχει ως κλειδιά άλλα 2 arrays. Το πρώτο array περιέχει το var1 και την τιμή του, ενώ το δεύτερο array το var2 και την τιμή του.

Κώδικας: Επιλογή όλων

Array
&#40; 
   &#91;0&#93; => Array &#40; &#91;var1&#93; => test &#41; 
   &#91;1&#93; => Array &#40; &#91;var2&#93; => 123 &#41; 
&#41;
Άρα στο foreach, παίρνεις πρώτα το πρώτο κλειδί (0) που περιέχει τον πρώτο πίνακα (όπου υπάρχει το var1 αλλά όχι το var2) κι έπειτα το δεύτερο κλειδί (1), που περιέχει το var2 αλλά όχι το var1. Από εκεί προκύπτουν τα κενά που παίρνεις.

Από εκεί και πέρα τα λες λίγο μπερδεμένα δεν έχω καταλάβει τι ακριβώς θέλεις να πετύχεις ώστε να σε βοηθήσω να το λύσεις. Λίγο πιο ολοκληρωμένος κώδικας (ειδικά του αρχικού form που περνάς τα δεδομένα) θα βοηθούσε.

Επίσης, καλό θα ήταν να μάθεις τη σύνταξη της HTML στη σημερινή μορφή της. Πχ το input tag συντάσσεται ως εξής:

Κώδικας: Επιλογή όλων

<input type="text" name="whatever" value="whatever" />

plouki
Δημοσιεύσεις: 5
Εγγραφή: 03 Σεπ 2010 20:21

Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Δημοσίευση από plouki » 04 Σεπ 2010 14:03

αρχικά ευχαριστώ πολύ για την απόκριση, γράφω πρώτη φορά στο φόρουμ.

η αρχική φόρμα πιό ολοκληρωμένα

Κώδικας: Επιλογή όλων

$sql="select*from table
 where ...";
$result=mysql_query&#40;$sql&#41;;
$optionsevent="";
while &#40;$row=mysql_fetch_array&#40;$result&#41;&#41;
&#123;    $a1=$row&#91;"field"&#93;;
     $options1.="<OPTION VALUE=\"$a1\">".$a1;
	
	echo" <table>
	<form method=post action=add.php>
	<input type=hidden name=array&#91;&#93;&#91;var1&#93; value=$a1></input>
	<input type=text name=array1&#91;&#93;&#91;var2&#93;></input>
	
	";
Δημιουργώ 2 arrays .

add.php

Κώδικας: Επιλογή όλων

foreach&#40;$_POST&#91;'array'&#93; as $post_key &#41; &#123;
	 foreach&#40; $_POST&#91;'array1'&#93; as $post_key1&#41;&#123;
 	 	  
$query_string .= " &#40; '".$post_key&#91;var1&#93;."','".$post_key1&#91;var2&#93;."'&#41;,"; 
	 
	&#125;&#125;
		
    $query_string = substr_replace&#40;$query_string,"",-1&#41;; 

    mysql_connect &#40;"localhost", "root", ""&#41; or die &#40;"Cannot connect to database server."&#41;; 

    mysql_select_db &#40;"koinoxrista"&#41; or die &#40;"Cannot open database."&#41;; 

    $mysql_return = mysql_query&#40;"INSERT INTO `table` &#40;`field1`,`field2`&#41; VALUES".$query_string &#41; or die&#40;mysql_error&#40;&#41;&#41;; 

Θεωρώ ο χρήστης δίνει 1 και 2

Το array διαμορφώνεται:
Array ( [0] => Array ( [var1] => test ) [1] => Array ( [var1] => test ) )
Array ( [0] => Array ( [var2] => 1 ) [1] => Array ( [var 2] => 2 ) )

Στην βάση μου αυτό που εισάγεται (και λογικά) είναι :

field1 field2
test 1
test 2
test2 1
test2 2

ενώ εγώ επιθυμώ
test 1
test2 2


Ελπίζω να εξήγησα καλύτερα.
Θα εκτιμούσα πολύ λίγη βοήθεια. Ευχαριστώ πολύ εκ των προτέρων!
[/table]

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Δημοσίευση από burnmind » 04 Σεπ 2010 21:43

Πιθανόν να υπάρχει και καλύτερος τρόπος από αυτό που θα σου πω, αλλά αυτό μου έρχεται τώρα:

Στην αρχική φόρμα, βάλε ΠΡΙΝ από το while loop έναν counter, πχ:

Κώδικας: Επιλογή όλων

$i = 0;
Μέσα στο while loop, κάνε τα names:

Κώδικας: Επιλογή όλων

name=array&#91;$i&#93;&#91;var1&#93;
name=array&#91;$i&#93;&#91;var2&#93;
Στο τέλος της λούπας πρόσθεσε

Κώδικας: Επιλογή όλων

$i++;
Κι έτσι στο add.php θα μπορέσεις να τα πάρεις ταυτόχρονα μέσα σε ένα foreach:

Κώδικας: Επιλογή όλων

foreach&#40;$_POST&#91;'array'&#93; as $post_key &#41;
&#123;
   $var1 = $post_key&#91;'var1'&#93;;
   $var2 = $post_key&#91;'var2'&#93;;
&#125;

plouki
Δημοσιεύσεις: 5
Εγγραφή: 03 Σεπ 2010 20:21

Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Δημοσίευση από plouki » 06 Σεπ 2010 10:41

Σε ευχαριστώ πάρα πάρα πολύ!!! Ελπίζω να μπορέσω να ανταποδώσω..λέμε τώρα..!!

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Εισαγωγή multiple rows στη mysql από φόρμα (Help!!)

Δημοσίευση από burnmind » 06 Σεπ 2010 15:26

Παρακαλώ. Όσο για την ανταπόδωση, "help to be helped", ή όπως λέει κι ο Earl, "do good things and good things will happen to you" :lol:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες