Inserire più dati in database

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve ragazzi, volevo chiedervi come inserire più dati in un database, cioè:

Nella variabile $varianti, sono contenuti: XS, S, M, L

ora vorrei inserire questi dati in un database ma uno per riga, cioè ognuno con un'id differente, come posso fare?

es.
id = 1 Taglia = XS
id = 2 Taglia = S
id = 3 Taglia = M
e così via...

Grazie
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
esplodi la varibile, poi con un foreach sull'array esegui tante query quanti sono i valori presenti in esso
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
PHP:
$dati = explode(",", $dati);
foreach($dati as $value) {
  $query = "INSERT INTO tabella (campo) VALUES('$value')";
   mysql_query($query);
}
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Comunque se la variabile che hai scritto è così come compare nel codice dovrai usare , (con lo spazio dopo) invece di , come stringa da esplodere (non carinissimo questo termine, explode sta per dividere, separare come in un'esplosione in questo caso :D).
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Cioè in questo modo:

PHP:
$dati = explode(", ", $dati);
foreach($dati as $value) {
  $query = "INSERT INTO tabella (campo) VALUES('$value')";
   mysql_query($query);
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
secondo me gli spazi sono noiosi anche perchè delle volte scrivendo uno li tralascia o ne scrive due
prima di explode io metterei

PHP:
$dati=str_replace(" ","",$dati);
//per cui l'explode diventa
$dati = explode(",", $dati); 
//ecc....
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve ragazzi e grazie per le numerose risposte, però volevo sapere, con quella variabile contenente l'array, devo fare anche una select, cioè:

$dati=str_replace(" ","",$dati);
$dati = explode(",", $dati);
$query ="SELECT * FROM tabella WHERE nome = $dati";

Così va bene, oppure no?

Grazie
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
A prima vista direi di no...
Poi dipende da cosa ti serve...
1. alla query stai passando un array e non un valore...
Quindi se ad esempio ti servisse tirar fuori dalla tabella tutti i campi che cotengono la taglia S,M e XL la query sarebbe:

$query ="SELECT * FROM tabella WHERE (nome = $dati[0])||(nome = $dati[1])||(nome = $dati[2])";
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Cioè, questo
PHP:
$dati=str_replace(" ","",$dati);
$dati = explode(",", $dati);
è corretto ma poi devi passare alla condizione (where) della query un valore per volta... quindi
... where (nome = $dati[0])||(nome = $dati[1])||(nome = $dati[2])
che significa semplicemente:
dove (nome è = a S)oppure(nome è = a M)oppure(nome è = a XL)...

Spero di averti aiutato... se è questo che ti serviva...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
sono d'accordo con lakanka
A prima vista direi di no...
anche alla seconda.
per quanto riguarda la select anche li ha ragione
Poi dipende da cosa ti serve...

se ti serve per selezionare una taglia dovresti trasmettere via $_post o $_get cosa vuoi selezionare

es.
PHP:
$voglio_la_taglia=(int)$_POST['taglia'];//dove taglia = 0, 1, 2, 3.....

$dati=str_replace(" ","",$dati); 
$dati = explode(",", $dati); 

$query ="SELECT * FROM tabella WHERE (nome = $dati[$voglio_la_taglia])";
//ecc...
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Grazie ragazzi per i numerosi aiuti, però volevo chiedervi un'ulteriore cosa, cioè:
Dal riultato della query
PHP:
$query ="SELECT * FROM tabella WHERE (nome = $dati[$voglio_la_taglia])";
//ecc...

Prelevo un valore in questo modo:
PHP:
      $variante = $row['products_options_name'];

Poi vorrei fare un confronto:
Se i valori contenuti in $variante, sono uguali a quelli $dati[$voglio_la_taglia] deve fare una cosa, altrimenti un'altra, ho fatto così, ma non scrive niente:
PHP:
if($variante == $dati[$voglio_la_taglia]){
fa una cosa, 
}else{
fa un'altra cosa
}
In verità dovrebbe controllare i valori in $variante in questo modo, cioè se tutti i valori corrispondo e anche uno no, deve inserire quel nuovo valore che non corrisponde nel database, altrimenti passa alla seconda condizione.

Spero di essere stato chiaro

Grazie
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Scusatemi ragazzi, vi metto il codice:

PHP:
//$params['Variante1'] equivale a $_POST['Variante1'];
$voglio_la_taglia=(int)$params['Variante1'];

$dati=str_replace(" ","",$params['Variante1']); 
$dati = explode(",", $params['Variante1']);  

$q = "SELECT * FROM products_options_values WHERE products_options_values_name = '$dati'";
$s = mysql_query($q) or die (mysql_error());
while ($row = mysql_fetch_array($s)){
      $variante = $row['products_options_name'];
}

 
if($params['Variante1'] != $variante){
$vari = $params['Variante1'];

  $query = "INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) VALUES ('', '1', '$vari', '1')";
$insert = mysql_query($query);
   if(!$insert) die(mysql_error());


}
else{

$vari = setstockvar($params['Variante1']);
$pid = $params['products_attributes_id'];

$query = "INSERT INTO products_attributes (products_attributes_id, products_id, options_id, options_values_id, product_attribute_is_free, attributes_discounted, attributes_price_base_included) VALUES ('', '$pid', '$vari', '1', '1', '1', '1')";
$insert = mysql_query($query);
   if(!$insert) die(mysql_error());
}

Così, mi scrive sempre i valori nel database senza curarsi dell'if

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao, non puoi fare
$q = "SELECT * FROM products_options_values WHERE products_options_values_name = '$dati'";
perchè $dati è un array con enne possibili valori

$dati[0] = pinco
$dati[1] = pallino
...........
$dati[enne] = sempronio

se vuoi estrarre tutti i dati con i vaori delle variabile array devi fare come ha detto lakanka (con tutti glio OR) oppure in un altra maniera rendendo il WHERE dinamico. se hai pazienza ti faccio un esempio

poi ci sono altri errori di logica
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao,
1. $params['Variante1'] che cosa contiene?
perchè se il suo valore è (es) XS, L, M o simile
la riga
$voglio_la_taglia=(int)$params['Variante1'];
ti darà in $voglio_la_taglia sempre il valore 0
poi comunque non vedo da alcuna altra parte $voglio_la_taglia
quindi se non usi la variabile a che ti serve la riga (assurda tra l'altro)?

2. nell'estrazione ddalla select (errata comunque) fai

$s = mysql_query($q) or die (mysql_error());
while ($row = mysql_fetch_array($s)){
$variante = $row['products_options_name'];
}

o non ti serve il ciclo while o comunque in $variante troverai sempre ed esclusivamente
il valore dell'ultimo record estratto, se ti servono tutti i valori (anche dei record prima dell'ultimo)
$variante deve essere un array
$variante[] = $row['products_options_name'];

poi mi fermo qui, anche perchè credo di non aver capito bene quello che vuoi fare
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
In pratica devo fare in modo che quando viene inviato il form devo recuperare il valore delle varianti, poi devo fare un controllo nel database per vedere se esiste qualche variante nel database, se non esiste una o tutte le variabili li deve inserire nella tabella delle varianti, altrimenti se esistono deve eseguire un'altra funzione.

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao,
per capire meglio ed ventualmente darti una mano
1. in $params['Variante1'] hai una stringa del tipo "XL, M, XM" o simile
che esplodi nei singoli elementi 'XL' 'M' e 'XM'?
2. cosa hai (o potresti avere) nel campo products_options_values_name? un singolo elemento
o una serie di elementi?
questo perchè se hai un elemento è una cosa se una serie un'altra
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Ho risolto in questo modo:

PHP:
$variante=array();
$q = "SELECT * FROM products_options_values WHERE products_options_values_name = '".$_POST['Variante1']."'";
$s = mysql_query($q) or die (mysql_error());
while ($row = mysql_fetch_array($s)){
      $variante[] = $row['products_options_values_name'];
}

$array = explode("," ,$_POST['Variante1']); 

$array = $array;
 $var1=count($array); 
$res = false;

for($i=0;$i<$var1;$i++)
{
if ($array[$i]==$variante[$i])
    {
$res=true;
    }
} 
if($res == true)
{

$vari = setstockvar($params['Variante1']);
	$pid = $_POST['Model'];


$query = "INSERT INTO products_attributes (products_attributes_id, products_id, options_id, options_values_id, product_attribute_is_free, attributes_discounted, attributes_price_base_included) VALUES ('', '$pid', '$vari', '1', '1', '1', '1')";
$insert = mysql_query($query);
   if(!$insert) die(mysql_error());


}else{


$vari = $params['Variante1'];


  $query = "INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) VALUES ('', '1', '$vari', '1')";
$insert = mysql_query($query);
   if(!$insert) die(mysql_error());


}

Però ora non so come far eseguire un ciclo su una query, cioè eseguire una query tante volte quanti sono i valori contenuti nella variabile $vari, praticamente qui:

PHP:
$vari = $params['Variante1'];

$query = "INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) VALUES ('', '1', '$vari', '1')";
$insert = mysql_query($query);
   if(!$insert) die(mysql_error());

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima di tutto una cosa
cerca di non dare nomi alle variabili che siano anche parole chiave
non dovrebbero esserci problemi ma un piccolo errore di battitura (es uno spazio tra $ e nome) può
crearti problemi $array chiamala $arrai

poi se $vari = $params['Variante1']; è un array (a me sembrerebbe più che altro una stringa)
puoi fare così

PHP:
foreach($arrai as $valore){
  $query = "INSERT INTO products_options_values (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) VALUES ('', '1', '$valore', '1')"; 
  $insert = mysql_query($query) or die(mysql_error(); 
}

altra piccola cosa se products_options_values_id, language_id è una primarykey autoincrement non serve metterla nell'insert (ne come valore ne come valore '')
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Non sono d'accordo con il fatto di non dare alle variabili il nome di parole chiave (che poi array non è una parola chiave). Dopotutto anche se la variabile la chiami $pincopallino e scrivi $ pincopallino PHP ti restituirà un errore, quindi direi che puoi anche chiamarla tranquillamente $array.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M PHP/SQL Inserire più valori in una colonna di tipo integer - Checkbox - PHP 3
filippino Inserire un articolo in più categorie è penalizzante lato seo? SEO e Posizionamento 0
JackIlPazzo Inserire array in più righe PHP 9
W Inserire più input dinamicamente Javascript 6
nim inserire più frasi in un record MySQL 8
B inserire più musiche di sfondo HTML e CSS 9
L Inserire più record in una sola volta PHP 1
D inserire più Include PHP 0
D inserire più valori in una POST PHP 4
B inserire link a più pagine HTML e CSS 2
L inserire menu su più pagine HTML e CSS 6
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
gara1 inserire immagine di sfondo in canvas Javascript 0
FDF182 Inserire pdf in db PHP 3
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
D Inserire link PHP 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
P inserire due voci in un titolo post wp WordPress 1
R inserire video nel sito HTML e CSS 15
J Inserire blog wordpress in angular CMS (Content Management System) 0
A inserire variabile php colore in div html PHP 2
L inserire dati multi livello PHP 8
G Inserire una scritta Java 1
M Inserire variabile nella value di una hidden PHP 3
S Inserire foto in ogni cella di una tabella Javascript 0
G inserire dati automaticamente in mysql PHP 0
B Vorrei inserire una finestra con messaggio ad un history.back PHP 16
Shyson Inserire placeholder nel campo cerca PHP 5
M Lanciare alert se il codice fiscale è già presente nel db e lasciare la scelta di inserire all'utente PHP 42
atipika INSERIRE ICONE DOWNLOAD E STAMPA WORDPRESS WordPress 10
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
B inserire valori da una tabella a un altra mysql PHP 34
D [Javascript] inserire uno script in un file php Javascript 6
napuleone [HTML] type="file" inserire path di partenza HTML e CSS 4
Monital [Javascript] inserire dati estratti dal db in html fisso Javascript 1
R [WordPress] Inserire campi aggiuntivi ad un Submit Form già dato dal template (front-end) WordPress 0
M inserire i dati ottenuti da una jquery in una tabella già esistente jQuery 1
G Inserire "Leggi il resto dell'articolo" con link al post sul sito preso via RSS Email Marketing 0
M [PHP] Come inserire codice html in un ciclo while PHP 2
P [PHP] Inserire stringhe in input(text),memorizzarle e stamparle in file successivo PHP 0
J [Javascript] Inserire un caricamento con animazione prima dell'esecuzione di un'azione Javascript 1
Shyson [PHP] Inserire testo nel codice PHP 2
D Mailchimp - Possibile inserire doppia condizione per i triggers? Email Marketing 0
A [MS Access] Pulsante per inserire allegati in campo maschera MS Access 0
Shyson [HTML] Inserire nuovo font con @font-face HTML e CSS 5
Alex_70 Inserire photo in php PHP 0
D [Javascript] [HTML] Inserire slash dopo 3 numeri Javascript 5
F INSERIRE IN UN'UNICA CASELLA DI TESTO REPORT ACCESS I VALORI DELLA TABELLA DI UN'INTERA COLONNA MS Access 2
A [HTML] Come inserire google review stars nelle pagine del mio sito HTML e CSS 0

Discussioni simili