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 :

Récupérer plusieurs champs dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Récupérer plusieurs champs dans une boucle
    Bonjour,

    J'ai un formulaire de recherche à faire, mais j'ai un problème:

    J'ai un champ "mots-clé", dans lequel on peut taper plusieurs mots-clés (logique).
    Dans ma BD, j'ai un table intervention, avec un champs "Details", ce qui correspond aux mots-clés. Je compare donc les mots-clés renseignés avec les mots du champ "Details".

    Voici mon code:

    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
    37
    38
    39
    40
    41
    if(!empty($motscle)){
     
    //requête qui récupère tous les détails de la table
    $reqDet = "SELECT Details FROM intervention";
    $resDet = mysql_query($reqDet);
     
     
    $tabMC = preg_split("/[\s,]+/",$motscle); // scinde la phrase grâce aux virgules et espacements
    print_r($tabMC);
     
    $taille2 = count($tabMC);
    echo "<b>$taille2</b>";
     
    $correspond ="faux";
     
    		while($row = mysql_fetch_row($resDet))
    		{
    		$det = $row[0];
    		$tabDet = preg_split("/[\s,]+/",$det);
    		$taille = count($tabDet);
     
    		print_r($tabDet);
    		echo "<b>$taille</b>";
     
    	 for($i=0;$i <$taille; $i++) // nombre de mots dans le champ "Details"
    			{
               for($j=0; $j<$taille2;$j++){ // nombre de mots clé renseignés
     
    					//echo "<h1>$tabDet[$i] == $tabMC[$j]</h1>";
    					if($tabDet[$i] == $tabMC[$j]){
    						$motTrouve = $tabDet[$i];  //PROBLEME
    						$correspond = "vrai";
    					}
    				}
    			} 		
    		}
     
    		echo "<h3>$correspond</h3><br/>"; 
    		echo "<h2> le mot trouvé est: $motTrouve[$i] </h2><br/>";
     
    	}


    Le problème, c'est qu'à chaque fois qu'un mot est trouvé, il est enregisté dans la variable $motTrouvé, et qu'il ne renvoie donc que le dernier mot trouvé. Or, je voudrais renvoyer tous les mots trouvés en commun, c'est à dire ne pas remplacer un mot trouvé par le dernier trouvé.

    Je ne sais pas si mon problème est clair, mais si quelqu'un peut m'aider...

    Merci d'avance ![

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour, pour faire ce genre de choses, il est préférable d'utiliser les fonction mySQL :

    http://dev.mysql.com/doc/refman/5.0/...xt-search.html

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Bonsoir,

    si les mots à trouver doivent être égales à ceux en base, pourquoi ne pas faire une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Details FROM intervention where Details in ('toti','tata')
    après avoir nettoyé la chaine de caractère renseignée.

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Merci pour vos réponses

    Citation Envoyé par arthuro45 Voir le message
    Bonsoir,

    si les mots à trouver doivent être égales à ceux en base, pourquoi ne pas faire une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Details FROM intervention where Details in ('toti','tata')
    après avoir nettoyé la chaine de caractère renseignée.
    Oui mais si je fais ça, je vais avoir les interventions qui auront comme détails 'toti' ET 'tata' non ?

    Moi je voudrais que ça soit 'toti' OU 'tata'.

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/04/2015, 10h18
  2. copier plusieurs champs dans une boucle php avec javascript
    Par groskanel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/08/2010, 14h47
  3. Récupérer les coordonnées de plusieurs DIV dans une boucle PHP
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/11/2009, 10h23
  4. [DEBUTANT]Récupérer plusieurs champs dans une procédure stockée
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/06/2007, 17h58
  5. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54

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