probleme avec array et mysql

Mammouth du PHP | 702 Messages

06 avr. 2012, 15:16

Bonjour à tous, j'essaie d'enregistrer les données issue d'un array dans mysql mais en vain j'ai une quantité non négligeable de message d'erreur.
foreach (  (array) $_POST['contact'] as $contact => $contact )
	{
    $query = "INSERT INTO gestionnaire_client VALUES (code_client, civilite, nom, prenom, qualite, tel, fax, gsm, e_mail, login, pass_md5),";  
    $query .= "contact[code_client], $contact[$civilite], $contact[$nom], $contact[$prenom], $contact[$qualite], $contact[$tel], $contact[$fax], $contact[$gsm], $contact[$e_mail], $contact[$login], $contact[$pass_md5], ";
Je ne sais pas si c'est la bonne structure.

Par avance merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 avr. 2012, 16:08

Salut

Et ils disent quoi les messages d'erreurs ? Parce qu'ils te donnent ta réponse.
La globalement tes variables ne sont pas interprétées (vu le merdier php ne peux savoir ce que tu veux).
Utilise la concaténation pour résoudre tes soucis.
http://www.lephpfacile.com/cours/5-conc ... ux-chaines


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 702 Messages

06 avr. 2012, 17:00

il me disent undefined toutes les var...

Mammouth du PHP | 702 Messages

06 avr. 2012, 17:02

j'ai essayé avec cela mais ça fonctionne toujours pas
  $query .= "".$contact[code_client].$contact[$civilite].

ViPHP
xTG
ViPHP | 7331 Messages

06 avr. 2012, 18:13

as $contact => $contact )
C'est pas malin ça... Commences par changer le nom d'une des variables car ce n'est pas du tout la même information.

Mammouth du PHP | 2278 Messages

06 avr. 2012, 18:16

Bonjour à tous, j'essaie d'enregistrer les données issue d'un array dans mysql mais en vain j'ai une quantité non négligeable de message d'erreur.
foreach (  (array) $_POST['contact'] as $contact => $contact )
	{
    $query = "INSERT INTO gestionnaire_client VALUES (code_client, civilite, nom, prenom, qualite, tel, fax, gsm, e_mail, login, pass_md5),";  
    $query .= "contact[code_client], $contact[$civilite], $contact[$nom], $contact[$prenom], $contact[$qualite], $contact[$tel], $contact[$fax], $contact[$gsm], $contact[$e_mail], $contact[$login], $contact[$pass_md5], ";
Je ne sais pas si c'est la bonne structure.

Par avance merci.
On suppose que tu connais les noms des colonnes de ta table gestionnaire_clients.

1) vérifier que, avant le foreach, $_POST['contact'] contient ce que l'on croit print_r($_POST['contact']);.
Si ce n'est pas le cas, inutile d'aller plus loin.
2) Si $_POST['contact'] est correct, on allègerait par:
$t_contact = $_POST['contact']; avant le foreach;
3) Le foreach est étrangement fichu:
foreach ($t_contact as $contact)
{
extract ($contact);
et on a une série de variables qu'on peut mettre dans le quary SANS concaténation
mais la syntaxe de INSERT telle que c'est écrit, est fausse. cf http://dev.mysql.com/doc/refman/5.0/fr/insert.html
}
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 702 Messages

09 avr. 2012, 09:33

merci pour votre aide, en suivant vos conseils j'ai donc fais cela
 
$t_contact = $_POST['contact'];
foreach ($t_contact as $contact)
	{
   extract ($contact);
   $sql9 = 'INSERT INTO  gestionnaire_client SET 
code_client					= "'.mysql_real_escape_string($_POST['code_client']).'", 
nom			 				= "'.mysql_real_escape_string($_POST['nom']).'", 
prenom						= "'.mysql_real_escape_string($_POST['prenom']).'", 
qualite						= "'.mysql_real_escape_string($_POST['qualite']).'" , 
tel							= "'.mysql_real_escape_string($_POST['tel']).'" , 
fax							= "'.mysql_real_escape_string($_POST['fax']).'" , 
gsm			 				= "'.mysql_real_escape_string($_POST['gsm']).'" , 
e_mail		  				= "'.mysql_real_escape_string($_POST['e_mail']).'" , 
login		  				= "'.mysql_real_escape_string($_POST['login']).'" , 
pass_md5	  				= "'.mysql_real_escape_string($_POST['pass_md5']).'" 
' ;                  
   
}

mysql_query($sql9) or die(__LINE__.mysql_error().$sql9);
mais ça ne fonctionne toujours pas.

Mammouth du PHP | 702 Messages

09 avr. 2012, 11:14

Up

Mammouth du PHP | 702 Messages

09 avr. 2012, 14:36

ce que j('aurais besoin c'est de verifier le champs nommé "qualite". mais comme c'est un array en fait j'ai contact[1][qualite], contact[2][qualite], contact[3][qualite] et du coup je sais pas comment le verifier car la variable $_POST['qualite'][1] n'existe pas il me dit.

Mammouth du PHP | 702 Messages

09 avr. 2012, 15:26

j'ai rajouté cela mais il insére des lignes vides.
if (array_key_exists(1, $array)  OR array_key_exists(2, $array) OR array_key_exists(3, $array) OR array_key_exists(4, $array) OR array_key_exists(5, $array))  {
foreach ($t_contact as $contact)
	{
		var_dump($contact);
voici les erreurs

Code : Tout sélectionner

( ! ) Notice: Undefined variable: array in C:\wamp\www\NEOGETCASH\ADMIN\sauve-client.php on line 78 Call Stack # Time Memory Function Location 1 0.0188 909368 {main}( ) ..\sauve-client.php:0 ( ! ) Warning: array_key_exists() expects parameter 2 to be array, null given in C:\wamp\www\NEOGETCASH\ADMIN\sauve-client.php on line 78 Call Stack # Time Memory Function Location 1 0.0188 909368 {main}( ) ..\sauve-client.php:0 2 0.8591 913760 array_key_exists ( ) ..\sauve-client.php:78

Mammouth du PHP | 702 Messages

09 avr. 2012, 16:23

j'ai essayé comme cela, sans succès...
$t_contact = $_POST['contact'];
if (array_key_exists('qualite', $t_contact)) {
foreach ($t_contact as $contact)
	{
		var_dump($contact);