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

PHP & Base de données Discussion :

Moteur de recherche (séparer champs) [Fait] [MySQL]


Sujet :

PHP & Base de données

  1. #21
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Bon je vais déja voir pour la première erreur.

    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
    if($connexion)
    {	
    	$query="SELECT description FROM fichier WHERE";
    	for ($i=0; $i<count($CHAMP) ;$i++)
    	{
    	$query=$query." description LIKE ".$CHAMP[$i]."%";  
    	}
     
    }
     
    	if(mysql_num_rows($query) >= 1)
    	{	
    	header("location:intranet2.php?page=RechercheDocDesc1"); //AU MOINS 1 MOT CONNU
    	}
    	else
    	{	
    	header("location:intranet2.php?page=RechercheDocDesc2"); //ERREUR
    	}
    Erreur :
    Warning mysql_num_rows():supplied argument is not a valid mysql result ressource

  2. #22
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Normale, if faut executer la requête avant. mysql_num_rows prend un resuktset en paramètre, pas une requête.

    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
     
    if($connexion)
    { 
    $query="SELECT description FROM fichier WHERE";
    for ($i=0; $i<count($CHAMP) ;$i++)
    {
    $query=$query." description LIKE ".$CHAMP[$i]."%"; 
    }
     
    }
     
    //rajoute ca
    $rs=mysql_query($query);
    //
     
    if(mysql_num_rows($rs) >= 1)
    { 
    header("location:intranet2.php?page=RechercheDocDesc1"); //AU MOINS 1 MOT CONNU
    }
    else
    { 
    header("location:intranet2.php?page=RechercheDocDesc2"); //ERREUR
    }

  3. #23
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    J'ai mis le mysql_query PUIS le mysql_nums_rows.

    if(mysql_num_rows) <= 1
    { page OK }
    else
    {page pas de résultats }

    qu'importe , soit il me renvoit QUE sur page OK ou QUE sur page pas de résultats

    (en fonction du signe de comparaison)

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Ta requête renvoie quelque chose ? Si tu fais un echo de $query sa donne quoi ? Aussi , rajoute un or die sur mysql_query($query) afin de voir si la requête à un problème.


    edit : Si tu utilise phpmyadmin, copie colle le résultat de ton echo dans phpmyadmin afin de voir ce que la requête renvoie.

  5. #25
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    J'ai de bonnes nouvelles :

    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
    <?php
     
    //ton code pour exlposer la recherche
     
    $query="SELECT description FROM tatab WHERE";
    for ($i=0; $i<count($var) ;$i++)
    {
       $query=$query." description LIKE %".$var[$i]."%";
        if($i+1<count($var))//si par dernier element
        {
             $query=$query." OR ";
         }
     
    }
    $result=mysql_query($query);
    ?>
    dans le LIKE , la syntaxe est : ' ".$var[$i]." '

    Sinon ça c'est ok je penses. Par contre avec ou sans , ça fonctionnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($i+1<count($var))//si par dernier element
        {
             $query=$query." OR ";
         }
    Qu'est ce que ça changes ?


    je vais pouvoir passer à la partie 2

  6. #26
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Normalement il faut spécifier AND ou bien OR dans une syntaxe sql, ainf de spécifier si tout les conditions doivent être rempli ou une seul. Si tu à déja testé avec plusieurs mots et que sa marche j'imagine que mysql considère OR par défaut si il n'y a rien.

  7. #27
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($i+1<count($var))//si par dernier element
        {
             $query=$query." OR ";
         }
    Ce bout de code est obligatoire sinon , lorsqu'on saisit un "espace" , il affiches erreur "warning rows etc..." , dans le cas ou il est présent il affiche le résultat ou il y a le caractère " " entre les chaîne de la description

    Mais cela remplit quels conditions en fait , ce OR ?

    Sinon derrière ça à l'air de fonctionner , je vais essayer quelques tests encore.

  8. #28
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Ca fonctionnes très bien.

    Merci beaucoup Broswendes.

    Par contre , il y a t'il moyen de surbrillance la chaîne de caractères souhaitées ?

    ex : si je tapes Ch au lieu de "CHARTE" , en fait il va m'afficher touts les mots qui ont Ch collés.

    C'est juste pour voir un peu plus clair.

  9. #29
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Il y a toujours moyen de tout faire, sa dépend juste du mal que tu veux te donner.

    En premier lieu pour les opérateurs OR et AND.
    OR, pour indiquer qu'une seule des conditions à besoin d'être vrai, AND pour indiquer que toutes les conditions doivent être vrai.

    Pour la surbrillance bon alors le contenu de la chaine est dans le cookie, alor il suffit d'extraire de chaque résultat. Humm, explode($CHAMP($i),$description), et entre chaque valeur du tableau tu concataine $CHAMP($i) avec les balises html que tu veux pour mettre en évidence ( ex <b> ou <h1>).
    Donc sa se fais, mais c'est pas simple, du moin à ma connaissance.

  10. #30
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Ok , une choses que j'ai constaté.

    Par exemple si j'ai description : "Charte V2"

    Je tapes Ch... ça me renvoit vers Charte

    Mais si je fais "Ch V" , j'ai 0 résultats tandis que si je fais "V" il me donnes Charte V2 en résultat.

    j'penses que j'ai crié victoire trop tot

  11. #31
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Fait moi un echo de ta requête et copie/colle moi sa ici.

  12. #32
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
     
    <body link="blue" vlink="#006633" >
     
    	<p align="center" > <u> Gestion des documents </u><br> <br>  
     
    	 Recherche par <b> description </b> 	<br> <br>
     
    	<?php 
    	$SAISIE=$_COOKIE["saisie"];
    	$CHAMP=explode(" ",$SAISIE);
    	$COMPTEUR_MOTS=count($CHAMP); echo "<br>";
     
    	?>		
    	<?php 
    	//REQUETE 2 AFFICHAGE DU COUNT
    				// on se connecte à MySQL
    				$db = mysql_connect('-', '-', ' ');
    				// on sélectionne la base
    				mysql_select_db('intranet',$db);
    				// on crée la requête SQL
    				$sql="SELECT count(*) FROM fichier WHERE description LIKE '%".$SAISIE."%'";
    				// on envoie la requête
    				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    				$total = mysql_num_rows($req);
     
    				// on fait une boucle qui va faire un tour pour chaque enregistrement
    				while($data = mysql_fetch_array($req)) 
    				{
    					// on affiche les informations de l'enregistrement en cours
     
    						$COUNT=$data["count(*)"];
     
    				}
    				// on ferme la connexion à mysql
    				mysql_close();	
     
    	echo "Pour la description du nom de fichier saisie : <b>".$SAISIE."</b> , vous avez <b>".$COUNT. "</b> résultat(s) dans le tableau ci dessous :" ."<br><br>" ;	
    	?>
    			<table border="2" bgcolor="#339933" align="center" cellspacing="2" cellpadding="3" height="1%" width="79%"> 
    			<tr bgcolor="white">
    				<th>ID</th>	
    				<th>Nom</th>
    				<th>Description</th>
    				<th>Date</th>
    				<th>Lien</th>					
    			</tr>
     
     
    	<?php		
     
    				//REQUETE 3 AFFICHAGE DES RESULTATS
    				// on se connecte à MySQL
    				$db = mysql_connect('-', '-', '');
    				// on sélectionne la base
    				mysql_select_db('intranet',$db);
    				// on crée la requête SQL
    				$sql="SELECT id_fichier,nom_fichier,description,date,lien_fichier FROM fichier WHERE description LIKE '%".$SAISIE."%'";
    				// on envoie la requête
    				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    				$total = mysql_num_rows($req);
     
    				// on fait une boucle qui va faire un tour pour chaque enregistrement
    				while($data = mysql_fetch_array($req)) 
    				{
    					// on affiche les informations de l'enregistrement en cours
    					echo '<tr bgcolor="white">';
    						echo '<td>'.$data["id_fichier"].'</td>';
    						echo '<td>'.$data["nom_fichier"].'</td>';
    						echo '<td>'.$data["description"].'</td>';
    						echo '<td>'.$data["date"].'</td>';
    						echo  '<td> <a href="'.$data["lien_fichier"].'" >    Telechargez!     </a> </td>';
    					echo '</tr>';
    				}
    				// on ferme la connexion à mysql
    				mysql_close();
    		 ?>
    		</table>
     
     
    	<br> <br> 
    	<a href="intranet2.php?page=AccueilZoneSec"style="text-decoration:none;color:red"
    				onMouseOver="window.status='';return true"> <b>Accueil</b></a>
    	<br>
    	&nbsp
    	</p>
    </body>
     
    </html>
    Je met ça déja et je vais essayer de voir pour l'affichage de la requete

  13. #33
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT id_fichier,nom_fichier,description,date,lien_fichier FROM fichier WHERE description LIKE '%".$SAISIE."%'";
    C'est sa la requête pour trouver les enregistrements ?

    Si oui, bien c'est normal que sa marche pas tu ne fais pas de boucle pour créer la requête comme montré précédament.

  14. #34
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Parfait !

    Maintenant , j'essaye de voir pour la couleur...
    Ca n'a pas l'air simple par contre...

  15. #35
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Si tu veux plus de renseigenements je suggère un nouveau poste parce que là ce n'est n'est plus du ressort de MySQL ( en plus le post commence à être long ).

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2012, 16h39
  2. Recherche moteur wiki utilisant des champs imposés
    Par pixelb dans le forum Services
    Réponses: 0
    Dernier message: 03/01/2011, 16h40
  3. [MySQL] Moteur de recherche qui recherche un champ dans toute ma base de données
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/12/2010, 12h28
  4. [MySQL] Moteur de recherche multi critére - Probléme affichage si champs vide
    Par karpe dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 28/02/2010, 20h59
  5. [HTML] Champ formulaire moteur de recherche
    Par lelectronique.com dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 21/07/2008, 19h39

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