Bonjour ,
je suis entraîne de faire un moteur de recherche qui permet d'établir une comparaison entre les salles des fêtes selon les critères recommandé
une fois j'actualise la page service , un message d'erreur signalé :Erreur! Php voici le code
<?php
if( isset($_POST['submit']))
$requete = "SELECT * FROM `annonce` ,`wilaya` WHERE `annonce`.`code_wilaya` = `wilaya`.`code_wilaya` and `Etat_annonce`=1 and `nom_salle` LIKE '$salle' ";
$resultat = $conn->query($requete) or die ('Erreur '.$requete.' '.$conn->error);
if(mysqli_num_rows($resultat)>0)
{
while ($row = mysqli_fetch_assoc($resultat))
Toujours le dernier message qui s'est afficher
echo '<div class="alert alert-danger">
<strong>Erreur!</strong> php .
malgré j'ai essayé une seul condition c'est le nom de la salle
voici le code complet:
Et bien si j'en suis ton code, c'est simplement que la page n'arrive pas à récupérer la variable $_POST['submit'], vérifie donc le formulaire qui est censé envoyer ces données.
if( ($prix >= `prix_salle`) and ($prix <= `prix_salle`)){
1 - `prix_salle` .. n'est pas un nombre ....
Si tu veux le "prix_salle" issu de la requête .. tu dois écrire :
$row["prix_salle"]
2 - Comment un Prix peut-il être en même temps (tu as utilisé un "AND" ) inférieur ET supérieur à un même nombre ??? ( enfin vu que tu as mis >= et <= ... cette condition pourra tout de même être vrai dans un seul cas ... lorsque ça sera "=" )
Bref.... à la place d'un AND .. utilises un OR !
même erreur malgré ça j'ai ajouté les autres critères pour tester --> ERREUR a été change et toujours aucune résultat a été retourné
<div class="what-we-do container">
<div class="row">
<div class="service span12">
<?php
//activation de l'affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');
//------------------------------------------------------------//
// le temps des tests
//------------------------------------------------------------//
echo "<pre> Variable POST = ";
print_r($_POST);
echo "</pre>";
//------------------------------------------------------------//
//récupération PROPRE des variables AVANT de les utiliser
//------------------------------------------------------------//
$salle = !empty($_POST['titre']) ? $_POST['titre']: NULL;
$etoile = !empty($_POST['etoile']) ? $_POST['etoile']: NULL;
$event = !empty($_POST['event']) ? $_POST['event']: NULL;
$place = !empty($_POST['place']) ? $_POST['place']: NULL;
$prix = !empty($_POST['prix']) ? $_POST['prix']: NULL;
$wilaya = !empty($_POST['choix']) ? $_POST['choix']: NULL;
$option = !empty($_POST['option_salle']) ? $_POST['option_salle']: NULL;
//------------------------------------------------------------//
// Traitement du SUBMIT
//------------------------------------------------------------//
if( isset($_POST['submit'])) {
$requete = "SELECT *
FROM annonce A
,wilaya W
WHERE A.`code_wilaya` = W.`code_wilaya`
AND `Etat_annonce`='1' and (`nom_salle` LIKE '%$salle%'
or 'prix' like '%$prix%'
or 'etoile' =$etoile
or 'event'= '%$event%'
or 'place' =$place
or 'designation_wilaya' like '% $wilaya%'
or `parking` like '%$option%'
or `traiteur` like '%$option%'
or `serveur` like '%$option%'
or `diner` like '%$option%'
or `soiree` like '%$option%'
or `boisson` like '%$option%'
or `salee` like '%$option%'
or `dj` like '%$option%'
or `decoration` like '%$option%'
or `camera` like '%$option%'
or `limosine` like '%$option%'
or `zorna` like '%$option%'
) ";
$resultat = $conn->query($requete);;
if (!$resultat) {
printf("Message d'erreur : %s\n", mysqli_error($link));
}
if(mysqli_num_rows($resultat)>0) {
while ($row = mysqli_fetch_assoc($resultat)) {
if( ($prix >= $row["prix_salle"]) and ($prix <= $row["prix_salle"])){
echo ' <div class="icon-awesome">
<img src="imagesbd/'. $row["gallerie"] . '" alt="salle" />
</div>
<h3>'.$row['nom_salle'].'</h3>
<h4>'.$row['prix_salle'].',00 DZ </h4>
<h5> '.$row['event'] .' </h5>
<p>'.$row['adresse_salle'].' ,'.$row['designation_wilaya'] .' </p>
';
} else {
echo '<div class="alert alert-info">
<strong>Info!</strong> Aucune salle ne correspond a ce prix.
</div>';
}
}
} else {
echo '<div class="alert alert-info">
<strong>Info!</strong> Aucune résultat a été retourné.
</div>';
}
} else {
echo '<div class="alert alert-danger">
<strong>Erreur!</strong> php .
</div>';
}
?>
</div>
</div>
</div>
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
le problème avec le prix et les options de checkbox
messages d'erreur :
Notice: Undefined variable: link in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\Afrahcom\services.php on line 407
Warning: mysqli_error() expects parameter 1 to be mysqli, null given in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\Afrahcom\services.php on line 407
Message d'erreur :
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\Afrahcom\services.php on line 410
en plus le message de code: Info! Aucune résultat a été retourné.
je dois être miro ... je ne la vois pas dans le code que tu as posté....
messages d'erreur :
Notice: Undefined variable: link in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\Afrahcom\services.php on line 407
... ben oui.. c'est bien ce que je te disais ... tu as utilisé $link ET $con ..... LEQUEL correspond à ta connexion ????
(peux tu nous montrer ton code de connexion à ta bdd (en retirant le user/password ) ??
Ensuite.... fais donc un echo de ta variable $requete et montre nous ce que ça donne.
Puis... prends cette requête et teste la DIRECTEMENT dans ta bdd via phpmyadmin pour voir si elle te retourne quelquechose....
Variable POST = Array
(
[titre] => capricorn
[choix] => Tiaret
[number_etoile] => 3
[event] => mariage
[place_salle] => 200
[prix] => 200000
[option_salle] => on
[submit] => Filtrer
)
Message d'erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or 'event'= '%mariage' ' at line 8
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\Afrahcom\services.php on line 410
Info! Aucune résultat a été retourné.
Pourrais tu relire ET suivre TOUT ce que je t'ai marqué précédemment ???
Quel est le contenu de ta variable $requete ??
L'as tu testé DIRECTEMENT dans ta bdd ???
ouii j'ai bien suivre té remarque méme j'ai corrigé pas mal de faute
ouii j'ai testé directement dans la bdd le probléme aucune résultat n'a retourné malgré j'ai utilisé des exemple concret
SELECT * FROM annonce A ,wilaya W WHERE A.`code_wilaya` = W.`code_wilaya` AND `Etat_annonce`='1' and (`nom_salle` LIKE '%capricorne%' or 'prix' like '%200000%' or 'etoile' =3 or 'event'= '%mariage%' or 'place' =200 or 'designation_wilaya' like '%chlef%' )
EDIT : Ajout des balises de code (la coloration syntaxique).
j'aime pas vos questions
Like pour une chaine de catactére
= pour un nombre
% c a d c'est la valeur correspond a celle stocké dans la base (le cas des strings)
= ... pour une égalité
LIKE pour une approximation ( s'utilise avec le % .... le % servant de caractère jocker )
Par exemple : Est-ce que dans mon champ nom j'ai un nom qui CONTIENT jo .. je vais écrire : nom LIKE '%jo%'
Si je veux que le nom COMMENCE par jo je vais écrire nom LIKE 'jo%'
Et si je veux que le nom se TERMINE par jo .. je vais écrire : nom LIKE '%jo'
Si je veux nom soit égale à jo .. alors je vais utiliser : nom = 'jo'
echo '<div class="alert alert-danger">
<strong>Erreur!</strong> php .
malgré j'ai essayé une seul condition c'est le nom de la salle
voici le code complet: