• Home
  • Forum
  • Fare Web
  • PHP

Problema array_key_exists!

  • Creatore Discussione Creatore Discussione Fabrizio Villa
  • Data di inizio Data di inizio 18 Feb 2013
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
Succ.
Primo Prec. 4 di 5 Succ. Ultimo
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 6 Mar 2013
  • #61
Negli innumerevoli test (ovviamente ormai quasi solo a caso...) ho notato che c'è un problema di parentesi:
Ecco il codice funzionante (per quantità=1):
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);			  		
				  		$sqlcommande .= "'', '".date("Y-m-d")."', '".$_SESSION["commande"]["type"][$i]."', '".addslashes($desc)."',".$_SESSION["commande"]["prix"][$i]."'";             		  
				  	} 
			  	 }
			  }
			  $sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande)-1);
        $sqlcommande .= ");";  			  		  
			  mysql_query($sqlcommande) or die ("Erreur SQL > ".$sqlcommande."<br />".mysql_error()); 	
 
			  unset($_SESSION["commande"]);
Se tolgo la parentesi nella stringa: $sqlcommande .= ");";
non funziona più...
può essere d'aiuto?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 6 Mar 2013
  • #62
il problema è che ripeti due volte i VALUES
puoi postare un var_dump di tutta la SESSION ?
PHP:
var_dump($_SESSION)
eccetto ovviamente i dati sensibili tipo password
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 6 Mar 2013
  • #63
Eh, grazie per la risposta.
Il problema è che la struttura parte da un'altra pagina.
Puoi vedere il sito : www.aupetitcomestible.net
Nella prima pagina (index.php) si caricano tutte le pagine.
Poi si fa un ordine, si aggiunge al carrello e poi si manda una mail di conferma.
Tutto funziona alla perfezione, tranne il passaggio finale, nel quale insieme alla mail si deve aggiungere alla tabella delle statistiche quello che il cliente ha ordinato.
Se l'ordine è singolo e di una sola quantità tutto è ok, se l'ordine è > 1 o in quantità >1 va tutto a farsi benedire...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 6 Mar 2013
  • #64
prova cosi: togli questa riga dal ciclo interno for
PHP:
$sqlcommande .= "'', '" . date("Y-m-d") . "', '" . $_SESSION["commande"]["type"][$i] . "', '" . addslashes($desc) . "'," . $_SESSION["commande"]["prix"][$i] . "'";
e mettila appena furi dal ciclo
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);            
        }
        $sqlcommande .= "'', '" . date("Y-m-d") . "', '" . $_SESSION["commande"]["type"][$i] . "', '" . addslashes($desc) . "'," . $_SESSION["commande"]["prix"][$i] . "'";
    }
}
$sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande) - 1);
$sqlcommande .= ");";
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 6 Mar 2013
  • #65
Cmq ecco l'errore con il var_dump:

int(0) array(1) { [0]=> string(4) "shop" } Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES();
Column count doesn't match value count at row 1
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 6 Mar 2013
  • #66
P...c...a....

Aspetta, faccio qualche altro controllo ma sembra che funzioni!
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #67
ecco appunto, sembrava troppo bello per essere vero:
non dà più l'errore però purtroppo inserisce nella tabella una sola quantità del prodotto.
Se metto una quantità 2 o + nella 'tstat' appare solo quantità=1
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 7 Mar 2013
  • #68
vuoi dire che dovresti avere piu righe?
rimetti anche la prima modifica che ti avevo fatto fare ovvero la prima parte della query dentro il ciclo foreach
PHP:
foreach ($cles as $i) {
            $sqlcommande = "INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( ";
            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);
                }
                $sqlcommande .= "'', '" . date("Y-m-d") . "', '" . $_SESSION["commande"]["type"][$i] . "', '" . addslashes($desc) . "'," . $_SESSION["commande"]["prix"][$i] . "'";
            }
        }
        $sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande) - 1);
        $sqlcommande .= ");";

anzi no
non credo di aver capito
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #69
(grazie)

In pratica succede qualcosa di strano quando il parametro "quantità" è > 1, oppure quando l'id del prodotto è > 1 (cioè più prodotti).

Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES( '', '2013-03-07', 'sand', 'Giorgio - Sandwiche - ',10.00''', '2013-03-07', 'sand', 'Giorgio - Sandwiche - ',10.00);
You have an error in your SQL syntax; check (...) near '''', '2013-03-07', 'sand', 'Giorgio - Sandwiche - ',10.00)' at line 1

Oppure con il var_dump:

nt(0) array(1) { [0]=> string(4) "sand" } Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES();
Column count doesn't match value count at row 1

Non trova cosa????
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 7 Mar 2013
  • #70
per il primo erroreSQL sei tornato indietro
rimetti quella riga fuori dal ciclo interno for
non ho capito questa frase
Se metto una quantità 2 o + nella 'tstat' appare solo quantità=1
Clicca per allargare...
non vedo una colonna quantità nella 'tstat'
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 7 Mar 2013
  • #71
ciao
io proverei in questa maniera
PHP:
<?php
//......
foreach ($cles as $i) {
	$sqlcommande = "INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( ";
	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);
		}//fine for
		$sqlcommande .= "'" . date("Y-m-d") . "', '" . $_SESSION["commande"]["type"][$i] . "', '" . addslashes($desc) . "'," . $_SESSION["commande"]["prix"][$i];
	}//fine if
	//$sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande) - 1);//a che serve togliere l'ultimo apice basta non metterlo dopo il prix[$i]
    $sqlcommande .= ");";
	mysql_query($sqlcommande) or die ("Erreur SQL > ".$sqlcommande."<br />".mysql_error());  
}//fine foreach
unset($_SESSION["commande"]);
//.......
?>
mal che vada "funzia" come prima
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #72
Ciao!
Intanto ne approfitto ancora per ringraziarvi infinitamente per il vostro più che indispensabile aiuto!
Ho provato ad inserire il comando che mi hai dato, ma mi dà il seguente errore:

Parse error: syntax error, unexpected end of file in..

Che faccio?
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #73
Per rispondere alla domanda di cricic, in effetti non c'è nella tstat un parametro quantità.
Quando il prodotto è > di 1 infatti si dovrebbe inserire una stringa con (idstat, datecommande, champtype, description, prix) 2 volte, o n volte a seconda di quanti ordini sono fatti.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 7 Mar 2013
  • #74
provala cosi: ho fatto due piccole modifiche commentate
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); 
            $sqlcommande .= "'', '" . date("Y-m-d") . "', '" . $_SESSION["commande"]["type"][$i] . "', '" . addslashes($desc) . "'," . $_SESSION["commande"]["prix"][$i] . "'),";
        // aggiunte parentesi e virgola per chiudere la prima insert
            
        }
        
    }
}
$sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande) - 1);
// $sqlcommande .= ");"; tolta la chiusura
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #75
scusa tanto, ho visto che avevo dimenticato una } prima della fine della pagina.
Quindi ho sistemato e non dà più errore, ma la quantità nella tstat resta sempre = 1...

Con il var_dump esce fuori:

int(0) array(1) { [0]=> string(4) "shop" } Erreur SQL > INSERT INTO tstat (datecommande, champtype, description, prix) VALUES( );
Column count doesn't match value count at row 1

...
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #76
Ciao Cricic, grazie!
Purtroppo con l'ultima modifica non dà errore, ma non inserisce proprio nulla nella tabella tstat...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 7 Mar 2013
  • #77
cosi dovrebbe funzionarti
stai attento alla sintassi che ho solo spostato una parentesi ( e aggiunto un apice '
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); 
            $sqlcommande .= "('', '" . date("Y-m-d") . "', '" . $_SESSION["commande"]["type"][$i] . "', '" . addslashes($desc) . "','" . $_SESSION["commande"]["prix"][$i] . "'),";
        // aggiunte parentesi e virgola per chiudere la prima insert
            
        }
        
    }
}
$sqlcommande = substr($sqlcommande, 0, strlen($sqlcommande) - 1);
// $sqlcommande .= ");"; tolta la chiusura

ps
se non va metti alla fine
PHP:
echo $sqlcommande
e posta
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #78
Ho dovuto aggiungere echo $sqlcommande; (con il , ma mi dice

INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES ('', '2013-03-07', 'sand', 'DAN - Sandwiche - ','13.00')

Cioè, non dà errore, ma non inserisce nella tabella...
 
F

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
  • 7 Mar 2013
  • #79
Questo messaggio appare invece se la quantità di "DAN" è = 2
(nella tstat sempre nulla...)

INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES ('', '2013-03-07', 'sand', 'DAN - Sandwiche - ','13.00'),('', '2013-03-07', 'sand', 'DAN - Sandwiche - ','13.00')

Perché non dice più ERROR?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 7 Mar 2013
  • #80
hai messo piu quantita?
mettine 2 o 3 e riprova
 
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
Succ.
Primo Prec. 4 di 5 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

T
  • Bloccata
ALTRO PROBLEMA CON ARRAY PHP
  • thanatos
  • 30 Mag 2021
  • PHP
Risposte
1
Visite
2K
PHP 30 Mag 2021
Max 1
T
PROBLEMA CON ARRAY
  • thanatos
  • 27 Mag 2021
  • PHP
Risposte
8
Visite
2K
PHP 31 Mag 2021
marino51
C
[Javascript] problema nell'utilizzo di un array
  • Ctrl+Alt+Mario
  • 27 Ott 2018
  • Javascript
Risposte
2
Visite
2K
Javascript 27 Ott 2018
Ctrl+Alt+Mario
C
F
[PHP] Problema con array multidimensionale
  • Francesco Iacomino
  • 27 Set 2018
  • PHP
Risposte
4
Visite
2K
PHP 27 Set 2018
Francesco Iacomino
F
[PHP] Popolamento database con form ricorsivi - problema array (foreach )
  • alessandra86
  • 28 Giu 2018
  • PHP
Risposte
5
Visite
3K
PHP 12 Lug 2018
alessandra86
A
[java] problema esercizio array
  • Andrespo
  • 3 Giu 2018
  • Java
Risposte
5
Visite
3K
Java 5 Giu 2018
Andrespo
A
P
[PHP] Problema inserimento nuove chiavi in array
  • pierPHP
  • 18 Mar 2018
  • PHP
Risposte
2
Visite
1K
PHP 18 Mar 2018
pierPHP
P
R
[PHP] Problema stampa array bidimensionali con formula $html.=<<<myHtml...
  • rob466
  • 10 Feb 2018
  • PHP
Risposte
2
Visite
2K
PHP 10 Feb 2018
rob466
R
S
problema con gli array in javascript
  • stefano Linguanti
  • 18 Mag 2016
  • Javascript
Risposte
12
Visite
3K
Javascript 24 Mag 2016
stefano Linguanti
S
C
Problema con creazione array
  • camionistaxcaso
  • 14 Gen 2016
  • PHP
Risposte
7
Visite
2K
PHP 19 Gen 2016
camionistaxcaso
C
V
Problema con array
  • Vera
  • 22 Ott 2015
  • PHP
Risposte
8
Visite
1K
PHP 23 Ott 2015
Vera
V
PHP/MySQL - Problema con generazione array
  • neo996sps
  • 21 Ott 2015
  • PHP
Risposte
14
Visite
3K
PHP 23 Ott 2015
marino51
P
problema con mysql_fetch_array()
  • paperinik4
  • 30 Giu 2015
  • PHP
Risposte
2
Visite
1K
PHP 30 Giu 2015
paperinik4
P
M
Problema ordinamento array
  • maced
  • 28 Ott 2014
  • PHP
Risposte
4
Visite
2K
PHP 28 Ott 2014
borgo italia
L
problema array con le sessioni
  • luigi777
  • 13 Mag 2014
  • PHP
Risposte
1
Visite
1K
PHP 13 Mag 2014
luigi777
L
[risolto] PHP problema memorizzazione array
  • Alessandro Le Mura
  • 9 Feb 2014
  • PHP
Risposte
4
Visite
2K
PHP 10 Feb 2014
Alessandro Le Mura
F
Problema formattazione data e creazione array con nuove date
  • fradamma
  • 14 Nov 2013
  • Javascript
Risposte
2
Visite
2K
Javascript 16 Nov 2013
fradamma
F
S
Problema trasformazione array php in javascript
  • ste902
  • 14 Set 2013
  • PHP
Risposte
0
Visite
1K
PHP 14 Set 2013
ste902
S
F
problema Json con Array
  • fradamma
  • 2 Set 2013
  • jQuery
Risposte
1
Visite
2K
jQuery 3 Set 2013
fradamma
F
F
Problema associazione tabs/oggetto array
  • fradamma
  • 31 Lug 2013
  • jQuery
Risposte
17
Visite
3K
jQuery 25 Ago 2013
criric
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?