Snap200 |
Le 14/07/2005 à 02:33 |
|
|
Bonjour
Quelqu'un peut'il m'aider SVP car là je patoge ...... je doit realisé un moteur de recherche et j'ai sa comme ereur;
Warning: mysql_result(): supplied argument is not a
valid MySQL result resource in
/web/testweb/recherche.php3 on line 132
Warning: mysql_num_rows(): supplied argument is not a
valid MySQL result resource in
/web/testweb/recherche.php3 on line 135
J'ai tester m'a requet sur phpadmin:
SELECT count( * )
FROM cv
WHERE MATCH (
titre, ref, nom, ville, fonction, region1, nom_entr1,
nom_entr2, prec_ent
)
AGAINST (
'duboi'
)
AND (
fonction LIKE 'juridique'
)
AND (
niveau LIKE 'BAC+2'
)
MySQL a répondu:
#1191 - Can't find FULLTEXT index matching the column
list
Sachant que j'ai mes index en FULLTEXT dans ma table
*******
*****
`date_dispo` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`),
KEY `type_mobil` (`mobil_reg`),
FULLTEXT KEY `type_mobil_2` (`mobil_reg`),
FULLTEXT KEY `ref` (`ref`),
FULLTEXT KEY `titre` (`titre`),
FULLTEXT KEY `nom` (`nom`),
FULLTEXT KEY `ville` (`ville`),
FULLTEXT KEY `fonction` (`fonction`),
FULLTEXT KEY `region1` (`region1`),
FULLTEXT KEY `nom_entr1` (`nom_entr1`),
FULLTEXT KEY `nom_entr2` (`nom_entr2`),
FULLTEXT KEY `prec_ent` (`prec_ent`)
) TYPE=MyISAM AUTO_INCREMENT=49 ;
$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd");
$fonction=$_GET['fonction']; // pri a partir d'un menu deroulant
$niveau=$_GET['niveau']; // pri a partir d'un menu deroulant
$mot=$_GET['mot']; // pri à partir champ de type text
$mot=strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots);
$z=1;
$texte="Pages contenant <b>"$mots[0]"</b>";
$phrase="'%$mots[0]%'";
while($z<$nombre_mots)
{
$phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
$texte.=" ";
if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
$texte.=" <b>"$mots[$z]"</b>";
$z++;
}
if($debut==""){$debut=0;}
$debut=$page*$limit;
// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=mysql_db_query("$sql_bdd","select count(*) from cv WHERE MATCH
( titre, ref, nom, ville, fonction, region1, nom_entr1, nom_entr2,
prec_ent) AGAINST ('$phrase' IN BOOLEAN MODE) AND (fonction LIKE
'$fonction') AND (niveau LIKE '$niveau')",$db_link);
$nb_total=mysql_result($requete,0,"count(*)"); // ---- ICI LIGNE 132
$requete=mysql_db_query("$sql_bdd","select * from cv WHERE MATCH (titre
, ref, nom ,prenom, ville, fonction, region1, nom_entr1, nom_entr2,
prec_ent) AGAINST ('$phrase' IN BOOLEAN MODE) AND (fonction LIKE
'$fonction') AND (niveau LIKE '$niveau') limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete); // ------- ICI LIGNE 135
// DEFINITION DU MESSAGE A AFFICHER
if ($num==0) {echo "Désolé, aucune page de ce site ne contient
<b>$mot</b>...";}
else if ($mot=="") {echo "Veuillez saisir mot-clés avant de cliquer
sur 'lancer la recherche' !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2
caractères.";}
// AFFICHAGE DES RESULTATS
else {
echo "<span class=\"style2\"><b>$nb_total</b> réponse</span>";
if ($nb_total>1) {echo "s";}
//echo "<br>$texte";
//$i=0;
while ($tablo = mysql_fetch_object($requete)) {
print "<TR>";
print "<TD><BR></TD>";
print "</TR>";
print "<TR bgcolor=\"#E0ECF8\">";
print "<TD nowrap class=\"style2\" bgcolor=\"#E0ECF8\" ><b>Candidature
à l'offre: </b>$tablo->ref</TD>";
print "<TD>";
print "<TD nowrap class=\"style2\" bgcolor=\"#E0ECF8\"><b>Region
souhaité</b></TD>";
*********************
****************
*****************
****************
}
?>
</table> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
<?
print"<center>";
// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
// (LA PREMIERE PAGES EST 0)
if ($page>0)
{
$precedent=$page-1;
print "<a
href=\"$script_name?page=$precedent&mot=$mot&fonction=$fonction&niveau=$niveau\">PRECEDENT</a> \n";
}
// AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit)
{
while($i<($nb_total/$limit))
{
if($i!=$page){echo "(<a
href=\"$script_name?page=$i&mot=$mot&fonction=$fonction&niveau=$niveau\">$j</a>) ";}
else {echo "<b>($j)</b> ";}
$i++;$j++;
}
}
// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($debut+$limit<$nb_total)
{
$suivant=$page+1;
echo "<a
href=\"$script_name?page=$suivant&mot=$mot&fonction=$fonction&niveau=$niveau\">SUIVANT</a>";
}
}
print"</center>";
// DECONNEXION DE LA BASE DE DONNEE
mysql_close($db_link);
?>
MERCI pour votre aide , car c'est vraiment urgent pour moi. |
Anthony |
Le 14/07/2005 à 12:02 |
|
 Admin |
Salut,
tu dois créer un index sur N colonnes et non pas plusieurs INDEX. Ici tu as : titre, ref, nom, ville, fonction, region1, nom_entr1, nom_entr2, prec_ent soit 9 colonnes. Tu vas dans PHPMyadmin, tu supprimes tous tes index FULLTEXT, tu crées un Index FULLTEXT sur 9 colonnes, et tu indiques dans l'ordre tous tes champs intervenant dans le MATCH. Ta table ressemblera à ça :
CREATE TABLE `test` (
`champ1` varchar(255) NOT NULL default '',
`champ2` varchar(255) NOT NULL default '',
`champ3` varchar(255) NOT NULL default '',
`champ4` varchar(255) NOT NULL default '',
`champ5` varchar(255) NOT NULL default '',
`champ6` varchar(255) NOT NULL default '',
`champ7` varchar(255) NOT NULL default '',
`champ8` varchar(255) NOT NULL default '',
`champ9` varchar(255) NOT NULL default '',
FULLTEXT KEY `fulltext` (`champ1`,`champ2`,`champ3`,`champ4`,`champ5`,`champ6`,`champ7`,`champ8`,`champ9`)
) ENGINE=MyISAM;
Ta requête fonctionnera ensuite ;-) -- 
|
Snap200 |
Le 16/07/2005 à 15:55 |
|
|
Bonjour
Merci de m'avoir repondu.
Voila , j'ai suivi ce que tu m' dis mais malheuresement , j'ai encors la meme erreur .
Voila ce que j'ai rajouter dans ma table comme tu me là dis
FULLTEXT KEY `test` (`ref`,`titre`,`nom`,`code`,`ville`, `fonction`,`region1`,`nom_entr1`,`prec_ent`,`nom_entr2`)
) TYPE=MyISAM AUTO_INCREMENT=49
J'ai resté de nouveau ma requéte et j'ai de nouveau :
#1191 - Can't find FULLTEXT index matching the column
list
Merci pour ton aide |
Anthony |
Le 16/07/2005 à 18:40 |
|
 Admin |
Fais ton index sur N colonnes, mais avec les champs dans l'ordre, c'est à dire que si dans ta requête tu fais un MATCH(champ2,champ1) bah ton index sur n colonnes doit avoir la tête suivante :
FULLTEXT KEY `test` (`champ2`,`champ1`)
) TYPE=MyISAM AUTO_INCREMENT=49
et pas champ1,champ2 ;-) tu vois ce que je veux dire ? -- 
|
Snap200 |
Le 18/07/2005 à 09:52 |
|
|
Bonjour
Enfaite , je vois ce que tu veus dire .
Ma table est comme ceci
CREATE TABLE `cv` (
`id` int(11) NOT NULL auto_increment,
`ref` varchar(10) NOT NULL default '',
`titre` varchar(50) NOT NULL default '',
`critere` varchar(10) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
`nom` varchar(255) NOT NULL default '',
`prenom` varchar(255) NOT NULL default '',
`code` varchar(255) NOT NULL default '',
`ville` varchar(255) NOT NULL default '',
`sex` varchar(255) NOT NULL default '',
`date_naiss` date NOT NULL default '0000-00-00',
`fonction` varchar(255) NOT NULL default '',
`ann_exp` varchar(255) NOT NULL default '',
`niveau` varchar(255) NOT NULL default '',
`region1` varchar(255) NOT NULL default '',
`mobil` varchar(255) NOT NULL default '',
`mobil_reg` varchar(15) NOT NULL default '',
`mobil_nat` varchar(15) NOT NULL default '',
`sal` varchar(255) NOT NULL default '',
`dern_exp` varchar(255) NOT NULL default '',
`nom_entr1` varchar(255) NOT NULL default '',
`prec_ent` varchar(255) NOT NULL default '',
`nom_entr2` varchar(255) NOT NULL default '',
`nomDestination` varchar(255) NOT NULL default '',
`date_dispo` date NOT NULL default '0000-00-00',
`motivation` longblob,
PRIMARY KEY (`id`),
KEY `type_mobil` (`mobil_reg`),
FULLTEXT KEY `titre` (`ref`,`titre`,`nom`,`code`,`ville`,`fonction`,`region1`,`nom_entr1`,`prec_ent`,`nom_entr2`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=50 ;
Mes requetes ;
$requete=mysql_db_query("$sql_bdd","select count(*) from cv WHERE MATCH ( ref ,titre, nom, ville, fonction, region1, nom_entr1,prec_ent, nom_entr2 ) AGAINST ('$phrase') AND (fonction LIKE '$fonction') AND (niveau LIKE '$niveau')",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");
$requete=mysql_db_query("$sql_bdd","select * from cv WHERE MATCH ( ref ,titre , nom ,ville, fonction, region1, nom_entr1, prec_ent, nom_entr2) AGAINST ('$phrase') AND (fonction LIKE '$fonction') AND (niveau LIKE '$niveau') limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete);
Comme tu peus le voir je pense avoir respecté ce que tu m'a dis . Mais j'ai toujours la meme erreur , |
Anthony |
Le 18/07/2005 à 10:23 |
|
 Admin |
Ta première requête n'est toujours pas dans l'ordre ;-)
Les deux requêtes ne fonctionnent toujours pas ? -- 
|
Snap200 |
Le 18/07/2005 à 16:26 |
|
|
Mes requetes ne marche toujours pas , poutant lordre est respecté .
$requete=mysql_db_query("$sql_bdd","select count(*) from cv WHERE MATCH ( ref ,titre, nom, code, ville, fonction, region1, nom_entr1,prec_ent, nom_entr2 ) AGAINST ('$phrase') AND (fonction LIKE '$fonction') AND (niveau LIKE '$niveau')",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");
$requete=mysql_db_query("$sql_bdd","select * from cv WHERE MATCH ( ref ,titre , nom ,code, ville, fonction, region1, nom_entr1, prec_ent, nom_entr2) AGAINST ('$phrase') AND (fonction LIKE '$fonction') AND (niveau LIKE '$niveau') limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete);
J'ai toujours la meme erreur.
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /web/testweb/recherche.php3 on line 131
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /web/testweb/recherche.php3 on line 135
J'y comprend plus rien .... |
Anthony |
Le 18/07/2005 à 16:52 |
|
 Admin |
Quand tu exécutes ta requête dans PHPMyadmin, tu as quoi comme message d'erreur ? -- 
|
Snap200 |
Le 18/07/2005 à 16:54 |
|
|
Enfaite dans phpadmin maintenant la requete est bien executé.
J'ai donc ceci une fois la requete executé dan phpadmin .
Votre requête SQL a été exécutée avec succès (traitement: 0.0004 sec.)
requête SQL:
SELECT *
FROM cv
WHERE MATCH (
ref, titre, nom, code, ville, fonction, region1, nom_entr1, prec_ent, nom_entr2
)
AGAINST (
'CAMT'
)
AND (
fonction LIKE 'JURIDIQUE'
)
AND (
niveau LIKE 'BAC+1'
)
LIMIT 0 , 30
Mais aucune resultat est affiché pourtant ce que j'ai rentré existe dans ma base de donnée (la ref CAM/T/Q , juridique , bac+1) . |
Anthony |
Le 18/07/2005 à 17:17 |
|
 Admin |
Ok bah ton problème vient de ta requête mais dans PHP. Ta requête ne doit pas être bien écrite surtout si tu mets des variables dedans, dans le code PHP. Ensuite si elle ne trouve rien il faut revoir tes index, ce que tu recherches, etc... -- 
|