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 :

Problème moteur de recherche


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut Problème moteur de recherche
    Bonjour, j'ai 1 soucis avec 1 moteur de recherche voici l'erreur:
    Warning: Wrong parameter count for mysql_db_query() in C:\wamp\www\rbdc\traitementsearch.php on line 46
    La requête SQL executée est : select * from fiches where 1
    En gros j'aimerai qu'il affiche, les fiches ( infos d'une table ), dont 1 info correspond au champ de recherche saisie.

    Il peut y avoir plusieurs mots clés saisies.

    ps: les echo sur les variables posté fonctionne.

    voici le 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
    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
    <?php 
    include ('secure.php');
    include ('mysqlconnect.php'); 
    $projet = $_POST['btprojet'];
    $search = $_POST['textfieldsearch'];
    echo $projet;
    echo $search;
    if(isset($search) && trim($search) != '') 
    	{
    	$search = str_replace('+', ' ', trim($search));
    	$search = str_replace('\'', ' ', $search);
    	$search = str_replace(',', ' ', $search);
    	$search = str_replace(':', ' ', $search);
    	$tabsearch = explode(' ' , $search );
    	//on compte le nombre de mots
    	$nbsearch = count($tabsearch);
    	//on prépare la requête SQL.
    	$sql = "select * 
    			from fiches 
    			where numFiche =\'$tabsearch[0]\' 
    			or nomFiche like \'%$tabsearch[0]%\' 
    			or datecreaFiche =\'$tabsearch[0]\' 
    			or loginF =\'$tabsearch[0]\' 
    			or descriptifFiche like \'%$tabsearch[0]%\' 
    			or resolutionFiche like \'%$tabsearch[0]%\' 
    			or nomProjet =\'$search\' 
    			or nbhresolution = \'$tabsearch[0]\' 
    			or enseigne = \'$tabsearch[0]\' 
    			or privee =\'$tabsearch[0]\'
    			or emailF = \'$tabsearch[0]\'";
    			// on boucle pour integrer tous les mots dans la requête
    			$sql = "select * from fiches where 1"; 
    			for ($i = 0; $i < $nb; $i++)
    				{ 
    				$sql .= " AND ( numFiche='$tabsearch[i]' 
    				or nomFiche like '%$tabsearch[i]%' 
    				or datecreaFiche ='$tabsearch[i]' 
    				or loginF ='$tabsearch[i]' 
    				or descriptifFiche like '%$tabsearch[i]%' 
    				or resolutionFiche like '%$tabsearch[i]%' 
    				or nomProjet '$search' 
    				or nbhresolution = '$tabsearch[i]' 
    				or enseigne = '$tabsearch[i]' 
    				or privee ='$tabsearch[i]' 
    				or emailF = '$tabsearch[i]' )"; 
    				}
    			// on execute la requête SQL.
    			$result = mysql_db_query($sql);
    			if ($result)
    				{
    				if (mysql_num_rows($result) == 0) 
    					{
    					// Si il n'y a pas de résultats
    					echo '<script language=javascript> alert ("Pas de résultat");</script>';
    					echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    					exit;
    					}else{
    						echo "<center><b>Résultat(s)</b></center><br>";
    						while($row = mysql_fetch_array($result))
    							{
    							echo $row['nomFiche'];
    							}
    						mysql_free_result($result);
    						}
    				}
    			echo "La requête SQL executée est : $sql";
    	}else{	
    		echo '<script language=javascript> alert ("Indiquez un mot clé pour effectuer une recherche");</script>';
    		echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    		exit;
    		}
    ?>
    Cela peut venir de ou :

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Par défaut
    Bonjour,

    Manifestement il y a un pb avec la requête "select * from fiches where 1".
    Voir si les noms des champs sont corrects.
    Pourquoi mets-tu des '\' ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    J'ai donc modifié mon code, il m'affiche maintenant:
    Warning: Wrong parameter count for mysql_db_query() in C:\wamp\www\rbdc\traitementsearch.php on line 48
    La requête SQL executée est : select * from fiches where 1
    mon code modifié:
    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
     
    <?php 
    include ('secure.php');
    include ('mysqlconnect.php'); 
    $projet = $_POST['btprojet'];
    $search = $_POST['textfieldsearch'];
    echo $projet;
    echo $search;
    if(isset($search) && trim($search) != '') 
    	{
    	$search = str_replace('+', ' ', trim($search));
    	$search = str_replace('\'', ' ', $search);
    	$search = str_replace(',', ' ', $search);
    	$search = str_replace(':', ' ', $search);
    	$tabsearch = explode(' ' , $search );
    	//on compte le nombre de mots
    	$nbsearch = count($tabsearch);
    	//on prépare la requête SQL.
    	$sql = "select * 
    			from fiches
    			where numFiche ='".$tabsearch[0]."' 
    			or nomFiche like %'".$tabsearch[0]."'%
    			or datecreaFiche ='".$tabsearch[0]."'
    			or loginF ='".$tabsearch[0]."'
    			or descriptifFiche like %'".$tabsearch[0]."'%
    			or resolutionFiche like %'".$tabsearch[0]."'%
    			or nomProjet ='".$search."'
    			or nbhresolution = '".$tabsearch[0]."'
    			or enseigne = '".$tabsearch[0]."'
    			or privee ='".$tabsearch[0]."'
    			or emailF = '".$tabsearch[0]."'";
    			// on boucle pour integrer tous les mots dans la requête
    			$sql = "select * from fiches where 1"; 
    			for ($i = 0; $i < $nb; $i++)
    				{ 
    				$sql .= " AND ( numFiche='".$tabsearch[i]."'
    				or nomFiche like %'".$tabsearch[i]."'%
    				or datecreaFiche ='".$tabsearch[i]."'
    				or loginF ='".$tabsearch[i]."'
    				or descriptifFiche like %'".$tabsearch[i]."'%
    				or resolutionFiche like %'".$tabsearch[i]."'%
    				or nomProjet '".$search."'
    				or nbhresolution = '".$tabsearch[i]."'
    				or enseigne = '".$tabsearch[i]."'
    				or privee ='".$tabsearch[i]."' 
    				or emailF = '".$tabsearch[i]."' )"; 
    				}
    			// on execute la requête SQL.
    			$result = mysql_db_query($sql);
    			if ($result)
    				{
    				if (mysql_num_rows($result) == 0) 
    					{
    					// Si il n'y a pas de résultats
    					echo '<script language=javascript> alert ("Pas de résultat");</script>';
    					echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    					exit;
    					}else{
    						echo "<center><b>Résultat(s)</b></center><br>";
    						while($row = mysql_fetch_array($result))
    							{
    							echo $row['nomFiche'];
    							}
    						mysql_free_result($result);
    						}
    				}
    			echo "La requête SQL executée est : $sql";
    	}else{	
    		echo '<script language=javascript> alert ("Indiquez un mot clé pour effectuer une recherche");</script>';
    		echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    		exit;
    		}
    ?>
    Cela vient de la requete, mais je ne comprend pas la..

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    mysql_db_query() attend au moins deux paramètres (cf. le message d'erreur), celui qui manque étant ici le nom de la base.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    oui c'etait bien ca le problème, par contre maintenant je n'ai pu d'erreur malgrès que j'effectue des echos sur le résultat, pourtant ma bdd à un contenu riche permettant d'afficher plusieurs élèment en test.

    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
    			$result = mysql_query($sql);
    			if ($result)
    				{
    				if (mysql_num_rows($result) == 0) 
    					{
    					// Si il n'y a pas de résultats
    					echo '<script language=javascript> alert ("Pas de résultat");</script>';
    					echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    					exit;
    					}else{
    						echo "<center><b>Résultat(s)</b></center><br>";
    						while($row = mysql_fetch_array($result))
    							{
    							echo $row['nomFiche'];
    							}
    						mysql_free_result($result);
    						}
    				}
    ps: j'arive sur 1 page blanche pourtant il devrait y avoir au moi " Résultat(s)"

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    oups je n'ai rien dit je m'etait trompé dans 1 variable.

    Par contre il m'affiche le nom de toute les fiches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Résultat(s)
     
    posting gl sans ax 
    facture 23 
    facture 
    test99 
    test88
    quoi que je saisisse

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Par défaut
    j'affiche donc dans un select le résultat, seulement mon select est vide:
    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
    $result = mysql_query($sql);
    			if ($result)
    				{
    				if (mysql_num_rows($result) == 0) 
    					{
    					// Si il n'y a pas de résultats
    					echo '<script language=javascript> alert ("Pas de résultat");</script>';
    					echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    					exit;
    					}else{
    						echo "<select name='searchselection'>";
    						while($datafichiers = mysql_fetch_assoc($result))
    							{
    							echo '<option>'.$row['nomFiche'].'</option>';
    							echo '<br>';
    							}
    						}
    					echo'</select>';
    				}
    	mysql_free_result($result);
    	}else{	
    		echo '<script language=javascript> alert ("Indiquez un mot clé pour effectuer une recherche");</script>';
    		echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
    		exit;
    		}
    le code source donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <select name='searchselection'><option></option><br><option></option><br><option></option><br><option></option><br><option></option><br></select>

    la base ne contient que 5 nomFiche

    Il esai donc d'en afficher 5, mais

    1) la recherche ne selectionne pas elle affiche les 5

    2) rien n apparait dans mon select

Discussions similaires

  1. Problème moteur de recherche de ce forum
    Par cmail dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 13/02/2014, 11h38
  2. [MySQL] Problème moteur de recherche php avec base donnée Mysql
    Par hotwheals dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 28/06/2011, 09h06
  3. Probléme moteur de recherche WSS3
    Par youbel dans le forum SharePoint
    Réponses: 4
    Dernier message: 27/05/2009, 09h06
  4. Réponses: 0
    Dernier message: 23/10/2007, 17h36
  5. Problème moteur de recherche htdig
    Par mr_neness dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 09/01/2006, 11h44

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