• Home
  • Forum
  • Fare Web
  • PHP

Inserire più dati in database

  • Creatore Discussione Creatore Discussione intimoviro
  • Data di inizio Data di inizio 26 Nov 2009
  • Tag Tag
    array
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 29 Nov 2009
  • #21
ciao, non ho detto che non si può, ma che è meglio evitare


p.s.
$pinco =array();
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 29 Nov 2009
  • #22
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.
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #23
Il problema è proprio questo, cioè nella tabella non ho nessun campo autoincrement quindi inserisce solo il primo valore, e poi interrompe il ciclo.

Si $vari = $params['Variante1'] è una stringa con valori separati da virgola
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #24
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)
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #25
Grazie per la tua risposta, ecco il codice:

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 == false)
{

		$languages = tep_get_languages();
		for ($i = 0, $n = sizeof($languages); $i < $n; $i++)
		{
		
			$lang = $languages[$i]['id'];

$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 ('', '$lang', '$vari', '1')";
$insert = mysql_query($query);
   if(!$insert) die(mysql_error());

}
}

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.

Grazie
 
Ultima modifica: 30 Nov 2009

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #26
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());
}
//................
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #27
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
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #28
No, i dati sono inviati automaticamente dal software, quindi vanno inseriti correttamente.
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #29
Purtroppo ho provato, ma non funziona.:dipser:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #30
ciao
cosa non funzia? non inserisce? o ti da qualche errore?
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #31
No, non mi da alcun errore, però dopo che ha inserito il primo valore, interrompe il ciclo senza inserirne altri
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #32
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"

fai una prova e sappimi dire cosa risulta
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #33
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:

-- --------------------------------------------------------

--
-- Struttura della tabella `products_options_values`
--

CREATE TABLE IF NOT EXISTS `products_options_values` (
`products_options_values_id` int(11) NOT NULL default '0',
`language_id` int(11) NOT NULL default '1',
`products_options_values_name` varchar(64) NOT NULL default '',
`products_options_values_sort_order` int(11) NOT NULL default '0',
PRIMARY KEY (`products_options_values_id`,`language_id`),
KEY `idx_products_options_values_name_zen` (`products_options_values_name`),
KEY `idx_products_options_values_sort_order_zen` (`products_options_values_sort_order`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Se invece la tabella è strutturata così funziona:

-- --------------------------------------------------------

--
-- Struttura della tabella `products_options_values`
--

CREATE TABLE IF NOT EXISTS `products_options_values` (
`products_options_values_id` int(11) NOT NULL autoincrement,
`language_id` int(11) NOT NULL default '1',
`products_options_values_name` varchar(64) NOT NULL default '',
`products_options_values_sort_order` int(11) NOT NULL default '0',
PRIMARY KEY (`products_options_values_id`,`language_id`),
KEY `idx_products_options_values_name_zen` (`products_options_values_name`),
KEY `idx_products_options_values_sort_order_zen` (`products_options_values_sort_order`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Scusami se non riesco a spiegarmi bene::crying:
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 30 Nov 2009
  • #34
E allora perché non lasci l'auto incremento nella tabella?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #35
ciao
se metti

`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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #36
ciao
alessandro1997 mi ha preceduto e (anche se nessuno lo ama:dipser ha ragione
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 30 Nov 2009
  • #37
Sì, infatti lui ha detto che se mette AUTO INCREMENT funziona, però gli rimane comunque questo dilemma
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #38
ciao dimenticavo

...perchè non posso fare il var_dump dei dati, poichè la pagina che invia i dati è un gestionale,...
Clicca per allargare...
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
 
I

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
  • 30 Nov 2009
  • #39
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.

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Nov 2009
  • #40
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 -------------
 
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

M
PHP/SQL Inserire più valori in una colonna di tipo integer - Checkbox -
  • Monte95
  • 4 Apr 2017
  • PHP
Risposte
3
Visite
3K
PHP 19 Apr 2017
Monte95
M
Inserire un articolo in più categorie è penalizzante lato seo?
  • filippino
  • 27 Nov 2014
  • SEO e Posizionamento
Risposte
0
Visite
1K
SEO e Posizionamento 27 Nov 2014
filippino
Inserire array in più righe
  • JackIlPazzo
  • 26 Lug 2014
  • PHP
Risposte
9
Visite
4K
PHP 27 Lug 2014
JackIlPazzo
W
Inserire più input dinamicamente
  • wiz
  • 24 Lug 2012
  • Javascript
Risposte
6
Visite
5K
Javascript 26 Lug 2012
wiz
W
inserire più frasi in un record
  • nim
  • 17 Gen 2012
  • MySQL
Risposte
8
Visite
3K
MySQL 18 Gen 2012
nim
B
inserire più musiche di sfondo
  • Bruce5000
  • 30 Mar 2011
  • HTML e CSS
Risposte
9
Visite
2K
HTML e CSS 24 Dic 2012
paperinik4
P
L
Inserire più record in una sola volta
  • leon-kennedy
  • 20 Feb 2011
  • PHP
Risposte
1
Visite
2K
PHP 21 Feb 2011
Eliox
D
inserire più Include
  • djeds
  • 29 Dic 2006
  • PHP
Risposte
0
Visite
2K
PHP 29 Dic 2006
djeds
D
D
inserire più valori in una POST
  • dvd
  • 15 Feb 2005
  • PHP
Risposte
4
Visite
2K
PHP 18 Feb 2005
dvd
D
B
inserire link a più pagine
  • brontolo
  • 13 Nov 2004
  • HTML e CSS
Risposte
2
Visite
2K
HTML e CSS 15 Nov 2004
brontolo
B
L
inserire menu su più pagine
  • linkepona
  • 4 Gen 2004
  • HTML e CSS
Risposte
6
Visite
2K
HTML e CSS 7 Gen 2004
maxbossi
[Contact form 7] Inserire Numero auto incrementante
  • Elisacau
  • 6 Mar 2023
  • WordPress
Risposte
1
Visite
2K
WordPress 15 Mag 2023
mariathomas
M
inserire immagine di sfondo in canvas
  • gara1
  • 24 Gen 2023
  • Javascript
Risposte
0
Visite
2K
Javascript 24 Gen 2023
gara1
Inserire pdf in db
  • FDF182
  • 18 Feb 2022
  • PHP
Risposte
3
Visite
3K
PHP 18 Feb 2022
otto9due
Inserire o aggiornare tabella my sql controllando una coppia di valori
  • otto9due
  • 26 Dic 2021
  • PHP
Risposte
7
Visite
1K
PHP 27 Dic 2021
otto9due
inserire dati da un file di testo in una tabella in php
  • Couting95
  • 26 Nov 2021
  • PHP
Risposte
1
Visite
2K
PHP 27 Nov 2021
marino51
D
Inserire link
  • Darkbox
  • 9 Set 2021
  • PHP
Risposte
0
Visite
1K
PHP 9 Set 2021
Darkbox
D
L
  • Bloccata
PHPSpreadsheet inserire dati da file .xlsx/.xls su database
  • lucie
  • 3 Giu 2021
  • PHP
Risposte
2
Visite
2K
PHP 3 Giu 2021
Max 1
P
inserire due voci in un titolo post wp
  • polinea
  • 16 Mag 2021
  • WordPress
Risposte
1
Visite
2K
WordPress 9 Giu 2021
WmbertSea
R
inserire video nel sito
  • Robi999
  • 25 Gen 2021
  • HTML e CSS
Risposte
15
Visite
3K
HTML e CSS 1 Feb 2021
Robi999
R
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?