Probleme transition if => switch

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme transition if => switch

par Arthur26 » 18 mai 2006, 15:00

Oki, merci du tips

Ca marche, j'arrive a lister 97% des fichiers de mon disque dur, maintenant il me reste la partie réseau. Scanner le contenu d'un serveur de donnée pour prevenir les risques de saturation...

Prob Résolu, yeah :lol:

par ouckileou » 18 mai 2006, 14:32

C'est à toi de lister les extensions que tu veux traiter en fait
Pour résumer :
switch ($ext) {
   case '.doc' :
   case '.xls' : 
   case '.ppt' : // si l'extension est .doc ou .xls ou .ppt
      echo 'C\est un fichier Microsoft Office'; break;
   case '.pdf' : // si l'extension est .pdf
      echo 'C'\est un fichier Adobe PDF'; break;
   default : // pour toutes les autres extensions qu'on pourrait rencontrer
      echo 'L\'extension est inconnue';
}

par Arthur26 » 18 mai 2006, 14:26

Lol pour les guillemets,

j'avais (très) mal compris un post...

Ca a l'air de marché ac ta manière donc je laisse comme ca, mais je vais quand même verifié s'il ne m'oublie aucun fichier.

Merki

par ouckileou » 18 mai 2006, 14:18

Je ne comprends pas, pourquoi est-ce que tu veux enlever les guillemets ?

Et puis, tu peux garder plusieurs possibilités pour un même cas :
Switch ($ext){
                case '.doc' :
                case '.xls':
                case .pps:
                case '.ppt':
                    $size += filesize($file);
                    $j++;
                    break;
                case '.pdf' : echo 'ceci est un fichier PDF'; break;
                default : echo 'extension inconnue';
}

par Arthur26 » 18 mai 2006, 14:12

Bien sur il fallait lire '.xls' et '.pps' et non .xls et .pps

Désolé

par Arthur26 » 18 mai 2006, 14:09

Comem indiqué j'ai explosé les || donc maintenant une seule possibilité par case est possible.
Par contre la variable $ext est de type .ext ou ext peut etre dll, doc, ini, pdf etc...
Deuxièmement si j'enleve les '.doc', que je le transforme en .doc seulement php m'engueule avec un parse error >.<'

Voici mon code modifié, et apparament ca marche mais si je revien a la structure en if elseif, que cela m'apportera-t-il de mieux ? de moins bien ?
        elseif(is_file($file)){
			$ext = substr($file,strpos($file,'.'));
			$datecrea = Date("d-m-Y",filectime($file));
			$jourcrea = substr($datecrea,0,2);
			$moiscrea = substr($datecrea,3,2);
			$anneecrea = substr($datecrea,6,4);
			Switch ($ext){
				case '.doc' :
					$size += filesize($file);
					$j++;
					break;

				case .xls:
					$size += filesize($file);
					$j++;
					break;

				case .pps:
					$size += filesize($file);
					$j++;
					break;

				case '.ppt':
					$size += filesize($file);
					$j++;
					break;

Merki

par Ryle » 18 mai 2006, 12:22

Des fois que ce soit tes '||' qui gênent
Parce que t'as un doute pour que ça ne soit pas ça toi ? ;)

Bon il manque peut être également les acolades du switch, mais les "ou" en plein milieu d'un case.... :)

par ouckileou » 18 mai 2006, 12:13

Regarde dans la doc l'exemple 16--26 pour avoir plusieurs conditions pour une instruction :
http://fr.php.net/switch

Des fois que c esoit tes '||' qui gênent

Probleme transition if => switch

par Arthur26 » 18 mai 2006, 12:05

Bonjour,

Pour des soucis de rapidité et pour que ce soit plus "propre" j'ai remplacé dans mon code 19 instruction if/elseif/elseif/elseif par
switch($ext)
    case '.doc' || '.xls' || '.pps':
           traitement;
           break;
    case '.pdf':
           traitement;
           break;
    case '.dll':
           traitement;
           break;

Avec la structure if/elseif cela marché tres bien mais desque je suis passé au switch et au case il ne m'affiche que les document en .doc, .xls ou .pps
On dirait qu'apres avoir trouvé un 'office' il execute le 'case' correspondant et s'il rencontre un autre format de fichier il ne fait rien...

J'ai bien verifié que mon ext soit '.qqchose'
elseif(is_file($file)){
	$ext = substr($file,strpos($file,'.'));
Je ne voit pas pourquoi il ne prendrai que la premiere instruction...
Merci