Accueil > Forum > > > > recherche avec php5
recherche avec php5
mercredi 16 septembre 2009 à 11:03:28 |
recherche avec php5

am1ra2
|
bonjour,
Bonjour,
j'ai essayé de faire la partie recherche que j'ai réalisé avec le php5(orinté objet)et comme je suis débutante pour travailler avec php5 j'ai pas trouvé une bonne résultat toiujours il m'affiche une page vide (pas de recherche)
voici le code que j'ai réalisé:
class Search
{
private $x;
private $t;
function _construct($x,$t)
{
$this->$x=$x;
$this->$t=$t;
}
function requeteselect($x)
{
//requete fait la jointure entre les tables de la base de donné
//et cherche les inforamations qui correspond à un mot entrer
$z="select groupe.id_groupe
from (utilisateur,utilisateur_groupe,groupe,sujet_groupe,sujet) where
(utilisateur.id_utilisateur = utilisateur_groupe.id_utilisateur) and (utilisateur_groupe.id_groupe = groupe.id_groupe) and (groupe.id_groupe = sujet_groupe.id_groupe) and (sujet_groupe.id_sujet = sujet.id_sujet)
and (utilisateur.nom_utilisateur like '%".$this->x."%' or utilisateur.prenom_utilisateur like '%".$this->x."%'
or utilisateur.adresse_utilisateur like '%".$this->x."%' or utilisateur.description_utilisateur like '%".$this->x."%' or groupe.nom_groupe like '%".$this->x."%' or groupe.description_groupe like '%".$this->x."%' or sujet.nom_sujet like '%".$this->x."%')";
$q=mysql_query($z)or die(mysql_error());
return $q;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function detailselect($t)
{
//requete de selection des inforamtions concernant les identificateurs qui se trouve dans $t
$q=mysql_query("select * from (utilisateur,utilisateur_groupe,groupe,sujet_groupe,sujet) where utilisateur.id_utilisateur ='".$this->t."' and utilisateur_groupe.id_groupe ='".$this->t."' and groupe.id_groupe ='".$this->t."' and sujet_groupe.id_sujet ='".$this->t."' and sujet.id_sujet ='".$this->t."'")
or die(mysql_error());
return $q;
}
}
class recherche extends Search
{
private $phrase;
public function _construct($mot)
{$this->phrase=$mot;
}
//fonction qui permet l'affichage selon le nombre de page et retourne la taille de tableau
function affich($r,$pg)
{
$i=4*($pg-1); //formule permet de recuperer le nombre d'information par page
for($k=$i;$k<($i+4);$k++)//parcours de nombre d'enregistrement dans la page
{
if(isset($r[$k]))//verification si le tableau existe ou non à chaque enregistrement
{
echo $r[$k].'<br>';//affichage de contenu du tableau
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function explodephrase($ph) //diviser la phrase en des mots et retourne un tableau de mots
{
$php = eregi_replace("[ ]+", " ",$ph); //remplacer un ou plusieurs espaces par un seul espace
if ($ph[0]=' '){$ph[0]=' ';}//vérification s'il ya un espace au debut de la phrase
$i=strlen($ph);//retourne la longueur de la phrase
if ($ph[$i-1]=' '){$ph[$i-1]=' '; //s'il ya deux espaces on les remplace par un seul espace
}
$mot=explode(" ",$php);//fonction permet d'éviter les espaces dans une phrase et retourne un tableau de mot
return $mot;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//fonction qui retourne un tableau des identificateurs de la base de donné qui convient à un mot entrer
function requetesel($x)
{
$i=0;
foreach($x as $m)//parcours du tableau de mot
{
$q=recherche::requeteselect($m);//appel à la fonction qui contient la requete de selection des identificateurs
while($row=mysql_fetch_array($q))
{
$tab1[$i]=$row[0];//on stocke dans un tableau les identificateurs de la requete
$i++;
}
}
if (isset($tab1)){return $tab1;}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//fonction qui retourne un tableau détaillé à partir d'un identificateur de la base de donné
function detail($t)
{
$i=0;
while(isset($t[$i]))//vérification si le tableau des id existe
{
$q=Recherche::detailselect($t[$i]); //appel à la requete qui renvoie les inforamtions concernant les identificateurs de tableau
$r=mysql_fetch_array($q);
//on stocke les informations des identificateurs dans un tableau
$y[$i]='<font color="blue">groupe:</font> '.$r['nom_groupe'].'<br><font color="blue">description groupe:</font> '.$r['description_groupe'].'<br><font color="blue">nom utilisateur:</font> '.$r['nom_utilisateur'].'<br><font color="blue">prenom utilisateur:</font> '.$r['prenom_utilisateur'].'<br><font color="blue"> adresse utilisateur:</font> '.$r['adresse_utilisateur'].'<br><font color="blue">description utilisateur:</font> '.$r['description_utilisateur'].'<br><font color="blue">nom sujet:</font> '.$r['nom_sujet'].'<br>'.'<br> <img height="50" widght="50" src='.$r['image_utilisateur'].'<br>';;
$i++;
}
if(!isset($y[0]))
{
$y[0]='aucun résultat';
}
return $y;//retourne un tableau détaillant les informations de chaque identificateur
}
}
je ne sais pas comment résoudre ce probleme
merci pour votre aide
|
|
vendredi 18 septembre 2009 à 18:17:18 |
Re : recherche avec php5

zpef
|
Bonjour am1ra2,
Ton code est pour le moins très obscure !
Il y a beaucoup de choses à voir...
Bon, quelques conseils pour commencer :
- utilise toujours des noms de variables qui veulent dire quelque chose : évite $x pour un mot, met plutôt $mot, c'est plus clair pour tous ceux qui vont relire ton code, et pour toi aussi
- attention à l'indentation de ton code, c'est la même chose !
- Commente tes fonctions -> regarde le documentation phpdocumentor
- Utilise un fichier par classe, c'est plus standard
Ensuite, concernant le code à proprement parler :
- J'ignore les raisons de l'existence de tes deux classes, le but n'est pas là, mais pourquoi appeler de manière statique les fonction de la classe mère ? ex : Recherche::detailselect(....
Vu le contexte, met plutôt : $this->detailselect(...
- Attention aux performances dans ta fonction "requetesel" lorsque tu appelles "requeteselect" dans un while, il vaut toujours mieux faire une seule requête SQL, c'est moins gourmand en ressources et donc, ta page se charge plus vite. Donc, pour bien faire, construit une seule requête avec tes différentes recherches de mots séparés par des "OR".
Pourrais-tu envoyer la partie du code qui exécute la recherche avec ces classes ?
A+
zpef
|
|
Cette discussion est classée dans : tableau, utilisateur, id, sujet, groupe
Répondre à ce message
Sujets en rapport avec ce message
alimenter un tableau avec des variables de session [ par pichoro ]
bonjour,voila mon probleme, je voudrais recuperer des variables et les stocker en tant que variables de session dans un tableau array();.j'ai donc un
[MySQL] Sauvegarde d'un tableau dans une table [ par cedvoyage ]
Bonjour,J'aimerais sauvegarder un tableau (multimensionnel) dans ma base MySQL.Or quand j'essaye je n'ai que 'Array' de marquer dans le champ de ma ta
probleme simple mais je bloque [ par Lump[YaNa] ]
voila actuellment sur mon site je souhaite créer une kronique sur des groupesje par une page index ou j'apelle le modules1 (pages ou sont referencer t
tableau associatif [ par tobleronne ]
Bonjour,Je souhaite renseigner un tableau a plusieurs dimensions mais rien n'y fait ?!?J'ai une boucle qui alimenterais un tableau du style : $monTabl
Souci dans mon tableau [ par slhuilli ]
Bonjour,je cherche la faille dans ce bout de code depuis p$ls jours sans trouver. Qu'elqu'un pourra peut être maider et m'expliquer . En fait, je n
BBD ajouter un IP à un ID quand on se connect. [ par dan4 ]
Je veux ajouter ou faire un update de IP quand quelqu'un se connect. et la date aussi.Ma base: wcamxLa table: authlib_logintableau 1 : idtableau 2
formulaire et liens [ par skmancuso ]
Bonjour,je suis en train de réaliser un module qui affiche certaines données de base dans un tableau. Lorsque l'utilisateur clique sur le lien représe
Problème de requête de non-correspondance [ par dphil94 ]
Bonjour a tous... Voici mon problème ;J'ai 2 tables table1 "qcm_sujet" avec les champs id, sujet, ....table2 "qcm_score" avec les champs id, sujet, no
pb_session [ par sam_12_3 ]
salut tout le monde,j'ai un probleme avec des variables de sessions.enfet jai utliser les session pour verifier si l'utilisateur qui visite le site et
Liens entre 2 tables [ par patrickrgn ]
Bonjour,J'ai une base de données avec plusieurs tables et je cherche à faire le lien entre la table sujet (id_sujet, nom_sujet, auteur_sujet, id_forum
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Forum
SELECTSELECT par hab2oo
Cliquez pour lire la suite par hab2oo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|