Problème array_combine

Fermé
merevinh Messages postés 30 Date d'inscription mardi 5 juin 2012 Statut Membre Dernière intervention 6 octobre 2014 - 11 avril 2013 à 17:09
Azraka Messages postés 252 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 5 juin 2014 - 12 avril 2013 à 14:30
Bonjour tout le monde je suis à la cherche d'une solution à mon problème et j'espère que vous pourrez m'aider =)

Voila je possède un fichier CSV j'ai extrait quelques lignes pour effectuer des tests. Je suis presque à la fin de mon projet seulement ce problème me bloque. En effet dans mon programme j'ai choisi de mettre en morceau les différentes parties de mon fichier et de les stocker dans des arrays. Un de mes tableaux contient des références et des prix je les ai combinés dans un tableau et j'ai réussi à les insérer dans ma base de données (je précise que l'insertion de ces données à créé de nouveaux produits automatiquement car ils possèdent un id_product qui s'auto_incrémente). Jusque là il n'y a pas de problème, c'est plus quand j'ai voulu insérer les noms des produits ainsi que leur descriptions que je n'arrive pas alors que le principe est le même que ce qui a été dit auparavant. Je détaille plus clairement mon problème, dans mon fichier CSV la deuxième colonne de mon fichier concerne les noms de produits :

$produit[] = "";
array_push($produit, $data[1]);


Voici mon tableau créé, il me retourne ceci:

0 => string 'Product' (length=7)
1 => string '' (length=0)
2 => string 'Sac Papier - poignées plates' (length=28)
3 => string '' (length=0)
4 => string 'Sac Papier - poignées plates' (length=28)
5 => string '' (length=0)
6 => string 'Sac Papier - poignées plates' (length=28)
7 => string '' (length=0)
8 => string '' (length=0)
9 => string '' (length=0)
10 => string '' (length=0)
11 => string '' (length=0)
12 => string 'Big Shopper PP Tissé' (length=20)
13 => string '' (length=0)
14 => string 'Big Shopper PP Tissé' (length=20)


certaines lignes ne contiennent pas de nom voila pourquoi de la ligne 7 à 11 il y a '', suite à cela j'effectue un array_slice car les deux premières lignes ne m'intéressent pas.

Le deuxième tableau me retourne ceci, j'applique les mêmes méthodes citées avant :

0 => string 'Artikel' (length=7)
1 => string '' (length=0)
2 => string '80 grs Blanc' (length=12)
3 => string '' (length=0)
4 => string '80 grs brun' (length=11)
5 => string '' (length=0)
6 => string '90 grs Blanc' (length=12)
7 => string '' (length=0)
8 => string 'Poly' (length=4)
9 => string '' (length=0)
10 => string 'Blanc poly' (length=10)
11 => string '' (length=0)
12 => string 'tissé PP' (length=8)
13 => string '' (length=0)
14 => string 'tissé PP' (length=8)

J'ai donc mes deux tableaux je décide donc de les faire combiner comme ce que j'ai fait avant et voici ce que j'obtiens :

'Sac Papier - poignées plates' => string '90 grs Blanc' (length=12)
'Big Shopper PP Tissé' => string 'tissé PP' (length=8)

Il m'a oublié la plupart des lignes et ne m'en retourne que deux, pourquoi? alors que j'ai déjà créé un array_combine de cette façon et que je m'en suis servi? Je laisse le code de la création de mon tableau:

$output4 = array_slice($produit , 2);
	var_dump($output4);
	
$output5 = array_slice($nom, 2);
	var_dump($output5);
foreach($g = array_combine($output4, $output5) as $output4 => $output5){
		$newg = array_slice($g , 1);
	}
	var_dump($newg);




Enfin j'ai une dernière question j'ai un autre fichier celui-ci contient les fonctions qui vont effectuer des requêtes sur ma base de données, comment je peux dire que je récupère les derniers id des derniers produits créés grâce au premier tableau combiné qui les créés, car grâce à ces id je pourrais insérer les données les données du deuxième tableau combiné qui ne marche pas pour l'instant :s voici mon code pour la requête sql :

function modifier_produit_prestashop($output4, $output5){
		$sql = mysql_query("select last_insert_id( id_product ) from ps_product limit 7");
		
		/*$sql2 = mysql_query("update ps_product_lang set id_lang = 5, description = '".$output5."', name = '".$output4."' where id_product = '$resultat'");
		var_dump($sql2);*/
	}

La première requête récupère les derniers id insérés depuis la 7ème ligne, et la deuxième requête permet de faire un update sur la table concernée en fonction des ids récupérés.

Je prie pour que quelqu'un me vienne en aide la fin de mon stage arrive bientôt et il faut que je puisse rendre ce projet terminé et être bloqué sur ce problème m'ennui je peux pas avancer :s si quelqu'un sait pourquoi j'accepter avec plaisir ces explications voila je vous remercie et vous souhaite une bonne fin de soirée

1 réponse

Azraka Messages postés 252 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 5 juin 2014 13
12 avril 2013 à 14:30
Bonjour,

Dans un tableau php les clés doivent être uniques !
Tes deux lignes sont les deux noms de produits différents qui se trouvent dans ton premier tableau.
0