Problema array_key_exists!

ciao
intanto il numero
se devi fare dei calcoli devi usare il punto 10.00 se invece è solo una visualizzazione allora è indifferente
ora guardo la riga che forma la query poi spero di saperti dire
 
ciao
a parte che non capisco esattamente cosa fa quel ciclo, prova a modificare la riga mettendo la parentesi aperta
PHP:
$sqlcommande = 'INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES';
in
PHP:
$sqlcommande = "INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( ";
e la riga mettendo la chiusa
PHP:
$sqlcommande .= ";";
in
PHP:
$sqlcommande .= ")";
anche se non capisco a cosa serva eventualmente lascia il ;
PHP:
$sqlcommande .= ");";

credo che quello non c'entri essendo un float 10.0 o 10.00 sempre dieci è
 
Grazie per la risposta!
Dunque, in effetti il ; non serve a nulla. Ecco i due errori con e senza:

Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( '', 2013-02-25', 'betd, 'Coca Cola - ', '2,50)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', 'betd, 'Coca Cola - ', '2,50)' at line 1

Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( '', 2013-02-25', 'betd, 'Coca Cola - ', '2,50);
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', 'betd, 'Coca Cola - ', '2,50)' at line 1

Il prezzo nelle pagine precedenti è trattato con il . I calcoli infatti li esegue senza problemi.
Poi cambia in virgola, pensi possa essere qui l'errore?
Il primo dato è l'id e non si vede, pensi sia normale? O dovrebbe apparire?

Ecco cosa succede con il var_dump:

int(0) array(1) { [0]=> string(4) "betd" } Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES();
Column count doesn't match value count at row 1
 
ciao
l'errore è in
', '2,50)'
deve essere
', '2,50')


prova a correggere la linea
.addslashes($desc)."',".number_format((float)$_SESSION["commande"]["prix"][$i], 2, '.', ' ')."";
togliendo il number_format (che ti interessa che dentro la tabella ci sia 2.000000 o 2.00 l'importante è che sia 2.00 in fase di stampa) e aggiungi tra
gli ultimi due doppi apici un apice singolo

.addslashes($desc)."',".$_SESSION["commande"]["prix"][$i]."'";
 
ciao
non avevo visto la seconda domanda relativa all'id
se in tabella l'id è autoincrement prymari key puoi toglierlo
$sqlcommande = "INSERT INTO tstat (datecommande, champtype, description, prix) VALUES(";
ed anche in
$sqlcommande .='''.date("Y-m-d")."', '".$_SESSION["commande"]["type"][$i]."'
si vede male a monitor ma sostituisci tutti i singoli apici di apertura/chiusura con i doppi, stando attento ai singoli però ti faccio un esempio mettendo degli spazi per evidenziare

")." ' , ' ".$_
 
Porca vacca!!! Dopo innumerevoli e disperati tentativi sembra che funzioni!!!!! Con questo accorgimento: "'"
Meraviglioso aiuto, grazie davvero!!! Grazie infinite veramente!!!!!
Ecco come l'ho scritto:

$sqlcommande .= "'', '".date("Y-m-d")."', '".$_SESSION["commande"]["type"][$i]."', '".addslashes($desc)."',".$_SESSION["commande"]["prix"][$i]."'";
 
Altro problema...

Sembrava troppo bello per essere vero...
Penso che impazzirò...
Se nell'ordine c'è un solo prodotto funziona tutto, ma se i prodotti diventano 2 (o più) ecco l'errore:

Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( '', '2013-02-27', 'sand', 'Giorgio - Sandwiche - ',10.00''', '2013-02-27', 'sand', 'Giorgio - Sandwiche - ',10.00);
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''', '2013-02-27', 'sand', 'Giorgio - Sandwiche - ',10.00)' at line 1

Ma perché?
 
ciao
intanto togli dalla query l'id
1.
PHP:
$sqlcommande = "INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( ";
2.
PHP:
$sqlcommande .= "'".date("Y-m-d").", '".$_SESSION["commande"]["type"][$i]."', '".addslashes($desc)."', '".$_SESSION["commande"]["prix"][$i]."'"; 
//$sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande)-1);// non dovrebbe servire quindi commentala
$sqlcommande .= ")";
poi con phpmyadmin guarda la tabella tstat e verifica il campo idstat
il campo dovrebbe essere di tipo INT (xy di una certa lunghezza) autoincrement primary key
eventualmente posta la struttura della tabella

p.s.
anche questa non dovrebbe servire
$sqlcommande .= ")";
basta aggiungere la ) a:
PHP:
$sqlcommande .= "'".date("Y-m-d").", '".$_SESSION["commande"]["type"][$i]."', '".addslashes($desc)."', '".$_SESSION["commande"]["prix"][$i]."')";
tra l'ultimo apice singolo e l'ultimo doppio
 
Intanto grazie mille per la risposta...
Dunque, ho tolto il campo id (che è tipo: INT(11) AUTO INCREMENT - non so come postarlo...)
Anche le parentesi non mi aiutano, ecco qui l'errore:

Erreur SQL > INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( '2013-02-27, 'sand', 'Giorgio - Sandwiche - ', '10.00''2013-02-27, 'sand', 'Giorgio - Sandwiche - ', '10.00)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sand', 'Giorgio - Sandwiche - ', '10.00''2013-02-27, 'sand', 'Giorgio - Sandwich' at line 1

Tra il primo 10.00 e la data 2013.02.27 non dovrebbe esserci un'altra parentesi?
 
Questo è invece l'errore che mi dà se tolgo: $sqlcommande .= ")";

Erreur SQL > INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( '2013-02-27, 'sand', 'Giorgio - Sandwiche - ', '10.00')'2013-02-27, 'sand', 'Giorgio - Sandwiche - ', '10.00')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sand', 'Giorgio - Sandwiche - ', '10.00')'2013-02-27, 'sand', 'Giorgio - Sandwic' at line 1
 
ciao
la prima parentesi la trovi su
$sqlcommande = "INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( ";

poi hai ragione (quasi) ho fatto anch'io una dimenticanza (un apice)
PHP:
$sqlcommande .= "'".date("Y-m-d")."', '".$_SESSION["commande"]["type"][$i]."', '".addslashes($desc)."', '".$_SESSION["commande"]["prix"][$i]."')";

questo segnato in rosso
...."'".date("Y-m-d")."',....
 
ciao
dimenticavo per l'id
con phpmyadmin vai sul db e poi sulla tabella tstat selezioni struttura, poi generalmente in basso c'è prepara per la stampa e dovresti ottenere come è fatta la tabella (campi e loro caratteristiche) copi e incolli sul post

dimenticavo, anche da struttura vedi come è fatta
 
Qualcosa del genere?

tstat

Campo Tipo Null Predefinito Commenti MIME
idstat int(11) No
datecommande date No
champtype varchar(60) No
description text No
prix float No Indici
Chiave Tipo Unica Compresso Campo Cardinalità Codifica caratteri Null Commenti
PRIMARY BTREE Sì No idstat 29 A No

Grazie!
 
Poi ho corretto come hai detto ma purtroppo dà sempre lo stesso errore:

Erreur SQL > INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( '2013-02-27', 'sand', 'Giorgio - Sandwiche - ', '10.00')'2013-02-27', 'sand', 'Giorgio - Sandwiche - ', '10.00')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2013-02-27', 'sand', 'Giorgio - Sandwiche - ', '10.00')' at line 1

Ti ringrazio infinitamente e non oserei mai mettere in discussione le tue capacità e conoscenze. La mia era una semplice domanda di un ignorante alle prese con un problema più che amletico...poi, tra l'altro, di professione sono musicista e mi diletto di html...mannaggia al giorno che ho accettato di aiutare questo mio amico...:dipser:
 
ciao
prima la tabella
si è quello
Codice:
Campo Tipo Null Predefinito Commenti MIME
idstat int(11) No
datecommande date No
champtype varchar(60) No
description text No
prix float No Indici
Chiave Tipo Unica Compresso Campo Cardinalità Codifica caratteri Null Commenti
PRIMARY BTREE Sì No idstat 29 A No
l'unica cosa che non vedo è che idstat dovrebbe essere autoincrement, verifica sempre con phpmyadmin guardando "struttura" (non so che versione hai)
ma dovresti vedere qualcosa del genere
admin.jpg
verifica che sotto EXTRA sulla riga idstat (il mio si chiama semplicemente id) ci sia auto_increment se non c'è seleziona il campo (spunta a sx) e dove c'è action clicchi sulla matita per modificarlo e aggiungere auto_increment.
poi veniamo alla query
INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( '2013-02-27', 'sand', 'Giorgio - Sandwiche - ', '10.00')'2013-02-27', 'sand', 'Giorgio - Sandwiche - ', '10.00')
devo riguardare tutto il ciclo che la genera perchè NON dovrebbe duplicare i values
oggi sono via, se hai pazienza poi la guardo meglio
 
Ciao!
Ho verificato; il valore AUTO-INCREMENT è presente.
Quando hai tempo, non c'è problema, anche perché io non so come fare...grazie infinite!
 
ciao
sto riguardando il pezzo di codice incriminato
PHP:
<?php
//.....
$sqlcommande = "INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES(";  
foreach($cles as $i){ 
	if (array_key_exists($i, $_SESSION["commande"]["type"]) && $_SESSION["commande"]["type"] != NULL){ 
		for ($j = 0; $j < $_SESSION["commande"]["quantite"][$i]; $j++){                       
			$desc = str_replace("<br />", " - ", $_SESSION["commande"]["prod"][$i]); 
			$desc = strip_tags($desc);
			$desc = addslashes($desc);            
			$sqlcommande .= "'', ".date("Y-m-d").", '".$_SESSION["commande"]["type"][$i]."', '".$desc."', ".$_SESSION["commande"]["prix"][$i];            
		} 
	} 
} 
//$sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande)-1); 
$sqlcommande .= ")"; 
//.....
?>
ma non riesco a capire che ca..o fa, soprattutto relativamente al for perche fa un concatenamento per l'insert, per me, incomprensibile
perche se per ipotesi $_SESSION["commande"]["quantite"][$i] è uguale a 2 continua a concatenare la data il type la desc e il prezzo enne volte.
ma dove l'hai pescato quello script?
 
Non so se può aiutare, ma nella versione precedente del sito le statistiche funzionavano.
Posso mostrarti, se pensi sia d'utilità, la pagina nella versione vecchia (funzionante) e quella nuova? Così puoi dirmi dove sono le eventuali diversità ed errori...
Grazie
 
ciao
se prima funzionava (spero che tu abbia l'originale) devi ripercorre ad una ad una tutte le modifiche che hai fatto, provandole una alla volta, sino a che non ti imbatti in quella che ti manda in pallino il tutto.
è un lavoro certosino, ma credo che sia l'unica strada.
 

Discussioni simili