problema con "array_key_exist" (era: aiuto!!!)

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Salve!
Sono nuovo nel forum e quasi completamente inesperto di php.
Avrei bisogno che qualche anima pia mi aiutasse a risolvere un problema con "array_key_exist"...
ecco il codice che mi dà errore:

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)."',".number_format((float)$_SESSION["commande"]["prix"][$i], 2, '.', ' ').")"; 		  
				  	}
			  	 }
			  }

Grazie infinite!
 
Ultima modifica di un moderatore:
Non mettere titoli troppo generali inoltre metti il codice php fra i tag appoisti, comunque che tipo di errori ti da?
 
chiedo scusa,
credo di aver fatto un po' di casino per postare il messaggio.
Cmq se puoi aiutarmi, il messaggio di errore dice:

Notice: Undefined index: type in C:\xampp\htdocs\MALERBA\Panier\panier_valider.php on line 168

Warning: array_key_exists() expects parameter 2 to be array, null given in


Erreur SQL > INSERT INTO tstat (idstat, datecommande, champtype, description, prix) VALUES;
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 '' at line 1
 
Il primo errore dipende da $_SESSION["commande"]["type"] che non è un array e la query forse è sbagliata per via di quest'ultima parentesi che non ci dovrebbe essere .")"
 
Intanto grazie per la risposta e scusa ancora per il titolo.
Ho provato a togliere la parentesi ma non funziona...

Il problema credo sia più complesso di quel che sembra. Tra tutte le pagine del sito infatti c'è qualche "Undefined index" che non riesco a trovare.
Per esempio nella pagina che permette di aggiungere dati alle tabelle (tramite INSERT INTO) mi da errore.

Ecco il codice:

PHP:
if (isset($_POST['Btajout']) && $_POST['Btajout'] == 'Ajouter')
	{
    $table = $_POST['tb'];
		$nom = $_POST['nom'];
		
		//Pour table alcool
		if ($table != 'talcools' || $table != 'tdesert' || $table != 'tboissons')
			$champ = 'nom_'.substr($table, 1);
			
		if ($table == 'tdesert')
		{
			$champ = 'description';
			$champ2 = 'prix';
			$prix = $_POST["prix"];
		}
		
		if ($table == 'talcools')
			$champ = 'nom';
		
		
		if ($table == 'tboissons')
		{
			$champ = 'nom_'.substr($table, 1);
			$champ = substr($champ, 0, -1);
			$champ2 = 'prix';
			$prix = $_POST["prix"];			
		}
		
		if (isset($champ2))
		{
			$sql_prod = "INSERT INTO ".$table." (".$champ.", ".$champ2.") VALUES ('".addslashes($nom)."', ".$prix.")";
			mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error()); 		
		}
		else
		{
			$sql_prod = "INSERT INTO ".$table." (".$champ.") VALUES ('".addslashes($nom)."')";
			mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error()); 
		}
				
		echo '<p class="PCentrer">Valeur ajoutée.<br /><a href="index.php?p=prod&pr='.$table.'">Retour</a></p>';
		exit;
	}

Grazie ancora per l'aiuto!
 
In questo caso dice:

Notice: Undefined index: tb in C:\xampp\htdocs\MALERBA\admin\Produits\prod_ajout.php on line 3
Erreur SQL > INSERT INTO (nom_) VALUES ('ca')
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 '(nom_) VALUES ('ca')' at line 1

Grazie!!
 
In questo caso dice:

Notice: Undefined index: tb in C:\xampp\htdocs\MALERBA\admin\Produits\prod_ajout.php on line 3
Erreur SQL > INSERT INTO (nom_) VALUES ('ca')
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 '(nom_) VALUES ('ca')' at line 1

Grazie!!

Stampa la query anche con un semplice echo e postala, per l'undefined index significa che quella variabile non è settata quindi in questo caso $_POST['tb'] non lo è
 
E come e/o dove si setta sto caspita di <tb>???
Porca miseria 'sto php mi fa impazzire...
Come faccio a "stampare" la query?

Mi rendo conto della mia nullità...scusa!
 
PHP:
<?php
/*
	Page : admin/Produits/prod_ajout.php
				Page pour ajouter un produit
*/
//Si on est identifier
if (isset($_SESSION['admin']))
{
	//Ajout selon la liste de produits choisi (fromages, pains, etc)
	if (isset($_POST['Btajout']) && $_POST['Btajout'] == 'Ajouter')
	{
    $table = $_POST['tb'];
		$nom = $_POST['nom'];
		
		//Pour table alcool
		if ($table != 'talcools' || $table != 'tdesert' || $table != 'tboissons')
			$champ = 'nom_'.substr($table, 1);
			
		if ($table == 'tdesert')
		{
			$champ = 'description';
			$champ2 = 'prix';
			$prix = $_POST["prix"];
		}
		
		if ($table == 'talcools')
			$champ = 'nom';
		
		
		if ($table == 'tboissons')
		{
			$champ = 'nom_'.substr($table, 1);
			$champ = substr($champ, 0, -1);
			$champ2 = 'prix';
			$prix = $_POST["prix"];			
		}
		
		if (isset($champ2))
		{
			$sql_prod = "INSERT INTO ".$table." (".$champ.", ".$champ2.") VALUES ('".addslashes($nom)."', ".$prix.")";
			mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error()); 		
		}
		else
		{
			$sql_prod = "INSERT INTO ".$table." (".$champ.") VALUES ('".addslashes($nom)."')";
			mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error()); 
		}
				
		echo '<p class="PCentrer">Valeur ajoutée.<br /><a href="index.php?p=prod&pr='.$table.'">Retour</a></p>';
		exit;
	}

	//Affichage du formulaire pour ajouter
	if (isset($_GET['t']) && $_GET['t'] != '')
	{
		$nomprod = substr($_GET['t'], 1);
		echo '<p class="PCentrer"><span class="Titre">Produits</span></p>
			  <form name="FProdajout" method="post" action"index.php?p=prodajout">
			  	Nom '.$nomprod.' : <input type="text" name="nom" />';
		if ($nomprod == 'desert' || $nomprod == 'boissons')	
			echo ' Prix : <input type="text" name="prix" size="2"/> ';
		echo  '<input type="submit" name="Btajout" value="Ajouter" />
				<input type="hidden" name="tb" value="'.$_GET['t'].'"
			  </form>';
	}
}
?>
 
Ultima modifica di un moderatore:
PHP:
<?php
/*
	Page : admin/Produits/prod.php
				Page qui affiche les différents produits
*/
//Si on est identifier
if (isset($_SESSION['admin']))
{
	echo '<p class="PCentrer"><span class="Titre">Produits</span></p>
	     <p class="PCentrer"><a href="index.php?p=prod&pr=tpain">Pain</a> | 
       <a href="index.php?p=prod&pr=tcharcuterie">Charcuteries</a> | 
       <a href="index.php?p=prod&pr=tfromage">Fromages</a> | 
       <a href="index.php?p=prod&pr=tgarniture">Garnitures</a> | 
       <a href="index.php?p=prod&pr=tdivers">Divers</a> | 
       <a href="index.php?p=prod&pr=tboissons">Boissons</a> | 
       <a href="index.php?p=prod&pr=tdesert">Dessert</a> | 
       <a href="index.php?p=prod&pr=talcools">Alcools et vins</a></p>';

	//Modifications des champs
  
	if (isset($_POST['Btmodif']) && $_POST['Btmodif'] == 'Modifier')
	{
  
		$table = $_POST['tb'];
		$pass = false;
		
		//Pour table alcool
		if ($table == 'talcools')
		{
			$champ = 'nom';	
			$nom = $_POST['nom'];
			$pass = true;
		}
		
		if ($table == 'tdesert')
		{
			echo 'sad';
			$champ = 'description';	
			$champs2 = 'prix';
			$nom = $_POST['description'];		
			$prix = $_POST['tprix'];
			$pass = true;		
		}
		
		if ($table == 'tboissons')	
		{
			$champ = 'nom_'.substr($table, 1);
			$champ = substr($champ, 0, -1);
			$champs2 = 'prix';
			$prix = $_POST['tprix'];
			$nom = $_POST[$champ];
			$pass = true;
		}
		
		if ($pass == false)	
		{
			$champ = 'nom_'.substr($table, 1);
			$nom = $_POST['nom_'.substr($table, 1)];
		}
				
		$id = $_POST['id'];	
				
		$idxid = 0;
		if (isset($champs2))
		{		
			for($i = 0; $i < count($nom); $i++)
			{
			
				$sql = "UPDATE ".$table." SET ".$champ." = '".addslashes($nom[$i])."', ".$champs2." = ".$prix[$i]." WHERE id = ".$id[$i]."";
				mysql_query($sql) or die ("Erreur SQL > ".$sql."<br />".mysql_error()); 								
				$idxid++;
			}			
		}
		else
		{
			foreach($nom as $nmodif)
			{
				$sql = "UPDATE ".$table." SET ".$champ." = '".addslashes($nmodif)."' WHERE id = ".$id[$idxid]."";
				mysql_query($sql) or die ("Erreur SQL > ".$sql."<br />".mysql_error()); 
				$idxid++;
			}		
		}
		echo '<p class="PCentrer">Valeur(s) modifiée(s).<br /><a href="index.php?p=prod&pr='.$table.'">Retour</a></p>';
	}

	//Affichage selon la liste de produits choisi (fromages, pains, etc)
	if (isset($_GET['pr']) && $_GET['pr'] != '')
	{
		$pageprod = $_GET['pr'];
		
		$sql_prod = "SELECT * FROM ".$pageprod;
		$req_prod = mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error());
		echo '&nbsp;&nbsp;- <a href="index.php?p=prodajout&t='.$pageprod.'">Ajouter un produit</a>
			  <form name="Fprod" method="post" action="index.php?p=prod">';
		while($ligne = mysql_fetch_assoc($req_prod))
		{
			switch($pageprod)
			{
				case 'tpain' : {$nom = 'nom_pain'; break;}
				case 'tcharcuterie' : {$nom = 'nom_charcuterie'; break;}
				case 'tfromage' : {$nom = 'nom_fromage'; break;}
				case 'tgarniture' : {$nom = 'nom_garniture'; break;}
				case 'tdivers' : {$nom = 'nom_divers'; break;}
				case 'tboissons' : {$nom = 'nom_boisson'; $des = true; break;}	
				case 'talcools' : {$nom = 'nom'; $size = true; break;}	
				case 'tdesert' : {$nom = 'description'; $des = true; break;}	
			}
			
			echo '<a href="index.php?p=prodsup&t='.$pageprod.'&id='.$ligne['id'].'" onclick="javascript: return confirm(\'Voulez-vous vraiment effacer : '.$ligne[$nom].' ?\')">
				  <img src="Images/sup.png" id="Supimg"/></a> - ';
			if (isset($size))
				echo '<textarea name="'.$nom.'[]">'.$ligne[$nom].'</textarea>';  
			elseif (isset($des))
				echo '<input type="text" value="'.$ligne[$nom].'" name="'.$nom.'[]" /> Prix : <input type="text" name="tprix[]" value="'.$ligne['prix'].'" size="2">';
			else
				echo '<input type="text" value="'.$ligne[$nom].'" name="'.$nom.'[]" />';	  
				 
			echo '  <input type="hidden" name="id[]" value="'.$ligne['id'].'" /><br />';	  
		}
		echo '<br /><input type="submit" name="Btmodif" value="Modifier" /><input type="hidden" name="tb" value="'.$pageprod.'" />
			  </form>';
	}
}
?>
 
Ultima modifica di un moderatore:
E come e/o dove si setta sto caspita di <tb>???
Porca miseria 'sto php mi fa impazzire...
Come faccio a "stampare" la query?

Mi rendo conto della mia nullità...scusa!

Quella variabile è presa da quelle inviate da un form, quindi basta aggiungere un controllo che sia settata o meno con isset() ad esempio

Per stampare la query fai un echo + la variabile della query
PHP:
echo $sql_prod;
 
ciao
evita di mettere tutta quella lunga file di * soprattutto se non scrivi nulla prima del codice, nella pag "cosa c'è di nuovo" si vede solo una sfolza di * e non si capisce a cosa si riferisce il post.
se scrivi solo codice aggiungi almeno il titolo
 
Così per esempio...
PHP:
if (isset($_POST['Btajout']) && $_POST['Btajout'] == 'Ajouter')
	{
		$table = $_POST['tb'];
		$nom = $_POST['nom'];
		$champ = 'nom';
		 echo 
		$sql_prod = "INSERT INTO ".$table." (".$champ.") VALUES ('".addslashes($nom)."')";
		mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error()); 
		echo '<p class="PCentrer">Valeur ajoutée.<br /><a href="index.php?p=prodsalades&pr='.$table.'">Retour</a></p>';
		exit;
	}
Ma non funziona lo stesso...
il valore <tb>, se ho capito bene, dovrebbe essere preso quindi dal form.
Ma perché non lo assegna????
Sempre e comunque grazie!!!
 
Prova cosi

PHP:
if (isset($_POST['Btajout'],$_POST['tb'],$_POST['nom']) && $_POST['Btajout'] == 'Ajouter') 
    { 
        $table = $_POST['tb']; 
        $nom = $_POST['nom']; 
        $champ = 'nom';   
        $sql_prod = "INSERT INTO ".$table." (".$champ.") VALUES ('".mysql_real_escape_string($nom)."')"; 
        mysql_query($sql_prod) or die ("Erreur SQL > ".$sql_prod."<br />".mysql_error());  
        echo '<p class="PCentrer">Valeur ajoutée.<br /><a href="index.php?p=prodsalades&pr='.$table.'">Retour</a></p>'; 
        exit; 
    }
 
Oh mio dio...e da dove arrivano allora 'ste variabili???
...mi spiace rompere le p...ma non so proprio come fare, grazie ancora per la splendida collaborazione!
 
Qui c'è il form per aggiungere i valori:
PHP:
if (isset($_GET['t']) && $_GET['t'] != '')
	{
		$nomprod = substr($_GET['t'], 1);
		if (substr($nomprod, 0, -7) == 'char')
			$nomprod = "charcuterie (salades)";
		if (substr($nomprod, 0, -7) == 'from')
			$nomprod = "fromage (salades)";	
		if (substr($nomprod, 0, -7) == 'garni')
			$nomprod = "garniture (salades)";	
		if (substr($nomprod, 0, -7) == 'divers')
			$nomprod = "divers (salades)";	
												
		echo '<p class="PCentrer"><span class="Titre">Salades produits</span></p>
			  <form name="FProdajout" method="post" action"index.php?p=prodsajout">
			  	Nom '.$nomprod.' : <input type="text" name="nom" />
				<input type="submit" name="Btajout" value="Ajouter" />
				<input type="hidden" name="tb" value="'.$_GET['t'].'"
			  </form>';
	}

Nell'imput type text scrivo il nome del prodotto che voglio aggiungere, dovrebbe essere qui che il valore tb viene assegnato?
 
Qui c'è il form per aggiungere i valori:
PHP:
if (isset($_GET['t']) && $_GET['t'] != '')
	{
		$nomprod = substr($_GET['t'], 1);
		if (substr($nomprod, 0, -7) == 'char')
			$nomprod = "charcuterie (salades)";
		if (substr($nomprod, 0, -7) == 'from')
			$nomprod = "fromage (salades)";	
		if (substr($nomprod, 0, -7) == 'garni')
			$nomprod = "garniture (salades)";	
		if (substr($nomprod, 0, -7) == 'divers')
			$nomprod = "divers (salades)";	
												
		echo '<p class="PCentrer"><span class="Titre">Salades produits</span></p>
			  <form name="FProdajout" method="post" action"index.php?p=prodsajout">
			  	Nom '.$nomprod.' : <input type="text" name="nom" />
				<input type="submit" name="Btajout" value="Ajouter" />
				<input type="hidden" name="tb" value="'.$_GET['t'].'"
			  </form>';
	}

Nell'imput type text scrivo il nome del prodotto che voglio aggiungere, dovrebbe essere qui che il valore tb viene assegnato?

Si, se la variabile $_GET è settata e le condizioni sono ok allora ti sei scordato solamente di chiuderlo
Codice:
<input type="hidden" name="tb" value="'.$_GET['t'].'" />
 
Weeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!!!!!!!!!
Funzionaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!

Grazie mille!!!!!!!!!!
Sei un genio!!!!!!!

Grazie davvero!!!!!
 

Discussioni simili