IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Condition else qui ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut Condition else qui ne fonctionne pas
    Bonjour à tous,

    Mon code fonctionne bien, il s'agit d'un moteur de recherche de fichiers pdf dans un répertoire. Mon problème est que je n'arrive pas à faire fonctionner ma condition "else { echo "Pase de résultat pour cette recherche !" ;}".
    La notification s'affiche tout le temps et je ne sais pas comment l'insérer pour qu'elle soit prise en compte, c'est bizarre.
    Pouvez-vous m'aider ?
    Merci beaucoup

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    	$dirname ="dossier/"; 
    	$dir = opendir($dirname);
     
    	if(isset($_POST['submit']) AND !empty($_POST['mot'])){
    	$mot = trim($_POST['mot']);
     
    	echo ("R&eacute;sultat :");
    	echo "<br /><br/>";
     
    			while ($file = readdir($dir)){ 
    				if (is_file($dirname.$file)){ 
     
    					if (($file != "." ) && ($file != ".." )){
     
    						$format = strrchr($file,".pdf" );
    						if ($format == ".pdf" ){
     
    								if (preg_match("#($mot+?)#s", $file, $data))
    								{
    								echo ("<a target=\"_blank\" href='".$dirname.$file."'>".$file."</a><br>");
    								}
    								else { echo "Pase de résultat pour cette recherche !" ;}
    			}
    				}	
    					}
    						} 															
     
    	closedir ($dir);
    	}						
     
    ?>

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    juin 2008
    Messages
    2 074
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : juin 2008
    Messages : 2 074
    Points : 3 532
    Points
    3 532
    Billets dans le blog
    8
    Par défaut
    Quand je mets une valeur en dur à tes variables post, ça marche pourtant. Le problème vient peut être de ton formulaire.
    Ceci dit, j'ai mis en commentaire ce qui est mis dans la doc à propos de preg_match, et cela t'indique qu'il faut mettre "===1" si tu veux être sûr que ça matche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    /*preg_match() retourne 1 si le pattern fourni correspond, 0 s'il ne correspond pas, ou FALSE si une erreur survient.
    
    Avertissement
    Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE. Veuillez lire la section sur les booléens pour plus d'informations. Utilisez l'opérateur === pour tester la valeur de retour exacte de cette fonction.*/
    $dirname ="dossier/"; 
    $dir = opendir($dirname);
    $_POST['submit']='ok';
    $_POST['mot']='REUNI';
    if(isset($_POST['submit']) AND !empty($_POST['mot'])){
    	$mot = trim($_POST['mot']);
    	echo ("Résultat :");
    	echo "<br /><br/>";
     
    	while ($file = readdir($dir)){ 
    		if (is_file($dirname.$file)){ 
    			if (($file != "." ) && ($file != ".." )){
    				$format = strrchr($file,".pdf" );
    				if ($format == ".pdf" ){
    					if (preg_match("#($mot+?)#s", $file, $data)===1){
    						echo ("<a target=\"_blank\" href='".$dirname.$file."'>".$file."</a><br>");
    					}
    					else {
    						echo "Pas de résultat pour cette recherche !" ;
    					}
    				}
    			}	
    		}
    	} 															
    	closedir ($dir);
    }						
    ?>
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 208
    Points : 43 400
    Points
    43 400
    Par défaut
    Il faut aller au bout de ta démarche : que vaut $mot et que vaut $file quand ça match ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Bonjour et merci pour vos réponses.

    Lorsque je teste le code que tu m'as envoyé Dendrite, j'ai toujours "Pas de résultat pour cette recherche ! qui s'affiche qu'il trouve ou non.
    Voici mon code pour le formulaire :


    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" action="recherche.php">
    <input type="text" name="mot">
    <button class="bouton" id="submit" name="submit" type="submit" value="submit">Recherche</button>     
    </form>

    et pour sabotage, $mot vaut le nom du pdf que l'on recherche et $file teste si il s'agit d'un fichier ou non.
    Par exemple : $mot : 123 et $file : 123456.pdf pour une recherche dans l'input avec 123 pour trouver le fichier correspondant.

    Merci

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 208
    Points : 43 400
    Points
    43 400
    Par défaut
    et pour sabotage, $mot vaut le nom du pdf que l'on recherche et $file teste si il s'agit d'un fichier ou non.
    oui ça merci j'avais compris.
    ce que tu dois regarder c'est les valeurs quand tu as un résultat positif alors que tu devrais ne pas en avoir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Les variables sont vides lorsque j'ai un résultat négatif et $mot : 123 et $file : 123456.pdf pour une recherche dans l'input avec 123 quand c'est positif. C'est ça que tu veux savoir ?

  7. #7
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2011
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2011
    Messages : 507
    Points : 973
    Points
    973
    Par défaut
    Salut,
    Ce que je propose est de créer une variable avant ton while que tu initialises à 0 et à chaque match tu incrémentes ta variable.
    Ensuite tu testes si ta variable(en dehors du while bien sûr) est égale à 0 alors là tu n'as vraiment pas de résultat. Tu peux dans ce cas retirer ton else.
    Appliques preg_quote (http://php.net/manual/fr/function.preg-quote.php) sur $mot sinon si mot contient un caractère spécial, tu auras un beau warning
    Le bienfait n'est jamais perdu

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Merci Willy_k pour ton aide
    J'ai essayé de faire quelque chose mais je ne dois pas avoir bien suivi, j'ai toujours mon problème :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    	$dirname ="dossier/"; 
    	$dir = opendir($dirname);
     
    	if(isset($_POST['submit']) AND !empty($_POST['mot'])){
    	$mot = trim($_POST['mot']);
     
     	$new = '0';
    	while ($file = readdir($dir)){ 
    		if (is_file($dirname.$file)){ 
    			if (($file != "." ) && ($file != ".." )){
    				$format = strrchr($file,".pdf" );
    				if ($format == ".pdf" ){
     
    				if(preg_match("#($mot+?)#s", $file, $data)){ 
        			$data = trim($new[1]); 
    				$data ++;
        			echo ("<a target=\"_blank\" href='".$dirname.$file."'>".$file."</a><br>");
        				} 
     
    				}
    			}	
    		}
    	} 
    	if 	($data = '0');
    	echo 'Pas de résultat pour cette recherche !';
     
    	closedir ($dir);
    }

  9. #9
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2011
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2011
    Messages : 507
    Points : 973
    Points
    973
    Par défaut
    Plutôt un truc comme ça
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
     
    $dirname ="dossier/"; 
    $dir = opendir($dirname);
     
     
    if(isset($_POST['submit']) AND !empty($_POST['mot'])) {
    	$mot = trim($_POST['mot']);
    	$mot = preg_quote($mot);
    	echo ("R&eacute;sultat :");
    	echo "<br /><br/>";
    	$total_resultat = 0;
     
    	while ($file = readdir($dir)){ 
    		if (is_file($dirname.$file)){ 
     			if (($file != "." ) && ($file != ".." )){
     				$format = strrchr($file,'.pdf');
    				if ($format == '.pdf'){
     
     					if (preg_match("#($mot+?)#s", $file, $data)) {
    						echo ("<a target=\"_blank\" href='".$dirname.$file."'>".$file."</a><br>");
    						$total_resultat += 1;
    					}
    				}
    			}	
    		}
    	}	 															
     
    	closedir ($dir);
     
    	if (!$total_resultat) {
    		echo 'Pas de resultat trouvé';
    	}
    } else {
    	echo 'Veuillez remplir le champ';
    }
    Le bienfait n'est jamais perdu

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Merci Willy_k pour ton aide, ça fonctionne parfaitement !
    Super !
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. if else qui ne fonctionne pas
    Par laurent33500 dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2015, 12h44
  2. [PrestaShop] Condition basique qui ne fonctionne pas..
    Par Guigui_Mou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 05/06/2014, 18h44
  3. Réponses: 2
    Dernier message: 19/09/2008, 10h55
  4. condition if qui ne fonctionne pas avec tous les elements
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 04/09/2008, 13h39
  5. condition (if/else) qui ne fonctionne pas
    Par oceane751 dans le forum Langage
    Réponses: 8
    Dernier message: 25/07/2007, 00h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo