Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 16h43   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 0
Points : 0
Par défaut Problème switch dans une boucle (default)

Bonjour à tous,

J'ai un petit soucis :

Code :
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)
Djo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h01   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour, il faut sortir du switch avec break; :
Code :
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>";     
}
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h03   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 0
Points : 0
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 ?
Djo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h15   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
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 :
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>
}
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h20   #5
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 0
Points : 0
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 :
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
Djo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h32   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Code :
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.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h39   #7
Invité de passage
 
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 0
Points : 0
Alors maintenant il m'affiche bien mon message default , mais il ne m'affiche plus les mots qui contienne la bdd
Djo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h11.


 
 
 
 
Partenaires

Hébergement Web