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 :

Problème switch dans une boucle (default)


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Problème switch dans une boucle (default)
    Bonjour à tous,

    J'ai un petit soucis :

    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
    33
    34
    35
    36
     
    <?php
     
    // tout est OK 
     
    if (!empty($_POST['Envoyer'])) {
     
    $text = $_POST['text'];
     
    $comptetext2 = substr("$text", 0, 3);
     
    echo "<br><br>";
     
     
    $robot = mysql_query("SELECT * FROM robot"); // Ici je prend les infos de ma bdd
    while ($donnees = mysql_fetch_array($robot) )
    {
     
    $mot = $donnees['mot'];
    $reponse = $donnees['reponse'];
    $url = $donnees['url'];
    $redirect = $donnees['redirect'];
     
    switch ($text) { // la je créer mon switch dans ma boucle
     
    	case $mot:
    	echo "<b>Robot dit :</b> $reponse";
    	if ($redirect == "1") {
    	echo '<script type="text/javascript">window.location = "'.$url.'"</script>';
    	 }
      default: // Ici est mon problème
      echo "<b>Robot dit :</b> Je n'ai pas compris votre demande, veuillez reformuler votre phrase pour que je puisse vous aidez, s'il vous plait<br><br>";     
      }
     }
    }
    ?>
    En gros il me boucle le default: alors que je ne veux pas , mais si je ferme ma boucle avant le defaut j'ai une erreur PHP , c'est surement tout bête mais je ne trouve pas la réponse.

    Merci beaucoup d'avance . (Si vous avez une méthode beaucoup plus simple et rapide , j'apprend vite)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour, il faut sortir du switch avec break; :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    switch ($text) { // la je créer mon switch dans ma boucle
     
       case $mot:
    	echo "<b>Robot dit :</b> $reponse";
    	if ($redirect == "1") {
    	   echo '<script type="text/javascript">window.location = "'.$url.'"</script>';
    	}
       break;
       default: // Ici est mon problème
    	echo "<b>Robot dit :</b> Je n'ai pas compris votre demande, veuillez reformuler votre phrase pour que je puisse vous aidez, s'il vous plait<br><br>";     
    }

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut,

    ... Merci beaucoup , je savais bien que c'était tout bête , en plus je connaissais la syntaxe hihihi

    Merci beaucoup

    PS: Oups , je me suis avancé un peut vite , cela persiste , une idée ?

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    A vérifier mais il me semble de la syntaxe de case accepte un littéral (une valeur) et non une référence au niveau de la grammaire.

    Utilise If pour faire des comparaisons avec des variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ($text == $mot) {
            echo "<b>Robot dit :</b> $reponse";
    	if ($redirect == "1") {
    	   echo '<script type="text/javascript">window.location = "'.$url.'"</script>';
    	}
    }
    else {
    	echo "<b>Robot dit :</b> Je n'ai pas compris votre demande, veuillez reformuler votre phrase pour que je puisse vous aidez, s'il vous plait<br>
    }

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    D'acc , donc si j'ai bien compris à la place de mon default j'utilise un if ?

    Si c'est sa , je suis bien embêter aussi car je ne sais par ou passer , je m'explique :

    en gros je devrais mettre un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($text != $mot) { echo "<b>Robot dit :</b> Je n'ai pas compris votre demande, veuillez reformuler votre phrase pour que je puisse vous aidez, s'il vous plait<br><br>"; }
    Mais à la place de $mot je ne sais quoi mettre , c'est pour sa que je persistais avec mon default , car $mot = "bonjouraurevoirmerciderien" etc.. tous ce que contient mon champ "mot" dans ma table "robot" , comment puis-je dire : si $text != $mot OR $mot etc ... ? je suis pas très cler

    Merci


    PS : j'ai déjà essayé un else , rien à faire

  6. #6
    Invité
    Invité(e)
    Par défaut
    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
    <?php
    if (!empty($_POST['Envoyer'])) {
     
    	$text = $_POST['text'];
    	$comptetext2 = substr("$text", 0, 3);
    	echo "<br><br>";
     
    	$mot_match = -1;
    	$robot = mysql_query("SELECT * FROM robot"); // Ici je prend les infos de ma bdd
    	while ($donnees = mysql_fetch_array($robot) && $mot_match==-1) // on sort de la boucle dès qu'un mot est trouvé (si $mot_match = 1;)
    	{
     
    	  $mot = $donnees['mot'];
    	  $reponse = $donnees['reponse'];
    	  $url = $donnees['url'];
    	  $redirect = $donnees['redirect'];
     
    	  if ($text==$mot) { // mot trouvé
    		$mot_match = 1; // -> on peut sortir de la boucle
    		echo "<b>Robot dit :</b> $reponse";
    		if ($redirect == "1") {
    			echo '<script type="text/javascript">window.location = "'.$url.'"</script>';
    		}
    	  } // fin if mot trouvé
    	} // fin while
    	if ($mot_match==-1) { // sinon
    	  echo "<b>Robot dit :</b> Je n'ai pas compris votre demande, veuillez reformuler votre phrase pour que je puisse vous aidez, s'il vous plait<br><br>";     
    	}
    }
    ?>
    Ici , on sort de la boucle dès qu'une réponse (et une seule) est trouvée.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Alors maintenant il m'affiche bien mon message default , mais il ne m'affiche plus les mots qui contienne la bdd

Discussions similaires

  1. Problème / bug dans une boucle while
    Par Armad dans le forum Scilab
    Réponses: 1
    Dernier message: 08/09/2014, 22h37
  2. Problème .destroy() dans une boucle while !
    Par stuffy dans le forum Tkinter
    Réponses: 1
    Dernier message: 29/06/2008, 01h30
  3. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  4. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

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