Page 1 sur 2
Moteur de recherche
Posté : 01 mai 2010, 16:26
par Eldouu
Bonjour,
j'aimerais savoir l'erreur , car je ne le trouve pas dans ce code.
<?php
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_articles;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
// Récupère la variable
$recherche = isset($_POST['texte_articles']) ? $_POST['titre_articles'] : '';
// la requete mysql
$sql = mysql_query(
"SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE texte_articles LIKE \"%$recherche%\".
" OR titre_articles LIKE \"%$recherche%\") or die (mysql_error());
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: '.$texte_articles.', '.$titre_articles.' <br />';
mysql_close($connexion);
}
?>
L'erreur qu'il me donne est arse error: syntax error, unexpected T_STRING in /hsphere/local/home/xxx/moteur.php on line 41
Merci
Re: Moteur de recherche
Posté : 01 mai 2010, 16:27
par Eldouu
" OR titre_articles LIKE \"%$recherche%\") or die (mysql_error()); correspond la ligne 41
Re: Moteur de recherche
Posté : 01 mai 2010, 16:40
par Dr@ke
Bonjour,
Tu te mélanges avec les guillemets ici:
$sql = mysql_query(
"SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE texte_articles LIKE \"%$recherche%\".
" OR titre_articles LIKE \"%$recherche%\") or die (mysql_error());
Après le premier
LIKE
Essaye comme ceci:
$sql = mysql_query("SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE texte_articles LIKE '%$recherche%' OR titre_articles LIKE '%$recherche%'") or die (mysql_error());
(Tu peux aussi utiliser les apostrophes pour éviter d'utiliser des anti-slashs)
Je te conseille aussi d'utiliser les doubles slashs pour les commentaires en Php au lieu des
#.
Ensuite le:
mysql_close($connexion);
Déplace le en dessous de ta boucle
While, au lieu qu'il soit à l'intérieur.
Donc après le dernier:
}
Pour info, il n'est en général pas nécessaire de fermer la connexion à la base de donnée avec
mysql_close(), car elle se ferme automatiquement à la fin du script.
Donc tu devrais pouvoir le supprimer sans soucis si c'est bien la fin du script

.
...
Re: Moteur de recherche
Posté : 01 mai 2010, 16:58
par Eldouu
Merci ça marche! sauf là j'ai un autre petit problème.
Le résultat du moteur est déjà affiché sur la page abonnement.php sans que j'aille tappé quelques choses dans la barre de recherche.
J'ai deux fichier en fait, abonnement.php et moteur.php le fichier identification.php est simplement la connexion a ma BD.
Abonnement.php :
Code : Tout sélectionner
<?php
session_start();
$_SESSION['actif']='index.php';
include 'entete.php';
include 'menu.php';
include 'contenu.php';
include 'moteur.php';
echo'
<FORM METHOD="POST">
<fieldset id="formulaire1">
<ul>
<li>Pseudo : <input type="text" class="input" name="login" size=12></li>
<li>Mot de passe : <input type="password" class="input" name="password" size=12></li></ul>';
# CONNEXION DE L'ADMIN
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_usagers;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if (isset($_POST['login']) && isset($_POST['password']) ) {
$login = strtolower($_POST['login']);
$pass_admin = strtolower($_POST['password']);
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT * FROM tp2_php_usagers WHERE pseudo_usagers = '$login';";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($pass_admin == $data['mot_de_passe_usagers']) {
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK)
{
$_SESSION['pseudo_usagers'] = $data['pseudo_usagers'];
$_SESSION['mot_de_passe_usagers'] = $data['mot_de_passe_usagers'];
echo 'Vous etes bien logué $pseudo_usagers';
}
// Envois vers un message d'erreur si le login et password est pas bon
else if (isset($_POST['login']) && isset($_POST['password'])) {
echo 'Erreur : Données entrées incorrectes';
echo '<br />';
}
mysql_close($connexion);
echo'<div id="bouton"><input id="connect" type="submit" value="Connexion" name="bouton_connexion">
</fieldset>
</FORM></div>';
//include ('accueil.php');
//include ('competence.php');
//include ('objectif.php');
//accueil();
//competence();
//objectif();
echo'<div iv="recherche"<form method="POST" id="recherche" action="">
Rechercher un mot : <input type="text" name="recherche">
<input type="SUBMIT" value="Rechercher">
</form></div>
';
recherche();
$_SESSION['patate']="coucou";
if (isset($_POST['valider']))
{
echo "<script>document.location = 'https://espacevacant.com/333-101/skelling/PHP/TP2/Pages/page_securisee.php?ses_no_id=".Session_id()."'</script>";
}
echo "<div id='texte1'><center>Avant de valider votre achat, vous devez passer dans le mode sécurisé.</div>";
echo "<br /><br /><br /><form method=POST>";
echo "<div id='bouton3'><input type=submit name=valider value='Mode sécurisé'></div>";
echo "</form></center>";
include 'footer2.php';
?>
Moteur.php
Code : Tout sélectionner
<?php
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_articles;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
// Récupère la variable
function recherche(){
$recherche = isset($_POST['texte_articles']) ? $_POST['titre_articles'] : '';
// la requete mysql
$sql = mysql_query("SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE no_id_articles LIKE '%$recherche%' OR titre_articles LIKE '%$recherche%'") or die (mysql_error());
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: '.$texte_articles.', '.$titre_articles.' <br />';
}
}
?>
J'aimerais bien qu'il saffiche simplement quand je tappe quelques et non pas tout le temps.
Merci
Re: Moteur de recherche
Posté : 01 mai 2010, 17:11
par Dr@ke
Je n'ai pas tout regardé mais tu inclus automatiquement le fichier
moteur.php qui effectue une recherche sans test d'envoi du formulaire...
Donc remplace ceci:
include 'moteur.php';
Par:
if (isset($_POST['Rechercher'])) {
include 'moteur.php';
}
Et ensuite pour éviter une erreur de fonction inconnue:
Remplace ceci:
recherche();
Par:
if (isset($_POST['Rechercher'])) {
recherche();
}
Re: Moteur de recherche
Posté : 01 mai 2010, 17:30
par Eldouu
Merci dr@ke c'est très gentil, sauf que là j'ai rien qui s'affiche.
Moteur.php
<?php
function recherche(){
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_articles;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
// Récupère la variable
$recherche = isset($_POST['texte_articles']) ? $_POST['titre_articles'] : '';
// la requete mysql
$sql = mysql_query("SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE no_id_articles LIKE '%$recherche%' OR titre_articles LIKE '%$recherche%'") or die (mysql_error());
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: '.$texte_articles.', '.$titre_articles.' <br />';
}
}
?>
Abonnement.php
<?php
session_start();
$_SESSION['actif']='index.php';
include 'entete.php';
include 'menu.php';
include 'contenu.php';
echo'
<FORM METHOD="POST">
<fieldset id="formulaire1">
<ul>
<li>Pseudo : <input type="text" class="input" name="login" size=12></li>
<li>Mot de passe : <input type="password" class="input" name="password" size=12></li></ul>';
# CONNEXION DE L'ADMIN
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_usagers;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if (isset($_POST['login']) && isset($_POST['password']) ) {
$login = strtolower($_POST['login']);
$pass_admin = strtolower($_POST['password']);
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT * FROM tp2_php_usagers WHERE pseudo_usagers = '$login';";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($pass_admin == $data['mot_de_passe_usagers']) {
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK)
{
$_SESSION['pseudo_usagers'] = $data['pseudo_usagers'];
$_SESSION['mot_de_passe_usagers'] = $data['mot_de_passe_usagers'];
echo 'Vous etes bien logué $pseudo_usagers';
}
// Envois vers un message d'erreur si le login et password est pas bon
else if (isset($_POST['login']) && isset($_POST['password'])) {
echo 'Erreur : Données entrées incorrectes';
echo '<br />';
}
mysql_close($connexion);
echo'<div id="bouton"><input id="connect" type="submit" value="Connexion" name="bouton_connexion">
</fieldset>
</FORM></div>';
//include ('accueil.php');
//include ('competence.php');
//include ('objectif.php');
//accueil();
//competence();
//objectif();
if (isset($_POST['Rechercher'])) {
include 'moteur.php';
}
echo'
<div iv="recherche"<form method="POST" id="recherche" action="">
Rechercher un mot : <input type="text" name="recherche">
<input type="SUBMIT" value="Rechercher">
</form></div>
';
if (isset($_POST['Rechercher'])) {
recherche();
}
$_SESSION['patate']="coucou";
if (isset($_POST['valider']))
{
echo "<script>document.location = 'https://espacevacant.com/333-101/skelling/PHP/TP2/Pages/page_securisee.php?ses_no_id=".Session_id()."'</script>";
}
echo "<div id='texte1'><center>Avant de valider votre achat, vous devez passer dans le mode sécurisé.</div>";
echo "<br /><br /><br /><form method=POST>";
echo "<div id='bouton3'><input type=submit name=valider value='Mode sécurisé'></div>";
echo "</form></center>";
include 'footer2.php';
?>
Merci
Re: Moteur de recherche
Posté : 01 mai 2010, 17:43
par Dr@ke
[EDIT]
Désolé, erreur de ma part:
Remplace ceci, pour les deux
isset:
if (isset($_POST['Rechercher'])) {
par:
if (isset($_POST['recherche'])) {
Re: Moteur de recherche
Posté : 01 mai 2010, 18:00
par Eldouu
Merci Dr@ke !!! problème résolu.
Bonne Soirée!!
Re: Moteur de recherche
Posté : 01 mai 2010, 18:12
par Dr@ke
Maintenant que tu as modifié ton fichier
moteur.php qui contient dorénavant que la fonction
recherche().
Il n'est plus nécessaire de l'inclure qu'au moment de l'envoi du formulaire.
Tu peux donc supprimer le premier
isset() sur l'include du fichier
moteur.php.
Et donc ne laisser que le deuxième
isset() qui exécute la fonction
recherche()
(Pour mettre le Topic résolu, tu peux cliquer sur la petite coche verte au dessus à droite)
Re: Moteur de recherche
Posté : 01 mai 2010, 18:54
par Eldouu
Ok très bien merci!
Qu'est tu me conseillerais de rajouter pour que si la personne tappe quelques choses qui ne se retrouve pas dans titre_articles et nom_articles de la table tp2_php_articles, marquerais un message Il y aucun résultat trouvé ?
<?php
function recherche(){
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_articles;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
// Récupère la variable
$recherche = isset($_POST['texte_articles']) ? $_POST['titre_articles'] : '';
// la requete mysql
$sql = mysql_query("SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE no_id_articles LIKE '%$recherche%' OR titre_articles LIKE '%$recherche%'") or die (mysql_error());
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: '.$texte_articles.', '.$titre_articles.' <br />';
}
}
?>
Merci
Re: Moteur de recherche
Posté : 01 mai 2010, 19:05
par Dr@ke
Bien, il y a plusieurs possibilités, tu peux utiliser la fonction
mysql_num_rows() juste avant ta boucle
While.
http://fr.php.net/manual/fr/function.mysql-num-rows.php
Un test
if sur le résultat de cette fonction -> si le résultat est égale à 0 -> afficher ton message...
Regarde les exemples et les commentaires...
Re: Moteur de recherche
Posté : 03 mai 2010, 17:28
par Eldouu
Code : Tout sélectionner
<?php
function recherche(){
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_articles;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
// Récupère la variable
$recherche = isset($_POST['texte_articles']) ? $_POST['titre_articles'] : '';
// la requete mysql
$sql = mysql_query("SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE no_id_articles LIKE '%$recherche%' OR titre_articles LIKE '%$recherche%'") or die (mysql_error());
$num_rows = mysql_num_rows($result);
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: '.$texte_articles.', '.$titre_articles.' <br />';
}
}
-------------------
je sais vraiment pas comment le coder. Pour que si title_articles et textes_articles correspondent à 0. Il y a un echo ' Aucun Résultat' ?
?>
Re: Moteur de recherche
Posté : 03 mai 2010, 17:52
par Dr@ke
$nombre_resultat = mysql_num_rows($result);
if ($nombre_resultat) {
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: ' . $texte_articles . ', ' . $titre_articles;
}
} else if ($nombre_resultat === false) {
echo 'Erreur';
} else {
echo 'Aucun résultat pour votre recherche.';
}
Re: Moteur de recherche
Posté : 04 mai 2010, 00:39
par Eldouu
Très bien merci dr@rake.
<?php
function recherche(){
include 'identification.php';
$connexion = mysql_connect($adresse_serveur, $identifiant, $password) or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($nom_de_la_bd,$connexion) or die("Une erreur est survenue : " . mysql_error());
#la requête sql
$requete = 'select * from tp2_php_articles;';
#on fait exécuter la requête
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
#on fait la boucle qui permet d'extraire chaque ligne d'enregistrement de la bd
// Récupère la variable
$recherche = isset($_POST['texte_articles']) ? $_POST['titre_articles'] : '';
// la requete mysql
$sql = mysql_query("SELECT texte_articles, titre_articles FROM tp2_php_articles WHERE no_id_articles LIKE '%$recherche%' OR titre_articles LIKE '%$recherche%'") or die (mysql_error());
$nombre_resultat = mysql_num_rows($result);
// affichage du résultat
if ($nombre_resultat) {
// affichage du résultat
while(list($texte_articles, $titre_articles)=mysql_fetch_array($sql)){
echo 'Resultat de la recherche: ' . $texte_articles . ', ' . $titre_articles;
}
} else if ($nombre_resultat === false) {
echo 'Erreur';
} else {
echo 'Aucun résultat pour votre recherche.';
}
?>
Il me sort comme erreur
Parse error: syntax error, unexpected $end in /hsphere/local/home/timmatane/espacevacant.com/333-101/skelling/PHP/TP2/Pages/moteur.php on line 30
Merci
Re: Moteur de recherche
Posté : 04 mai 2010, 00:46
par Dr@ke
Il y a un
; de trop ici:
$resultat = mysql_query($requete, $connexion) or die("Une erreur est survenue : " . mysql_error());;
________________
Et aussi, tu as oublié le dernier
} qui ferme ta fonction
recherche().
________________
Et encore, vue que ta requête est
$sql et non
$result, il faut modifier ceci:
$nombre_resultat = mysql_num_rows($result);
Par:
$nombre_resultat = mysql_num_rows($sql);