Comment faire un switch case?

Fermé
Enshin Messages postés 1 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 26 mars 2013 - 26 mars 2013 à 10:26
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 mars 2013 à 11:04
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 28 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 26 mars 2013 10
26 mars 2013 à 13:05
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
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 mars 2013 à 11:04
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