par
Merevihn » 20 mars 2013, 11:07
Bonjour, j'ai un problème sur ma condition, elle n'effectue pas ce que je veux. Mon programme arrive a lire mon fichier CSV dont voici un petit exemple :
"Sacs en Papier","Sac Papier - poignées plates","DPL002","80 grs Blanc","22 + 10 x 31 cm","blanc","€ 0,19","1","doos","250","1"
"Sacs en Papier","Sac Papier - poignées plates","DPL001","80 grs brun","22 + 10 x 31 cm","brun","€ 0,19","1","doos","250","1"
"Sacs en Plastique",,"DQU007","Poly","30 x 36 cm","Semi Transparant","€ 0,14","1","doos","500","1"
"Sacs en Plastique",,"DQU002","Poly","37 x 44 + 2 x 4 cm","Blanc","€ 0,06","1","doos","500","1"
"Sacs PP Tissés","Big Shopper PP Tissé","DQP001","tissé PP","45 + 18 x 48 cm","Blanc","€ 1,65","1","doos","100","1"
"Sacs PP Tissés",,"DQP002","tissé PP","30 + 13 x 35 cm","Blanc","€ 1,34","1","doos","100","1"
en faisant un var_dump il affiche bien mes données. Comme vous voyez sur cet exemple il y a deux fois "Sacs en Papier", j'ai réussi à faire un if qui dit que si il lit ce nom de colonne il insert une fois la donnée correspondante dans la ma base de données. Mais que je fais commence à faire mon elseif en disant que maintenant cela correspond à "Sacs en Plastique" il ne rentre pas dedans et n'effectue pas la requête. Quelqu'un sait-il pourquoi cela ne marche pas?
Voici mon code php :
<?php
$bdd="prestashop";
$host="localhost";
$user="root";
$pass="";
@mysql_connect($host, $user, $pass) or die ("Impossible de se connecter à la base de données");
@mysql_select_db($bdd);
$fichier = "./fichier.csv";
$fichier = $_FILES['userfile']['tmp_name'];
if (file_exists($fichier)) {
$fp = fopen($fichier, "r");
}
else {
echo "Fichier introuvable !<br />Importation stoppée.";
exit();
}
$existe = false;
while (!feof($fp)){
$ligne = fgets($fp,4096);
$liste = explode( ",",$ligne);
$liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
$liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
$liste[2] = ( isset($liste[2]) ) ? $liste[2] : Null;
$liste[3] = ( isset($liste[3]) ) ? $liste[3] : Null;
$liste[4] = ( isset($liste[4]) ) ? $liste[4] : Null;
$liste[5] = ( isset($liste[5]) ) ? $liste[5] : Null;
$liste[6] = ( isset($liste[6]) ) ? $liste[6] : Null;
$liste[7] = ( isset($liste[7]) ) ? $liste[7] : Null;
$liste[8] = ( isset($liste[8]) ) ? $liste[8] : Null;
$liste[9] = ( isset($liste[9]) ) ? $liste[9] : Null;
$liste[10] = ( isset($liste[10]) ) ? $liste[10] : Null;
$champ1=$liste[0];
$champ2=$liste[1];
$champ3=$liste[2];
$champ4=$liste[3];
$champ5=$liste[4];
$champ6=$liste[5];
$champ7=$liste[6];
$champ8=$liste[7];
$champ9=$liste[8];
$champ10=$liste[9];
$champ11=$liste[10];
$champ1 = str_replace('"', '', $champ1);
if($champ1 == 'Sacs en Papier' && $existe == false)
{
$req = mysql_query("insert into ps_category(id_category, id_parent) values('', 2)");
$existe = true;
}
elseif($champ1 == 'Sacs en Plastique' && $existe == false)
{
$req = mysql_query("insert into ps_category(id_category, id_parent) values(last_insert_id(), 2)");
$existe = true;
}
}
/*echo"pouet";*/
fclose($fp);
?>
Bonjour, j'ai un problème sur ma condition, elle n'effectue pas ce que je veux. Mon programme arrive a lire mon fichier CSV dont voici un petit exemple :
"Sacs en Papier","Sac Papier - poignées plates","DPL002","80 grs Blanc","22 + 10 x 31 cm","blanc","€ 0,19","1","doos","250","1"
"Sacs en Papier","Sac Papier - poignées plates","DPL001","80 grs brun","22 + 10 x 31 cm","brun","€ 0,19","1","doos","250","1"
"Sacs en Plastique",,"DQU007","Poly","30 x 36 cm","Semi Transparant","€ 0,14","1","doos","500","1"
"Sacs en Plastique",,"DQU002","Poly","37 x 44 + 2 x 4 cm","Blanc","€ 0,06","1","doos","500","1"
"Sacs PP Tissés","Big Shopper PP Tissé","DQP001","tissé PP","45 + 18 x 48 cm","Blanc","€ 1,65","1","doos","100","1"
"Sacs PP Tissés",,"DQP002","tissé PP","30 + 13 x 35 cm","Blanc","€ 1,34","1","doos","100","1"
en faisant un var_dump il affiche bien mes données. Comme vous voyez sur cet exemple il y a deux fois "Sacs en Papier", j'ai réussi à faire un if qui dit que si il lit ce nom de colonne il insert une fois la donnée correspondante dans la ma base de données. Mais que je fais commence à faire mon elseif en disant que maintenant cela correspond à "Sacs en Plastique" il ne rentre pas dedans et n'effectue pas la requête. Quelqu'un sait-il pourquoi cela ne marche pas?
Voici mon code php :
[php]<?php
$bdd="prestashop";
$host="localhost";
$user="root";
$pass="";
@mysql_connect($host, $user, $pass) or die ("Impossible de se connecter à la base de données");
@mysql_select_db($bdd);
$fichier = "./fichier.csv";
$fichier = $_FILES['userfile']['tmp_name'];
if (file_exists($fichier)) {
$fp = fopen($fichier, "r");
}
else {
echo "Fichier introuvable !<br />Importation stoppée.";
exit();
}
$existe = false;
while (!feof($fp)){
$ligne = fgets($fp,4096);
$liste = explode( ",",$ligne);
$liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
$liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
$liste[2] = ( isset($liste[2]) ) ? $liste[2] : Null;
$liste[3] = ( isset($liste[3]) ) ? $liste[3] : Null;
$liste[4] = ( isset($liste[4]) ) ? $liste[4] : Null;
$liste[5] = ( isset($liste[5]) ) ? $liste[5] : Null;
$liste[6] = ( isset($liste[6]) ) ? $liste[6] : Null;
$liste[7] = ( isset($liste[7]) ) ? $liste[7] : Null;
$liste[8] = ( isset($liste[8]) ) ? $liste[8] : Null;
$liste[9] = ( isset($liste[9]) ) ? $liste[9] : Null;
$liste[10] = ( isset($liste[10]) ) ? $liste[10] : Null;
$champ1=$liste[0];
$champ2=$liste[1];
$champ3=$liste[2];
$champ4=$liste[3];
$champ5=$liste[4];
$champ6=$liste[5];
$champ7=$liste[6];
$champ8=$liste[7];
$champ9=$liste[8];
$champ10=$liste[9];
$champ11=$liste[10];
$champ1 = str_replace('"', '', $champ1);
if($champ1 == 'Sacs en Papier' && $existe == false)
{
$req = mysql_query("insert into ps_category(id_category, id_parent) values('', 2)");
$existe = true;
}
elseif($champ1 == 'Sacs en Plastique' && $existe == false)
{
$req = mysql_query("insert into ps_category(id_category, id_parent) values(last_insert_id(), 2)");
$existe = true;
}
}
/*echo"pouet";*/
fclose($fp);
?>[/php]