Sì, ma non è una parola chiave. Le parole chiave sono class, function, public, private, protected, var... array è il nome di una funzione o al limite di un costrutto del linguaggio.
ciao
allora se è una stringa o la esplodi come gia detto o inserisci un solo record con il valore della stringa.
per capire meglio fai un piccolo esempio di cosa potrebbe contenere la stringa e di come vuoi che venga fuori la tabella e il record (posta come è fatta la tabella)
La tabella ha: products_options_values_id, linguages_id, products_options_values_name, products_options_sort_order.
Nessuno di questi campi è autoincrementante.
Ho provato questo codice modificando il campo products_options_values_id facendolo diventare autoincrementante e funziona, però eseguendo questo codice con la tabella senza modifiche m'inserisce solo il primo valore contenuto in Variante1 e poi si blocca.
In $_POST['Variante1'] sono contenute le taglie dei prodotti, tipo XS, S, M, L, XL.
Quindi con il codice postato sopra, nella tabella m'inserisce solo la XS nelle rispettive lingue, e poi si blocca. Il database deve essere per forza strutturato così, perchè ad esempio i valori devono essere contenuti in questo modo:
products_options_values_id languages_id products_options_values_name products_options_sort_order
0 1 XS 1
0 2 XS 1
1 1 M 1
1 2 M 1
E COSI' VIA....
Spero di essere stato chiaro.
Penso che ci sia bisogno di un'ulteriore ciclo che mi faccia ripetere la query d'inserimento tante volte quanti i valori contenuti nel valore $_POST['Varainte1'], però non so da dove partire.
ciao
per prima cosa devi trasformare $params['Variante1'];
eliminando gli spazi
$params['Variante1']=str_replace(" ","",$params['Variante1']);
poi la trasformi in array
$vari=explode(",",$params['Variante1']);
poi usi foreach per inserire tanti records quanti sono i valori in $vari
per cui la parte che ti interesa diventa
PHP:
//...............
$params['Variante1']=str_replace(" ","",$params['Variante1']);
$vari=explode(",",$params['Variante1']);
foreach($vari as $valore){
//nella insert al posto di $vari metti $valore
$query = "INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) VALUES ('', '$lang', '$valore', '1')";
//quarda che puoi scrivere così al posto della if
$insert = mysql_query($query) or diedie(mysql_error());
}
//................
ciao scusa dimenticavo
$params['Variante1'] proviene da un form in cui inserisci i dati manualmente?
se si ti convine aggiungere subito sotto
$params['Variante1']=str_replace(" ","",$params['Variante1']);
l'istruzione
$params['Variante1']=strtoupper($params['Variante1']);
che trasforma tutti i caratteri in maiuscolo evitando errori del tipo xl che diventa XL
ciao
prova a mettere questi var_dump, echo e commenta la riga $query e $insert
PHP:
//...............
$params['Variante1']=str_replace(" ","",$params['Variante1']);
var_dump($params['Variante1'];//vardump 1
echo "<br>";
$vari=explode(",",$params['Variante1']);
var_dump($vari);//vardump2
echo "<br>";
foreach($vari as $valore){
//nella insert al posto di $vari metti $valore
//$query = "INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) VALUES ('', '$lang', '$valore', '1')";
var_dump($valore);//vardump3
echo "<br>";
//quarda che puoi scrivere così al posto della if
//$insert = mysql_query($query) or diedie(mysql_error());
}
//................
il vardump1 dovrebbe darti string (nn) valore dove nn lunghezza della stringa e valore (es) "XL,M,XM"
il vardump2 array (NN) e valori dove NN numero elementi array e valori i vari valori "XL" "M" "XM"
il vardump3 vari output (NN) tipo
string (2) "XL"
srting (1) "M"
string (2) "XM"
Grazie per la risposta, però i valori sono corretti, perchè con il codice che ti ho dato prima e facendo diventare autoincrementane il campo id della tabella funziona, quindi non è un problema dei valori, anche perchè non posso fare il var_dump dei dati, poichè la pagina che invia i dati è un gestionale, e li salva immediatamente nel database e non mi permette di visualizzare immediatamente i dati in una pagina, quello che penso io che non so come fare, è che oltre ai due cicli che fa cioè quello di contare i dati contenuti in $param['Variante1'], e contare le lingue, ce ne vorrebbe un'altro che aumenterebbe di valore il campo products_options_values id di 1 ad ogni query.
Ti posto anche il codice di come è formata la tabella:
`products_options_values_id` int(11) NOT NULL autoincrement,
si incrementa di uno da solo ad ogni query non ti serve un qualcosa per incrementarlo, se lo metti autoincrement non serve nemmeno che lo metti nella query di insert ne come nome ne come valore (avevi messo '') ci pensa mysql ad autoincrementarsi
non è una pagina php?
se non è una php da dove hai pescato quegli script che hai postato?
se è php basta che tu commenti tutte le query mettendo tutti i var dump che vuoi
Esatto, ho bisogno che sia non autoincrement, perchè quando vengono inseriti i valori nel database pur essendo in due lingue diverse, devono avere lo stesso id, cioè:
id = 1 -------- lingua = 1 -----------nome = XS -------------
id = 1 -------- lingua = 2 -----------nome = XS -------------
perchè poi richiamo questo valore con un id univoco, quindi id = 1 equivale ad XS in entrambe le lingue.
ciao
ecco allora perhè non ti inserisce
tu hai messo
PRIMARY KEY (`products_options_values_id`,`language_id`),
non possono esistere due primary con lo stesso valore
cioe se hai inserito
id = 1 -------- lingua = 1 -----------nome = XS -------------
non puoi inserire un altro
id = 1 -------- lingua = -----------nome = XS -------------