MOTEUR DE RECHERCHE DANS BDD II

cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009 - 25 juil. 2006 à 18:34
mastermh73 Messages postés 1 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 19 mai 2010 - 19 mai 2010 à 00:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38782-moteur-de-recherche-dans-bdd-ii

mastermh73 Messages postés 1 Date d'inscription dimanche 4 avril 2010 Statut Membre Dernière intervention 19 mai 2010
19 mai 2010 à 00:08
bonjours a tous, peut-etre ma question va parraitre un peu stupide mais est ce qu'on peur utiliser ce moteur de recherche pour une galerie d'image.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
28 avril 2009 à 22:01
Salut!
$_POST['search_text'] contient l'entrée de l'utilisateur, tu peux l'afficher!

Bonne soirée!

Raf
thomasxsolutions Messages postés 2 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 28 avril 2009
28 avril 2009 à 17:07
slt, tout d'abord bravo pour ce script coockiesch, il est génial. j'ai juste un petit problème, je n'arrive pas à afficher le texte recherché dans ma BDD: voici le code SQL d'affichage des résultats que j'ai mis dans une autre page php:

<?php
$host = "localhost";
$login = "root";
$pass = "";
$nom_db = "test";

mysql_connect("$host", "$login","$pass") or die ("pas connecté");
mysql_select_db("$nom_db") or die ("aucune BDD active");
$forbidden = array( 'le', 'la', 'des' );
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'], $forbidden );
$sql = $s->mkQuery( 'test', 'id', array( 'DOCS', 'Contenu' ), 'id', 'desc',0,10 );
echo $sql['select'] . '

' . mysql_error();
$result = mysql_query(isset ($_POST [$sql['select']]) ) or die( 'Erreur MySQL' ); // si erreur

while( $row = mysql_fetch_assoc( $result ) )
{
// affichage normal ici (titre et texte récupérés), genre:
echo 'documents: ' , stripslashes( $row['DOCS'] ) , '
' , stripslashes( $row['Contenu'] ) , '
<hr />';
}
mysql_close();
?>

Je ne suis que débutant en PHP, pourez-tu m'aider? merci d'avance
tom
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
17 mars 2009 à 15:21
Salut tout le monde
J'ai vraiment un soucis je n'arrive pas du tout à le faire fonctionner , jais pourtant bien fait la connexion à la base de donnée mais rien ne s'affiche , ni même aucunes erreurs...
Serait il possible de mettre en place un exemple simple (fichier sql basic + un fichier php prêt à l'emploi) avec la connexion bdd etc
Merci d'avance à vous
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
22 juil. 2008 à 14:31
A la ligne 128:$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );

--->
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE (' . $this->query_where . ') AND ( t1.id=t2.id ) );

Tu peux aussi faire comme ceci:$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE (' . $this->query_where . ( empty( $whereSup ) ? '' : ' AND ( ' . $whereSup . ')' ), 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE (' . $this->query_where . ')' . ( empty( $whereSup ) ? '' : ' AND ( ' . $whereSup . ')' ) );

Et modifier:
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
EN
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb, $whereSup = '' )

Et tu peux donc passer un paramètre de plus à ta fonction, qui sera ajouté au requêtes... :)

Ca joue? :)

Raf
ineuls Messages postés 6 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 3 septembre 2008
22 juil. 2008 à 14:23
Merci pour ton explication,

J'ai donc modifié mon code mais je ne trouve pas l'endroit ou il faut rajouter les conditions supplémentaires dans la construction de la requête.

Voici la fonction mkQuery()

// création d'objet
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );

$sql = $s->mkQuery( 'tls202_appln_title at,tls203_appln_abstr aa,tls211_pat_publn pp,tls204_appln_prior ap,tls207_pers_appln pa,tls206_person p,tls209_appln_ipc aipc,tlsup_ctry_names cn,tlsup_naceipc_dgr ndgr', 'at.appln_title,p.person_name', array( 'aa.appln_abstract', 'pp.publn_nr',' a.appln_nr', 'ap.prior_appln_seq_nr', 'pp.publn_date',' a.appln_filing_date',' ap.prior_appln_seq_nr', 'cn.ctry_name',' p.postcode', 'pp.publn_auth',' a.appln_auth',' ndgr.ipc'), 'p.person_name', 'desc', 0, 0 );

Si tu pouvais me dire ou il faut que je place les t1.id=t2.id dans la construction de la requête .

merci d'avance
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
22 juil. 2008 à 11:48
Salut!
Rien ne t'empêche de faire la recherche dans plusieurs tables. Par exemple tu peux mettre, pour les différents paramètres de la fonction mkQuery:
$table: 'table1 t1, table2 t2'
$select: 't1.id, t1.libelle, t2.autreColonne'
etc...

Il te faudra peut être rajouter, lors de la construction de la requête, ligne 128, des conditions supplémentaires du genre:
t1.id=t2.id

Voilà,

@++

R@f
ineuls Messages postés 6 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 3 septembre 2008
22 juil. 2008 à 11:43
bonjour,

je vous explique mon projet en quelques mots:
j'utilise un formulaire de recherche avec plusieurs méthodes POST (9 au total), je dois afficher le résultat de la recherche en fonction des POST remplis par l'utilisateur. Ma base de données (70Go texte) est composer de plusieurs tables alors je voudrais savoir s'il est possible de sélectionner plusieurs tables pour générer la requête et afficher le résultat en fonction des choix de l'utilisateur ?

j'espère avoir été assez clair sur mon problème

merci d'avance
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
2 juin 2008 à 17:54
Oups, je voulais dire forum!
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
2 juin 2008 à 17:53
Salut!
Utilise le forme, stp....

@++

R@f
cs_lepetitcod Messages postés 4 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 3 juin 2008
2 juin 2008 à 15:48
Bonjour a tous ,
d'abord un grand bravo por ce code qui s'avere particulierement efficace!
ensuite j'aurais voulu avoir votre avis sur un petit probleme que je rencontre depuis quelques jours avec mon propre code : le but de ma recherche est de m'afficher une liste de spot de kitesurf selon 3 criteres apparement les 2 premiers sont pris en compte mais le 3eme reste muet mais un autre soucis apparai lors de l'affichage .
en effet mes resultats sont repetes (4 fois ou plus )ce qui rendla liste de resultats extremement longue .

voici mon code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>

<title>Résultats de la recherche</title>
<style TYPE= "text/css">
<!--
A:hover {text-decoration:none; background: #FFFFCC}
A:hover {color:#FF0000;}
-->
</style>
<style TYPE="text/css">
BODY {
scrollbar-face-color: #bfcfff;
scrollbar-shadow-color: #000000;
scrollbar-highlight-color: #FFFFFF;
scrollbar-3dlight-color: #000000;
scrollbar-darkshadow-color: #000000;
scrollbar-track-color: #e6cff;
scrollbar-arrow-color: #6078bf;
}
</style>
</head>

<center>
Résultats de la recherche</center>

<?php
$zone_fr=$_POST['zone_fr'];
$niveau=$_POST['niveau'];
$vent_opt=$_POST['vent_opt'];
$envoyer=$_POST['envoyer'];

if(isset($_POST['envoyer'])) $envoyer=$_POST['envoyer'];
else $envoyer="";
if ($zone_fr=="" && $niveau=="" && $vent_opt=="")
{echo "<center> Veuillez remplir au moins un champ!! </center>";}
elseif($envoyer == 'Recherche ')
{

echo' ' ;
echo'
';
echo'
';
if(isset($_POST['zone_fr'])) $zone_fr =$_POST['zone_fr'];
else $zone_fr= "";
if(isset($_POST['niveau'])) $niveau=$_POST['niveau'];
else $niveau="";
if(isset($_POST['vent_opt'])) $cms=$_POST['vent_opt'];
else $vent_opt="";

include("connectionkite.php");
$connect = connectToBasec();

;
$sql "SELECT DISTINCT zone.zone_fr,zone.spot,zone.ID_spot,session.sess_type,session.niveau,session.vent_opt FROM zone,info,session WHERE zone.ID_spot info.ID_spot and zone.zone_fr like '%$zone_fr%' and session.niveau like '%$niveau%' and session.vent_opt like '%$vent_opt%'";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$result="0";

//Test du résultat
while($data = mysql_fetch_assoc($req)){$result="1";}
//Affichage des données.
if ($result=="0"){
echo"<center> Aucun enregistement retourné ... </center>

";
}
else{
//affichage des données
echo'';
echo'----
';
echo'<center>zone</center>,
<center>spot</center>,
<center>niveau</center>, <center>type de session</center>, <center>Numeros</center>, <center>Détails</center>, ';

$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data=mysql_fetch_assoc($req))
{
$zone_fr=$data['zone_fr'];
$niveau=$data['niveau'];
$vent_opt=$data['vent_opt'];
$ID_spot=$data['ID_spot'];

echo'----
';
echo'<center>'.$data['zone_fr'].', </center>
<center>'.$data['spot'].', </center>
<center>'.$data['niveau'].', </center><center>'.$data['sess_type'].', </center><center>'.$data['ID_spot'].', </center>';
echo'';
echo" <center></center>";

echo', ';
}}
echo'
';
echo'
';
echo'
';
}

?>

</html>

merci d'avance
_klesk Messages postés 70 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 20 août 2008
25 févr. 2008 à 20:40
oui c'est exactement ca du genre :

$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );
...
les morceaux de selection qui vont bien
...
$s->join = 'pays';
$s->joinner = 'id';
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'texte' ), 'id', 'desc', 0, 10 )

ou peu être

$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );
...
toujours les morceaux de selection qui vont bien
...
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'texte' ),'table_a_joindre',array('jointure_table1','jointure_table2'), 'id', 'desc', 0, 10 );

perso quand je me suis fait la mienne, j'ai obter pour la premiere solution. mais tous est bon a prendre.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
19 févr. 2008 à 19:08
Salut!
Si tu parles d'une récupération/recherche dans deux/plusieurs tables différentes, pas de pb normalement. L'avais fait, il me semble. Que voulais-tu faire au juste?

Merci pour ton commentaire!

Raf
_klesk Messages postés 70 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 20 août 2008
15 févr. 2008 à 21:37
Petite amélioration coockiesch, serait de pouvoir faire des jointures, comme j'a n'arrivait pas a modifier t'a source du coup je m'en suis fait une pour moi ;)

Mais cela peut-être une amélioration à apporter a ton source, qui reste tout a fait performant :p
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
5 févr. 2008 à 19:11
Salut!
Le script te prépare deux requêtes, contenues dans $sql['select'] et $sql['count'] permettant, respectivement, de récupérer et de compter les résultats.

Ensuite, ben tu utilises mysql_query et mysql_fetch_assoc comme tu le souhaites pour exécuter et afficher les résultats de la requête... :-)

Raf
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
1 févr. 2008 à 15:26
Bon je reviens vers vous parce que j'ai rien compris
ou je doit mettre le while, le code...
merci de votre aide
cs_Coiler Messages postés 3 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 24 février 2009
11 janv. 2008 à 23:18
Merci beaucoup pour ton aide. Enfait je me suis arraché les cheveux car je ne connais rien en php orienté objet et je cherchais à remplacer betement ce que tu me donnais, avec le "(le nom de la classe)" en tant que code et non explication...

Oui je sais c'est pathétique :D
Merci en tout cas ça marche très bien, sauf que je n'arrive à récupérer que l'id et pas les autre champs (comme quelqun l'a posté plus haut sans réponse)

Mais je me suis débroullé avec une requete where et un fetch_array.

Merci beaucoup pour se code performant
_klesk Messages postés 70 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 20 août 2008
9 janv. 2008 à 15:01
@Coiler

Il te suffis simplement de remplacer __construct() par dbSearch() (le nom de la classe en fait)
sans oublier :
private par -> var.
public function par -> function.

après c'est impecable.

ps: c'est Klesk et pas Klesh ;) rapport à Quake 3 pour les ammateurs.
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
8 janv. 2008 à 12:47
merci pour ta reponse j'étudie ca..
a quoi servent $sql['select'] et $sql['count'] que tu as mis en commentaire?
cs_Coiler Messages postés 3 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 24 février 2009
7 janv. 2008 à 18:15
"Pour la rendre compatible php4 il faut remplacer :

private par -> var.
public function par -> function
function __construct par -> function dbSearch (le nom de la classe)"

Je suis désolé de passer pour un naz malgré l'aide apporté dans les commentaires, mais après moult effort et quelques recherches sur internet je n'arrive pas à modifier correctement le script pour le rendre compatible php4. En fait je pense que mon probleme vient du function__construct que je n'arrive pas a remplacer.
Si _KLESH pouvait m'apporter des précision je lui serai grandement reconnaissant :D

Merci pour votre aide.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
5 janv. 2008 à 14:03
Salut!
http://www.phpcs.com/codes/PHONEX_36561.aspx
http://www.phpcs.com/codes/SOUNDEX-FRANCAIS_36539.aspx

La requête est donc dans: $sql['select']
Ainsi, tu fais qqch, comme:if( ( $ret mysql_query( $sql['select'] ) ) false )
die( 'Erreur MySQL' );

while( $row = mysql_fetch_assoc( $ret ) )
; // affichage ici

Pour ce qui est des options de recherche, c'est à faire lors de l'appel de la méthode, comme expliqué:
Exemple de fonctionnement:
<?php
// création d'objet
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );

/*
ici, recherche dans la table news
on récupère le champ id
la recherche se fait dans les champs titre et texte
classement selon id, desc
limit 0, 10
*/
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'texte' ), 'id', 'desc', 0, 10 )
/*
$sql['select'] // requête de select
$sql['count'] // requête de comptage
*/
?>
Donc, tu changes les valeurs de $s->mkQuery (les paramètres sont expliqués à la ligne 74 du code).

Voili, voilou, j'espère que ca va jouer! :-)

@++

R@f
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
4 janv. 2008 à 12:43
salut,
pas trouvé la source de malalam... mais je continu de chercher...
dis moi jsuis un peu claqué mais c'est ou qu'il faut faire les modif pour que cela cherche dans ma table a moi... (c peu etre con mais bon c en posant des question comme ca que j'apprend)
et la requete on peut l'afficher avec un while? (la c pareil)
merci de ta reponse (enfin si... lol)
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
4 janv. 2008 à 11:56
ah ok je vais allez voir ça...
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
4 janv. 2008 à 11:12
Salut!
Je suppose qu'il traduit notre recherche en phonétique et cherche des correspondances avec sa bdd... Il me semble que Malalam a déposé un exemple de telle source sur le site... :-)

@++

R@f
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
3 janv. 2008 à 17:22
bonjour et bonne année
il font comment google pour avoir le mot approchant le plus quand on se trompe...???
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
13 nov. 2007 à 21:25
:)

Raf
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
13 nov. 2007 à 13:12
O_o Waw toutes mes félicitations!

Le code fonctionne parfaitement! Un simple copié collé et il ne prend plus en compte les mots censurés dans $forbidden :-D

Je n'aurais pas espéré mieux mille merci!

Gloire à Coockiesch!
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
10 nov. 2007 à 09:13
Yop!
Il est bizarre ton tableau, lol... :-D
Essaie ca:

1) Remplace le code de la classe par:
class dbSearch
{
// mots et expressions à chercher
private $words;

// séparateur
private $sep;

// option de recherche
private $option;

// nombre de mots
private $count_words;

// clause where
private $query_where = '';

/*
__construct()
Paramètres:
- $search_option: option choisie
- $search_text: texte de recherche entré
Retour:
void
*/
public function __construct( $search_option, $search_text, $forbidden = NULL )
{
$this->query_prepared = 1;

// option de recherche
$this->option = $search_option;

// recherche en ET
if( $this->option == 'all' )
{
$this->sep = ' AND ';
$this->option = 1;
$this->words = explode( ' ', addslashes( $search_text ) );

if( isset( $forbidden ) && is_array( $forbidden ) )
$this->words = array_diff( $this->words, $forbidden );

$this->count_words = count( $this->words );
}
// recherche en OU
else if( $this->option == 'one' )
{
$this->sep = ' OR ';
$this->option = 2;
$this->words = explode( ' ', addslashes( $search_text ) );
if( isset( $forbidden ) && is_array( $forbidden ) )
$this->words = array_diff( $this->words, $forbidden );

$this->count_words = count( $this->words );
}
// phrase exacte
else
{
$this->option = 0;
$this->words[0] = addslashes( $search_text );
}
}

/*
mkQuery()
Crée la requête MySQL
Paramètres:
- $table ( string ): table à utiliser
- $select ( string ): les champs que l'on récupère
- $champs ( string si 1 champ, array si plusieurs ): champs dans lesquels s'effectue la recherche
- $order ( string ): critère de classement ; pas de classement si vide
- $sens ( string: asc ou desc ): sens du classement
- $limit_start ( entier ): pour le LIMIT
- $limit_nb ( entier ): pour le LIMIT ; si 0, pas de clause LIMIT
Retour:
void
*/
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
{
$this->query_where = '';

if( !is_array( $champs ) )
$champs = array( $champs );

$count_champs = count( $champs );

// si recherche en ET ou OU
if( $this->option )
{
$i = false;
foreach( $this->words as $key => $value ) // boucle sur les mots
{
// si pas première itération
if( $i )
$this->query_where .= $this->sep;
$i = true;

$this->query_where .= '( ';

for( $j = 0; $j < $count_champs; $j++ ) // boucle sur les champs
{
if( $j )
$this->query_where .= ' OR ';

$this->query_where .= '`' . $champs[ $j ] . '` LIKE \'%' . $value . '%\'';

} // for( $j = 0; $j < $this->count_words; $j++ ) // boucle sur les champs

$this->query_where .= ' )';
} // for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les mots
}
else // recherche phrase exacte
{
for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les champs
{
if( $i )
$this->query_where .= ' OR ';

$this->query_where .= $champs[$i] . ' LIKE \'%' . $this->words[0] . '%\' ';
} // for( $i = 0; $j < $count_champs; $i++ ) // boucle sur les champs
} // else // recherche phrase exacte

// construction de la requête finale$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );

if( !empty( $order ) )
$sql['select'] .= ' ORDER BY ' . $order . ' ' . $sens;
$this->query_where = $sql['select'];
if( $limit_nb )
$sql['select'] .= ' LIMIT ' . $limit_start . ', ' . $limit_nb;

return $sql;
}

/*
getWhere()
Récupération de la clause where
Paramètres:
void
Retour:
string
*/
public function getQuery()
{
return $this->query_where;
}
}

2) Quand tu crées l'objet dbSearch, tu peux maintenant ajouter un nouveau paramètre (optionnel):
$forbidden = array( 'le', 'la', 'des' );
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'], $forbidden );

Ca devrait jouer, tiens moi au courant!

@++

R@f
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
9 nov. 2007 à 10:59
Bonjour,

Merci pour la rapidité de ta réponse, mais je ne trouve toujours pas la solution. J'ai essayé ceci mais sans succès :

<?php
class dbSearch{
// mots et expressions à chercher
private $words; $array1 array("a"> "du");$array2 array("b"> $words);
$result = array_diff($array1, $array2);
private $words = $result;

Ne devrait-on pas chercher plutôt du coté de ceci? :

<?php

//Texte contenant les mots à bannir
$message="Un petit test pour enlever des mots interdit, genre du, le et
bien d'autre du même style, en tenant compte de la casse,
de la gestion du pluriel";

echo '
Message original avec des majuscules et des mots au pluriel :
'.$message.'
';

//Mots à bannir séparés par |
$insulte='du|les|la|dans';

$par="****"; // Le mot banni sera remplacé par ce texte
$message = preg_replace("/(^|[^a-zA-Z])*[ ]*($insulte)[s|x]*([^a-zA-Z]?)/si"," $par ", $message);

echo $message;

?>

source trouvée sur easy-script.com

Malheureusement je n'arrive pas à l'adapter à ton moteur de recherche :-s

Merci pour ton aide :-)

Straw
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
6 nov. 2007 à 21:20
Salut!
Je pense qu'en mettant les mots interdits dans un tableau et en utilisant array_diff (http://ch2.php.net/manual/fr/function.array-diff.php), tu devrais arriver à ce que tu veux... Et si ce n'est pas le cas, n'hésite pas à demander! :-)

@++

R@f
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
6 nov. 2007 à 12:07
Bonjour,

Tout d'abord félicitations à Coockiesch qui suit formidablement sa source. 10/10

Je cherche à la faire évoluer en lui interdisant de rechercher certains mots tels que le, la, les, du, de etc..

Exemple, si je tape dans la recherche "La faim dans le monde", il faudrait qu'il suprrime les mots "la, dans, le" et fasse la recherche sur "faim, monde".

Est-ce que cela peut se faire directement à la récupération des donnés du champ search_text? Si oui comment peut-on procéder?

Merci beaucoup d'avance,

Straw
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
3 sept. 2007 à 18:19
J'ai detourné le probleme en recodant cette partie

Mais maintenant je n'arrive pas a integrer ton systeme de numerotation de page
http://www.phpcs.com/codes/NUMEROS-PAGE_24067.aspx

Peut tu me donner un coup de main ?

Car en effet je ne comprend pas comment utiliser getQuery

exemple de requete comment je doit le remplire ?
Comme ceci ? :
$result = mysql_query($sql['select'],$link);

Encore merci
Désoler pour le derangement

Sébastien
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
3 sept. 2007 à 15:42
Bon je suis confronté a un second problemme

J'ai cette erreur :
Warning: mysql_fetch_array(): 50 is not a valid MySQL result resource in /home/s.duboc/www.magaroticx.com/htdocs/search.php on line 51

et au lieu de m'afficher tous les resultats, il ne m'en affiche qu'un

Ligne 51 : while($row = mysql_fetch_array($result))

Dans le while il y a sa :

while($row = mysql_fetch_array($result))
{
if (isset($_POST['note']) AND isset($_POST['video_id']) AND isset($_POST['ip']))
{
$trouve = false;

$reponse = mysql_query('Select ip From ip_votes Where video_id='.$_POST['video_id'].'');
while ($donnees = mysql_fetch_array($reponse) and !$trouve)
{
if ($donnees['ip'] == $ip)
$trouve=true;
}

if ($trouve)
$deja_vote = 'Tu as déjà voté.';
else
{
$reponse = mysql_query('Select note, nb_notes From streaming Where id='.$_POST['video_id'].'');
$donnees = mysql_fetch_array($reponse);
$nouvelle_note = ($donnees['note']*$donnees['nb_notes']+$_POST['note'])/($donnees['nb_notes']+1);

mysql_query('Update streaming Set note='.$nouvelle_note.', nb_notes=nb_notes+1 Where id='.$_POST['video_id'].'') or die('Impossible de mettre a jour la BDD streaming : ' . mysql_error());
mysql_query("INSERT INTO ip_votes VALUES ('', '". $_POST['video_id'] ."', '". $_POST['ip'] ."')") or die('Impossible de fair une nouvelle entree dans la table ip_votes : ' . mysql_error());

$vote_ajoute = 'Vote pris en compte.';
}
}

// Affiche le contenue
echo '
';
echo ''.$row['titre'].'
';

// On enlève les éventuels antislash PUIS on crée les entrées en HTML (
)
$contenu = nl2br(stripslashes($row['contenu']));
echo $contenu;

echo '';

echo $row['nb_notes'];
if($row['nb_notes'] <= 1) {echo ' vote';}
if($row['nb_notes'] > 1) {echo ' votes';}

echo ', ';

if($row['id'] == $_POST['video_id'])
{
echo $deja_vote;
echo $vote_ajoute;
}

echo ', ';

if($row['note'] == 0) {echo '';}
if($row['note'] == 1) {echo '';}
if($row['note'] == 2) {echo '';}
if($row['note'] == 3) {echo '';}
if($row['note'] == 4) {echo '';}
if($row['note'] == 5) {echo '';}

echo '
';


//echo '<form method="post" action="'.$_SERVER["REQUEST_URI"].'">';
//echo '';
//echo '';
//echo '';
//echo '';
//echo '';
//echo '';
//echo '';
//echo '';
//echo '

';
//echo '</form>';

echo '';
echo 'le ';
echo date('d/m/Y à H\hi', $row['timestamp']);
echo '';

echo '
';

// Affichage de la PUB
include($DOCUMENT_ROOT.'/pub.php');



//else echo 'Pas d\'enregistrements dans cette categorie...';
mysql_free_result($result);
echo '
';
// si le nombre d'enregistrement à afficher est plus grand que $nombre
if($total > $nombre)
{
// affichage du lien precedent
displayPreviousButtons($limite,$total,$nombre,$page,$cat);

// affichage des liens vers les pages
affichePages($nombre,$page,$total,$cat);

// affichage du lien suivant
displayNextButtons($limite,$total,$nombre,$page,$cat);
}
echo '
';
}

Merci
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
3 sept. 2007 à 14:41
Pas de pb! :)

@++

R@f
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
3 sept. 2007 à 14:40
Désoler, sa marche enfaite je renvoyer le fichier de backup sur mon ftp au lieu du modifier...

Merci
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
3 sept. 2007 à 14:26
Au chargement de la page, $_POST['submit'] n'est pas défini, donc ce que tu met dans le if n'est pas exécuté...

Envoie moi ton email ou msn par MP, je peux éventuellement regarder ton code...

@++

R@f
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
3 sept. 2007 à 14:23
Non c'est toujours pareil :(



Oui il a bien submit a name
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
3 sept. 2007 à 14:06
Non:
if( isset( $_POST['submit'] ) )
{
// requete et affichage des résultats
}

Il faut que ton bouton submit ait son name à "submit"

Ca joue comme ca? :)

@++

R@f
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
3 sept. 2007 à 14:01
J'y arrive pas, je debute en php.

Voici ce que j'ai mis :

if (isset( $_POST['submit'] == true)
{
La requette
}

Merci pour ton aide
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
3 sept. 2007 à 12:27
Ca, c'est à toi de pas faire de recherche si rien a été entré...
Si ton bouton submit, s'appelle submit, tu ne dois pas faire de recherche si !isset( $_POST['submit'] ) ou si le champ de recherche est vide! :)

@++

R@f
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
3 sept. 2007 à 12:26
Ok merci sa marche, le problemme c'est que des que je charge la page il me fait une recherche automatique sur toute la base de donner
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
2 sept. 2007 à 21:41
Salut!
Les champs que tu récupères sont contenu dans le 2e paramètre et toi tu ne récupères que id... ;-)

@++

R@f
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
2 sept. 2007 à 21:07
Voici le code :

<?php
// On recupère les fichier necessaire
include "header.php";
include "search.class.php";
?>



Recherche :

<form action="search.php" method="post">


Rechercher tous les mots

Rechercher un de ces mots

Rechercher l'expression exacte



</form>




<?php
// création d'objet
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );

$sql = $s->mkQuery( 'streaming', 'id', array( 'titre', 'contenu' ), 'id', 'desc', 0, 10 );

// exécution de la requête
$result = mysql_query($sql['select'],$link) or die('Erreur MySQL'); // si erreur

while( $row = mysql_fetch_assoc( $result ) )
{
// affichage normal ici (titre et texte récupérés), genre:
echo '-----';
echo $row['titre'];
echo '
';
echo $row['contenu'];
echo '
';
}


?>

Cela ne m'affiche rien mis appart les tirer, et si j'ai 3 resultat il y aura 3 ligne de tirer
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
2 sept. 2007 à 10:32
Salut!
Quels résultats? Les résultats de la recherche?

C'est à toi de faire cet affichage, le script prépare seulement la requête...

@++

R@f
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
2 sept. 2007 à 00:22
Salut

J'ai mon site qui est heberger sous php4 et je voudrais convertire le script php5 vers php4

J'ai suivie les modifs de _klesk, cela ma enlever les erreur, mais il ne m'affiche pas les resultat, meme si je c'est qu'il effectue bien la recherche puis qu'il m'afffiche les tirer que j'ai mis dans la boucle (2 tirer egal 2 resultats :D, Mais on voie pas les resultat :/)

Merci par avance
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
23 août 2007 à 16:16
Merci pour ce fantastique code !
acppca Messages postés 3 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 juillet 2007
24 juil. 2007 à 21:36
ok, c'est bien ce que je pensais, je suis à la masse ;)

merci
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
24 juil. 2007 à 21:17
Yop!
Le deuxième paramètre de la fonction est la liste des champs à récupérer... Si tu ne récupère que id, tu ne pourras afficher ni le titre, ni le contenu ;-)

@++

R@f
acppca Messages postés 3 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 juillet 2007
24 juil. 2007 à 21:02
voilà
j'ai réussis a corriger cette erreur ...
mais mnt le nombre de news s'affiche mais pas le contenue

voici le code d'affichage :


<?php
include_once './mysql.inc';
connexion_DB('BASE_TEST');


$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'content' ), 'id', 'desc', 0, 10 );
$result = mysql_query($sql['select']) ;// si erreur

while( $row = mysql_fetch_assoc( $result ) )
{
// affichage normal ici (titre et texte récupérés), genre:
echo 'Titre: ' , stripslashes( $row['titre'] ) , '
' , stripslashes( $row['content'] ) , '
<hr />';
}

?>
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
24 juil. 2007 à 19:07
Yop!
Indique nous quelle est la ligne 148 stp, :)

@++

R@f
acppca Messages postés 3 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 juillet 2007
24 juil. 2007 à 13:06
Bonjour à tous,
voilà j'ai un probléme, il m'affiche en permanence une erreur...


voici le code php (recherche.php) :
<?php
class dbSearch
{
// mots et expressions à chercher
private $words;
// séparateur
private $sep;
// option de recherche
private $option;
// nombre de mots
private $count_words;
// clause where
private $query_where = '';
public function __construct( $search_option, $search_text )
{
$this->query_prepared = 1;
// option de recherche
$this->option = $search_option;
// recherche en ET
if( $this->option == 'all' )
{
$this->sep = ' AND ';
$this->option = 1;
$this->words = explode( ' ', addslashes( $search_text ) );
$this->count_words = count( $this->words );
}
// recherche en OU
else if( $this->option == 'one' )
{
$this->sep = ' OR ';
$this->option = 2;
$this->words = explode( ' ', addslashes( $search_text ) );
$this->count_words = count( $this->words );
}
// phrase exacte
else
{
$this->option = 0;
$this->words[0] = addslashes( $search_text );
}
}
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
{
$this->query_where = '';

if( !is_array( $champs ) )
$champs = array( $champs );
$count_champs = count( $champs );
// si recherche en ET ou OU
if( $this->option )
{
for( $i = 0; $i < $this->count_words; $i++ ) // boucle sur les mots
{
// si pas première itération
if( $i )
$this->query_where .= $this->sep;
$this->query_where .= '( ';
for( $j = 0; $j < $count_champs; $j++ ) // boucle sur les champs
{
if( $j )
$this->query_where .= ' OR ';
$this->query_where .= $champs[ $j ] . ' LIKE \'%' . $this->words[ $i ] . '%\'';
} // for( $j = 0; $j < $this->count_words; $j++ ) // boucle sur les champs
$this->query_where .= ' )';
} // for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les mots
}
else // recherche phrase exacte
{
for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les champs
{
if( $i )
$this->query_where .= ' OR ';
$this->query_where .= $champs[$i] . ' LIKE \'%' . $this->words[0] . '%\' ';
} // for( $i = 0; $j < $count_champs; $i++ ) // boucle sur les champs
} // else // recherche phrase exacte

// construction de la requête finale
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );

if( !empty( $order ) )
$sql['select'] .= ' ORDER BY ' . $order . ' ' . $sens;
$this->query_where = $sql['select'];
if( $limit_nb )
$sql['select'] .= ' LIMIT ' . $limit_start . ', ' . $limit_nb;

return $sql;
}

public function getQuery()
{
return $this->query_where;
}
}
?>

<?php
include_once './mysql.inc';
connexion_DB('BASE_TEST');

$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'content' ), 'id', 'desc', 0, 10 )
$result = mysql_query($sql['select']); // si erreur
while( $row = mysql_fetch_assoc( $result ) )
{
// affichage normal ici (titre et texte récupérés), genre:
echo 'Titre: ' , stripslashes( $row['titre'] ) , '
' , stripslashes( $row['content'] ) , '
<hr />';
}
?>



VOilà, l'erreur :
Parse error: syntax error, unexpected T_VARIABLE in /home/chm2/www/recherche/recherche.php on line 148

or je ne vois rien de spécial sur cette ligne, ni ailleurs...
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
17 juil. 2007 à 18:19
Yop!
Passes par des str_replace avec des arraym c'est bcp plus pratique... Par ex:
$text = str_replace( array( 'á', 'à' ), array( 'a', 'a' ), $text );

@++

R@f
_klesk Messages postés 70 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 20 août 2008
17 juil. 2007 à 00:01
Bon bien je propose une amérloration, mais c'est une demande, je n'y arrive pas.

J'aimerait supprimer les accents dans les mots clée car ma BDD n'en possède pas.

j'ai essayer
if( $this->option == 'all' )

{

$this->sep = ' AND ';

$this->option = 1;

$search_text = ereg_replace("[áåâäàã]","a",$search_text);
$search_text = ereg_replace("ç","c",$search_text);
$search_text = ereg_replace("[êéèë]","e",$search_text);
$search_text = ereg_replace("[íîïì]","i",$search_text);
$search_text = ereg_replace("[óôöòõ]","o",$search_text);
$search_text = ereg_replace("[ûüùú]","u",$search_text);
$search_text = ereg_replace("ñ","n",$search_text);
$search_text = ereg_replace("[ÿý]","y",$search_text);

$this->words = explode( ' ', addslashes( $search_text ) );

...

sans succès.

quelqu'un pour m'aider ?
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
16 juil. 2007 à 08:05
Oui, ca joue!
Merci pour tes commentaires, :)

@++

R@f
_klesk Messages postés 70 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 20 août 2008
16 juil. 2007 à 00:00
Bon en cherchant un peu, il me semble avoir trouver.

Que l'on me corrige si nécessaire, mais pour les test que j'ai fait ca fonctionne.

Pour la rendre compatible php4 il faut remplacer :

private par -> var.
public function par -> function
function __construct par -> function dbSearch (le nom de la classe)

Je ne suis pas doué avec les class mais grace a ces modifications la classe en compatible PHP4.

Donc 10/10 :D

@++
_klesk Messages postés 70 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 20 août 2008
15 juil. 2007 à 23:29
Bonjour,
D'abord ton code c'est exactement ce que je cherche, j'ai tester sur un server local sous php5 IMPECABLE.

Le probleme c'est que mon server distant lui est en php4 et comme dit plus haut bha ca marche pas (et je comfirme ^^)

quel sont les modifications (si modification possible il y a) pour le faire tourner sour php4 car c'est la seule source qui me convient pour ce que je veux;

merci a vous.

je met 9/10 car je peux pas le faire tourner ;)
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
10 juil. 2007 à 11:50
Bonjour,

Pouvez vous arranger cette source car je ne comprend rien il y a plein * et puis je ne trouve pas ou entrer les paramètre de connexion MySql.

Quelqu'un pourrez t?il me redonner le code arranger pour les debutant.

Merci
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
13 juin 2007 à 19:33
Super merci de la rapidité de ta réponse ça fonctionne nikel!

@ plouche !

Straw
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
13 juin 2007 à 19:14
Yop!
$row = mysql_fetch_row( $rs3 );
echo $row[0];

@++

R@f
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
12 juin 2007 à 18:28
J'ai un tout piti soucis au niveau du count..

J'aimerais juste pouvoir afficher le nombre de résultats obtenus : voici mon code :

$rs3 = mysql_query($sql['count']) or die(mysql_error());;
echo "
" . $rs3;

Et voici le résultat obtenu :

Resource id #11

Comment faut-il exécuter la requete pour récupérer le nombre de résultats obtenu alors?
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
24 mai 2007 à 19:27
Yop!
Avec mysql_error( ) affiche l'erreur... T'es sûr que ca vient pas de ton between?

@++

R@f
toufouk Messages postés 20 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 23 août 2010
23 mai 2007 à 10:54
J'ai reussi a resoudre le probleme ci-dessu mais un autre probléme est survenue: lorsque j'affiche ma requete j'ai:

request_id FROM emilie_copie_incidents WHERE (( description LIKE '%log%' OR short_description LIKE '%log%' ) AND ( description LIKE '%file%' OR short_description LIKE '%file%' )) AND ( incident_date BETWEEN 2007-04-18 15:52:04 AND NOW() )Erreur MySQL

JE ne vois pas d'ou viens le probleme sachant que j'ai repris :

Yop!
Essaye de:

Modifier
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
En
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb, $query_sup = '' ) // $query_sup contiendra la clause supplémentaire

Et:
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );
En
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE (' . $this->query_where . ') AND (' . $query_sup . ')', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE (' . $this->query_where . ') AND (' . $query_sup . ')' );


Cordialement
toufouk Messages postés 20 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 23 août 2010
23 mai 2007 à 09:49
Re-Bonjour,

j'ai un petit probleme: j'ai bien rajouté ce que tu m'as dit au dessus coockiesch et j'ai mis :

'incident_date between $resultat[0] and NOW()
and application_external_id = $app'

Cependant j'ai cette erreur:
Parse error: syntax error, unexpected T_VARIABLE in F:\Intranet\Coralie_Dev\emilie\inc_multi.php on line 247

Est-ce que tu aurais une idée opur régler ce probleme.
Je te remercie d'avance.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
22 mai 2007 à 19:49
Yop!
Essaye de:

Modifier
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
En
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb, $query_sup = '' ) // $query_sup contiendra la clause supplémentaire

Et:
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );
En
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE (' . $this->query_where . ') AND (' . $query_sup . ')', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE (' . $this->query_where . ') AND (' . $query_sup . ')' );

@++

R@f
toufouk Messages postés 20 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 23 août 2010
22 mai 2007 à 14:34
Bonjour,

voila tut d'abord je tenais a te remecier pour ce trés bon code qui mérite un bon 9/10.
Une question, j'aimerais rajouté dans ce code une autre clause dans le where à savoir un date between une_date and une_autre_date./

J'ai essayé de reprendre ce qui a été dit. merci de m'aider .
toufouk Messages postés 20 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 23 août 2010
21 mai 2007 à 15:42
RIEN A REDIRE 10/10.
amirouche17 Messages postés 2 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 10 mai 2007
10 mai 2007 à 11:47
Salut encore, j'ai trouvé des problemes dans la pagination des résultats de la recherche, j'ai un code qui fait la pagination d'une façon stable avec une table prédéfint,et j'ai ce super code de coockiesch, mais j'arrive pas exploiter les deux codes"together".
j'attends l'accusé d'acceptation de ta part M.coockiesch dans ce volet, et puis je t'envoie le code de pagination.
voila mon adresse E-mail amirouche17@yahoo.fr
merci d'avance.
amirouche17 Messages postés 2 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 10 mai 2007
10 mai 2007 à 11:36
Hi M.coockiesch, Je pense que tu ne mérite pas la note 9.75 mais tu mérite la note 10, car tout simplement,ça a super marché, c'est un code impéccable, merci infinnnnniment.
cs_Straw Messages postés 33 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 25 août 2008
8 mai 2007 à 11:48
Hello,

Excellente source, elle fonctionne "presque" parfaitement chez moi... La requete renvoie des résultats, la boucle passe bien, mais l'affichage de ses données ne fonctionne pas -_-'

En fait, l'ID s'affiche correctement, mais pas les autres champs ?? Pourtant les noms correspondent bien.. Voici le code d'affichage :

$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'contenu' ), 'id', 'desc', 0, 10 );
// exécution de la requête
$result = mysql_query( $sql['select'] )
or die( 'Erreur MySQL' ); // si erreur

while( $row = mysql_fetch_assoc( $result ) )
{
$titre = stripslashes( $row['titre'] );
$contenu = stripslashes( $row['contenu'] );
$id = $row['id'];
// affichage normal ici (titre et texte récupérés), genre:
echo 'Titre: ' , $id , $titre , '
' , $contenu , '
<hr />';
}


$id s'affiche correctement, mais $titre et $contenu ne s'affichent pas O_o !
titre et contenu sont en Type 'Text' et en interclassement 'Latin1_swedish_ci', je ne sais pas si cela influence l'affichage des résultats..

Merci pour votre aide,

Straw
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
7 avril 2007 à 18:48
Salut!
C'est que votre requête ne renvoie aucun résultat... Etes vous sûr que les champs dans lesquels vous effectuez la recherche contiennent bien les mtos recherchés?

@++

R@f
kawther84 Messages postés 321 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 24 mars 2022
5 avril 2007 à 11:45
salut,
j'ai testé votre cod , il me parrait trés intéressant, mais domage j'ai rien obtenue come résultat malgré que j'ai fais l'affichage comme suit:

$result = mysql_query( $sql['select'] )
or die( 'Erreur MySQL' ); // si erreur

while( $row = mysql_fetch_assoc( $result ) )
{
echo "test";
}
SVP pouvez vous m'aider.
Merci
Epoc22 Messages postés 198 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 14 novembre 2008 1
24 janv. 2007 à 16:54
Yeah salut tout le monde,
coockiesch ta source est nickel c'est exactement ce que je cherchait merci ;-) Pas une seule erreur !
10/10
@++
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
22 nov. 2006 à 14:41
Ton serveur tourne avec php4 le script est en php5... .. .

@ tchaOo°
R3dDragon Messages postés 62 Date d'inscription dimanche 30 juillet 2006 Statut Membre Dernière intervention 14 avril 2009
22 nov. 2006 à 13:48
Moi, j'ai aussi un problème...
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\search\index.php on line 32
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
27 sept. 2006 à 10:41
ok super merci beaucoup
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 sept. 2006 à 18:36
Je ne comprends pas: c'est le code de pagination qui va en fin de script... Et pas l'inverse:

- inclusion du fichier de la classe de recherche
- récupération infos pagination
- création de la requête
- exécution requête
- affichage
- pagination

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 14:18
Vous aviez raison elle est définie mais auquel le script n'avait pas accès je suis désolé !!! cela marche !
J'ai une dernière question je voudrai intégrer ton script de pagination mais je ne sais pas à quel endroit dans ton script de pagination mettre ce bout de code qui se trouve donc dans le code de ci-dessus.
Merci encore de ta patience

while( $row = mysql_fetch_assoc( $result ) )
{
// affichage normal ici (titre et texte récupérés), genre:
echo 'Titre: ' , stripslashes( $row['title'] ) , '
' , stripslashes( $row['what'] ) , '
<hr />';
}
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 sept. 2006 à 12:13
Ben non.... Ou alors elle est définie à un endroit auquel le script n'a pas accès!

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 11:51
Mais oui elle est définie
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
26 sept. 2006 à 11:12
Il est normal si tu ne définis nul part $date que php t'affiche que la variable $date est indéfinie... il va pas l'inventer... .. .

@ tchaOo°
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 10:43
Ok voila j'ai fait quelques tests si je remplace $_POST['dates'] par $dates il m'affiche à nouveau une erreur de variable pas définie
cela affiche
si je fais un echo cela m'affiche ceci mais on dirait qu'il ne pas en compte le fait que j'ai saisi une date

SELECT id,title,what FROM event WHERE ( title LIKE '%%' OR what LIKE '%%' OR whereag LIKE '%%' ) AND date_debut='' ORDER BY id desc LIMIT 0, 10
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 sept. 2006 à 10:06
- je ne mettrai pas $_POST['dates'] directement en paramètres pcq si l'utilisateur fait une petite erreur, ca va foirer... Tu devrais vérifier cette valeur!

Après le
$sql = $s->mkQuery( ... );
echo $sql['select'] . '

' . mysql_error();
Et tu peux nous dire ce que ca affiche!

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 09:51
Hello j'ai modifier
$sql = $s->mkQuery( 'event', 'id,title,what,date_debut', array( 'title', 'what', 'whereag','dates' ), 'id', 'desc', 0, 10, $dates );
par et je crois que c'est bon
$sql = $s->mkQuery( 'event', 'id,title,what,date_debut', array( 'title', 'what', 'whereag','dates' ), 'id', 'desc', 0, 10, $_POST['dates'] );

par contre je crois que c'est à ce niveau qu'il y a un problème
car maintenant j'ai un message d'erreur ERREUR MYSQL

$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.dates.'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut=\''.dates.'\'' );

comment peut-on afficher la requete ?
j'ai essayer ceci $s->getQuery; mais cela n'affiche rien !!

as-tu une autre idées ?
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 sept. 2006 à 09:39
Deux trucs:
$sql = $s->mkQuery( 'event', 'id,title,what,date_debut', array( 'title', 'what', 'whereag','dates' ), 'id', 'desc', 0, 10, $dates );
// à ce moment là, ton $dates, t'es sûr qu'il es bien défini? Pcq ca, je peux rien y faire, :-D
Essaie:
echo $dates;

Ensuite:
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.dates.'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.dates.'' );
- le '' final ne sert à rien (inutile d'ajouter rien à une chaîne)
- je suis pas sûr mais faut peut-être entourer la date de '' -->
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.dates.'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut=\''.dates.'\'' );

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 09:33
Hello merci mais j'ai toujour une erreur j'ai fais comme tu dis

voici le script en entier

function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb,$dates )
{
$this->query_where = '';

if( !is_array( $champs ) )
$champs = array( $champs );

$count_champs = count( $champs );

// si recherche en ET ou OU
if( $this->option )
{
for( $i = 0; $i < $this->count_words; $i++ ) // boucle sur les mots
{
// si pas première itération
if( $i )
$this->query_where .= $this->sep;

$this->query_where .= '( ';

for( $j = 0; $j < $count_champs; $j++ ) // boucle sur les champs
{
if( $j )
$this->query_where .= ' OR ';

$this->query_where .= $champs[ $j ] . ' LIKE \'%' . $this->words[ $i ] . '%\'';

} // for( $j = 0; $j < $this->count_words; $j++ ) // boucle sur les champs

$this->query_where .= ' )';
} // for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les mots
}
else // recherche phrase exacte
{
for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les champs
{
if( $i )
$this->query_where .= ' OR ';

$this->query_where .= $champs[$i] . ' LIKE \'%' . $this->words[0] . '%\' ';
} // for( $i = 0; $j < $count_champs; $i++ ) // boucle sur les champs
} // else // recherche phrase exacte

// construction de la requête finale

$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.dates.'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.dates.'' );

if( !empty( $order ) )
$sql['select'] .= ' ORDER BY ' . $order . ' ' . $sens;
$this->query_where = $sql['select'];
if( $limit_nb )
$sql['select'] .= ' LIMIT ' . $limit_start . ', ' . $limit_nb;

return $sql;
}

/*
getWhere()
Récupération de la clause where
Paramètres:
void
Retour:
string
*/
function getQuery()
{
return $this->query_where;
}
}
?>

<?php



// Connexion à la base de données
require_once($dirroot."/mysql.inc.php");
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );

$sql = $s->mkQuery( 'event', 'id,title,what,date_debut', array( 'title', 'what', 'whereag','dates' ), 'id', 'desc', 0, 10,$dates );




// exécution de la requête
$result = mysql_query( $sql['select'] )
or die( 'Erreur MySQL' ); // si erreur

while( $row = mysql_fetch_assoc( $result ) )
{

echo 'Titre: ' , stripslashes( $row['title'] ) , '
' , stripslashes( $row['what'] ) , '
<hr />';
}

j'ai ceci comme messge d'erreur
Notice: Undefined variable: dates in c:\program files\easyphp1-8\www\bmu\commun\agenda\rechercher.php on line 269

Notice: Use of undefined constant dates - assumed 'dates' in c:\program files\easyphp1-8\www\bmu\commun\agenda\rechercher.php on line 235

decidement je suis chiant
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 sept. 2006 à 09:22
Salut!
Oui, en fait, si tu utilises une variable date définie ailleurs dans ton script, elle n'est pas connue de la fonction...

Il te faut donc lui la donner, tu peux, par exemple, modifier:
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
En
public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb, $date )

Et quand tu fais:
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'texte' ), 'id', 'desc', 0, 10 )
Tu ajoutes date:
$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'texte' ), 'id', 'desc', 0, 10, $date )

Voilà! (et pas de pb, suis là pr ça, :) )

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 09:12
Désolé c'est encore moi laisse tomber mon dernier message la date en dur cela marche. Par contre lorsque je remplace la date en dur par une variable j'ai une erreur "Notice: Undefined variable: date "
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 08:45
Re-hello coockies
J'ai oublier de te dire que je l'ai aussi mis en dur (en prenant comme exemple de date 2006-09-12 et j'ai une "Erreur MySQL"

Voici mon code en dur
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date-debut=\'2006-09-12\'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date-debut=\'2006-09-12\'' );

A+
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
26 sept. 2006 à 08:37
Salut coockiesh,
Merci encore de ton aide je suis vraiment désolé de t'embêter mais ton code me plaît beaucoup et je voudrai vraiment le mettre en place !!!
j'ai fait comme tu m'as dit mais j'ai une erreur "Notice: Undefined variable: date "

date et mon champ input ou la personne peut rentrer une date ou pas et debut_date et mon champ dans la base de données
voici ce que j'ai fait:

$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.$date.'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND date_debut='.$date.'' );
Merci encore de ton aide
A+
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 sept. 2006 à 18:10
$sql = array( 'select' => 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );

Après: $this->query_where, tu peux ajouter qqch, par exemple:
$sql array( 'select'> 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where . ' AND champ=\'val\'', 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where . ' AND champ=\'val\'' );

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
25 sept. 2006 à 14:04
Super merci beaucoup je vais l'integrer de suite dans le code !!
J'ai une autre question concernant le script si tu veux mettre d'autre critères que 'search_text' par exemple une liste déroulante ou dois-je l'intégrer peut-on avec ton script ?
Merci encore A+
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 sept. 2006 à 12:20
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
25 sept. 2006 à 11:11
Re salut et merci beaucoup cela marche j'ai compris
Si je peux abuser si je veux mettre un système de pagination à ce code as-tu une idée ca serait vraiment sympas de ta part
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 sept. 2006 à 10:58
Si je prend le code donné en exemple:
// création d'objet
$s = new dbSearch( $_POST['search_option'], $_POST['search_text'] );

$sql = $s->mkQuery( 'news', 'id', array( 'titre', 'texte' ), 'id', 'desc', 0, 10 )

// exécution de la requête
$result = mysql_query( $sql['select] )
or die( 'Erreur MySQL' ); // si erreur

while( $row = mysql_fetch_assoc( $result ) )
{
// affichage normal ici (titre et texte récupérés), genre:
echo 'Titre: ' , stripslashes( $row['titre'] ) , '
' , stripslashes( $row['texte'] ) , '
<hr />';
}

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
25 sept. 2006 à 10:26
Je veux afficher le résultat de la requête tout simplement mais je ne sais pas comment le faire avec cette classe (c'est du texte)
merci encore de ton aide
as-tu un exemple ?
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 sept. 2006 à 10:13
Salut!
Ca dépend de ce que tu récupères... Tu peux nous dire qu'est ce que tu recherches (texte, images, ...) et quels sont les champs que tu récupères? :)

@++

R@f
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
25 sept. 2006 à 09:57
Bonjour à tous je trouve ce code sympas mais je n'arrive pas à afficher le résultat pourriez-vous m'aider ou me donner un coup de main ?
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 sept. 2006 à 08:43
Salut!
Tu peux regarder ça: http://www.phpfrance.com/tutoriaux/index.php/2005/03/08/19-interfacage-de-mysql-avec-php
Ou bien:
www.phpdebutant.org

Sinon tu peux rechercher sous google: tutorial mysql php

@++

R@f
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
24 sept. 2006 à 15:05
Bon oki je vai perceverer mais connai tu un site ou ya des tuto de requette car je ne sais pas en faire
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
24 sept. 2006 à 14:09
Mais c'est le but de cette source de créer la requete... .. !

@ tchaOo°
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
24 sept. 2006 à 11:47
Salut je sais que j'abuse peu etre mais qui pourai m'expliquer commen crée une requette pour utilisé se script car j'essaye depuis quelque semaine mais j'y arrive pas

merci d'avance
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
8 sept. 2006 à 16:57
BTAJV...

Pour effectuer une recherche en base de données il faut construire une requete (en l'occurence de recherche)... ensuite cette requete doit être executée puis le résultat obtenu doit être traité pour l'affichage... donc trois étape... .. .

-1- Création de la requete en fonction des mots cherchés (ce script)
-2- Exectution de la requete/récupération du résultat ($result = mysql_query('TA REQUETE');
-3- traitement en vue de l'affichage (via une boucle)

Voili voilou... .. .

@ tchaOo°
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
8 sept. 2006 à 16:16
Salut!
Dsl, mais je manque de temps ces jours pour t'expliquer tout ça... Je te proposer de regarder pour un tuto MySQL... Ensuite, tu sauras effectuer des requêtes et afficher les résultats!

@++

R@f
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
8 sept. 2006 à 15:55
JE doit etre un peu nul car tlm te dit que c bien et moi je ne comprend pas commen elle fonctionne je ne dit pas quelle est nul mais bon je n'arrive pas a la faire fonctionner donc si tu pouvai me donner un coup de main voila mon adresse MSN :
BTajv@hotmail.com

Merci d'avance CORTANA
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
8 sept. 2006 à 15:21
Non, cette requête est à passer en paramètre à mysql_query... Une requête est... une requête! :-D après son exécution, si tout se passe bien, tu auras les résultats, que tu pourras afficher! :)

@++

R@f
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
8 sept. 2006 à 14:52
C a dire "il crée la requête de recherche" cette requette contien le resultat de la recherche ??? en gros si j'ai bien compri
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
8 sept. 2006 à 14:37
Salut!
Le résultat ne s'affiche pas: il crée la requête de recherche... Libre à toi ensuite d'afficher les résultats comme tu le veux! ;)

@++

R@f
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
8 sept. 2006 à 12:44
Excuse moi j'abuse peu etre mais tu aurai pas un endroit ou je pourai le voir en fonctionement se script juste pour voir commen les resultat saffiche
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
8 sept. 2006 à 12:43
Ah alors la ton code m'interesse enormeman et si sa fonctionne super bien comme tlm le dit alors c génial.
Je te remerci d'avance.

Cortana
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
8 sept. 2006 à 12:41
Salut!
Il cherche dans les champs de la bdd... :)

@++

R@f
BTAJV Messages postés 145 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 17 avril 2008
8 sept. 2006 à 11:17
Salut
Moi je voulai juste savoir classe cherchai dans un champ de la BDD ou S qu'il cherche un chanp ????

Sinon se code a l'air tres tres interesen
dom_ponge Messages postés 47 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 septembre 2006
9 août 2006 à 03:06
Merci Malalam.
Et là je met 9/10.(Le code pourrai faire la recherche lui même et ne pas donné que la requète).
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
4 août 2006 à 10:05
Malalam > Merci
DOM_PONGE > Tu peux tjs demander des infos, si ça bug, :)

@++

R@f
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 août 2006 à 08:53
J'ai supprimé ta note, DOM_PONGE :-) Le mal est réparé ;-)
dom_ponge Messages postés 47 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 septembre 2006
4 août 2006 à 04:44
Oops dsl j'ai mal fait.... c'est à cause que le code est fait pour PHP5 et je n'ai que PHP4...
dom_ponge Messages postés 47 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 septembre 2006
4 août 2006 à 03:56
0/10
Dsl mais je n'ai pas réussi à le faire marché.
Il y a que des bugs.
Le premier bug étais du à cause des déclarations de variable.... Et il me semble que les enlevé ce n'est pas grave.Je les aient mi en commentaire et une autre érreur est survenu et venais d'une fonction.

Si quelqu'un peut m'aidé.
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
26 juil. 2006 à 23:34
"Le plus simple pour ne pas avoir ce petit problème c'est d'ouvrir la connection mysql en début de fichier et de la fermer en fin de fichier !"
Si dans ta page, tu n'as pas besoin de SQL, alors c'est une connection qui ne sert à rien.
Gain ? Du temps et de la mémoire.

Voila pourquoi on n'ouvre sa connection SQL que quand on en a besoin.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 juil. 2006 à 13:03
Oki, merci, :)
Mais vais laisser comme ça, que chacun ait le choix de se connecter ou pas avant... :)

@++

R@f
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 juil. 2006 à 12:53
Pas mal en tous cas, le code :-)

addslashes () suffit...mais ne suit pas les évolutions de mysql. mysql_real_escape_string (), elle, les suit. Du coup, on peut un jour se retrouver avec un addslashes () qui ne suffit plus.
En tout état de cause, mysql_real... sera plus performant et plus sûr car dédié à mysql.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
26 juil. 2006 à 11:45
Merci, :)
Petite question: addslashes suffit ou pas???

@++

R@f
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
26 juil. 2006 à 09:54
Le plus simple pour ne pas avoir ce petit problème c'est d'ouvrir la connection mysql en début de fichier et de la fermer en fin de fichier !

Moi ce que j'aime bien dans ta source c'est les commentaires !

Beau boullot
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
26 juil. 2006 à 09:30
"Pas besoin de connection active pour mysql_real_escape_string()..."

Sisisi, j'en ai fais les frais moi aussi :)
C'est pour ca que faut s'arranger d'ouvrir la connection au moment de faire l'escape_string() :)
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 juil. 2006 à 22:23
Ben, je viens de tester et....
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\www\sites\aide\index.php on line 134

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\www\sites\aide\index.php on line 134

Comment on change ça?

@++

R@f
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
25 juil. 2006 à 21:10
Pas besoin de connection active pour mysql_real_escape_string()... .. . ;o)

@ tchaOo°
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
25 juil. 2006 à 20:09
Salut!
Je passe par addslashes et non par mysql_real_escape_string car je n'ouvre pas de connection MySQL...

Je vais mettre ça à jour de suite, merci!

@++

R@f
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
25 juil. 2006 à 18:34
Bonjour,

un petit truc me chagrine avec ta classe, c'est que tu utilises une récupération d'information via $_POST.

pourquoi ne pas les passer en parametre à ton constucteur :

public function __construct($word, $option){
$this->word = $word;
$this->option = $option;
}

et lors de l'appel de ta classe faire :

$oSearch = new dbSearch($_POST['word'], $_POST['option']);

les termes utilises doivent etres incorrect car la flemme de faire du scrolling.
je passe le fait qu'il faille vérifier les variables $_POST ;

fais tu attention au caractères spéciaux type % _, tu devrais utilisé la fonction mysql_real_escape_string et dérivé
Rejoignez-nous