Comment faire un switch case?

Enshin Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour, je suis un débutant en programmation, vraiment très débutant et je suis confronté à un problème. Voila j'ai créé un programme PHP qui est censé lire un fichier CSV. De ce côté tout se passe bien mais ensuite en fonction de ce que je lis je dois faire des instructions. Par exemple voici quelques lignes parmi les nombreuses de mon fichier :

"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",,"DQU194","Blanc poly","45 x 51 + 2 x 5 cm","Soldes","€ 0,18","1","stuk","500","1"
"Sacs PP Tissés","Big Shopper PP Tissé","DQP006","tissé PP","45 + 18 x 48 cm","Noir","€ 1,65","1","doos","100","1"
"Sacs PP Tissés","Big Shopper PP Tissé","DQP001","tissé PP","45 + 18 x 48 cm","Blanc","€ 1,65","1","doos","100","1"

sur la première colonne il y a des noms de catégories, j'aimerai faire un switch case sur ces noms par exemple quand le nom Sacs en Papier apparaît je souhaiterai faire des instructions une seule fois pour toutes les lignes qui ont ce nom. Seulement j'ai essayé de m'y mettre mais rien ne marche..... il m'affiche plus de 90 fois le même nom :S

Si quelqu'un peut m'aider je laisse mon programme pour qu'il y voit plus clair :

<?php
$row = 1;
if (($handle = fopen("FF-Webshop-F.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        $row++;
        for ($c=0; $c < $num; $c++) {
			$ligne = fgets($handle, 1000);
			$liste = explode(",", $ligne);
			
			$liste += array_pad(array(), 11, null);
			ksort($liste);
			/*var_dump($liste[0]);*/
			$liste[0] = str_replace('"', '', $liste[0]);
			switch($liste[0]){
				
				case "Sacs en Papier":
				echo "pouet <br />\n";
				break;
				
				case "Sacs en Plastique":
				echo "pouet2";
				break;
				
			}
        }
    }
    fclose($handle);
}
?>



A voir également:

3 réponses

RAbso Messages postés 32 Statut Membre 10
 
Salut,
Tu t'es un peu compliqué la tâche

$row = 1;
if (($handle = fopen("FF-Webshop-F.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

switch($data[0]){

case "Sacs en Papier":
echo "pouet<br>";
break;

case "Sacs en Plastique":
echo "pouet2<br>";
break;

default:
echo "autre sac<br>";
}
}
fclose($handle);
0
Arkeus
 
Bonjour,


Tu ne peux pas traiter le fichier d'un coup, tu vas devoir le traiter ligne par ligne. Du coup je suis vraiment étonné d'avoir un écho ...
Pourrais-tu en dire plus sur ton besoin?
Si tu ne veux enregistrer tous les codes articles dans un tableau, à la place de
echo "pouet <br />\n";
tu pourrais mettre
$codeArticle[$i++] = $liste[3];

Avant de rentrer dans le for, tu auras bien sur initialisé tes valeurs du type
$i = 0;
Et à la fin de ton for,si tu veux tous les afficher var_dump($codeArticle);

En espérant t'avoir aidé, Archeus.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
cette partie me parait anormale:
$liste = explode(",", $ligne);//la tu as un array
//+= c'est pour rajouter un nombre ?
$liste += array_pad(array(), 11, null);


essaies avec:
$liste = explode(",", $ligne); /
			
array_pad($liste, 11, null);
0