My sql

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']))

{
$salle = $_POST['titre'];
/*
$etoile= $_POST['nbre_etoile'];
$event = $_POST['event'];
$place= $_POST['nbre_place'];
$prix = $_POST['prix_salle'];
  • /

$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))

{
if( ($prix >= `prix_salle`) and ($prix <= `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>';

}
?>

4 réponses

  1. Pouvez-vous détailler un peu plus l'erreur, car nous n'avons pas beaucoup de renseignement sur celle-ci ?
    1. 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:
    2. @deep_seaEt 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.
    3. ok je vais voir
    4. no c'est pas un probléme car j'ai vérifié le name et celui la est correspond au $_POST['submit']
  2. Modérateur
    Bonjour ..
    Déjà Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
    Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
    Merci d'y penser à l'avenir... car comme tu vas le voir ci-dessous.. avec la couleur et l'indentation .. le code est beaucoup plus facile à lire.

    Donc teste ceci :
    <?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;
    
    //------------------------------------------------------------//
    // 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%' ";
         
    
         
      $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 >= `prix_salle`) and ($prix <= `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>';
    }
    ?>
    

    Et dis nous ce que ça te donne (colle nous ce que ça t'affiche )
    .

    Et au passage .... montre nous aussi le code HTML de ton formulaire.
    Car comme te l'a dit Ciran28 ... tu n'envoies pas la variable POST['submit'] ...

    1. Modérateur
      Je pense que tu auras un autre souci ensuite ...
      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 !
    2. Modérateur
      En lisant le code que tu avais mis dans ta question en "doublon" (que je viens de supprimer...) j'ai vu le code de ton bouton :
      <button type="button" class="btn btn-danger btn-block" style="border-radius: 12px;" name="submit">Filtrer</button> 
      

      Hors... pour qu'il puisse fonctionner (en validant le formulaire) il faut mettre un type SUBMIT !
      par exemple
      <input  type="submit" class="btn btn-danger btn-block" style="border-radius: 12px;" name="submit" value="Filtrer" \>
      
  3. 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).

    Explications disponibles ici :ICI

    Merci d'y penser dans tes prochains messages.
    Jordane45
    1. Modérateur
      1 - Dans ton fichier .... il n'y a pas la connexion à la bdd

      2 - Tu as utilisé $con et $link .... lequel correspond à ta connexion ????
        $resultat = $conn->query($requete);;
        if (!$resultat) {
            printf("Message d'erreur : %s\n", mysqli_error($link));
        }
      


      3 - Que t'affiche le print_r($_POST); ???
      Si on te l'a fait ajouté .. c'est pour que tu nous colles son contenu dans le forum !!
    2. si il y a ma connexion vers la base de donnée

      <?php

      include 'includes\db.php';
      ?>

      Voici l'affichage :

      Variable POST = Array
      (
      [titre] => capricorn
      [choix] => Laghouat
      [number_etoile] => 5
      [event] => mariage
      [place_salle] => 250
      [prix] => 200000
      [option_salle] => on
      [submit] => Filtrer
      )

      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é.
    3. Modérateur
      @deep_sea
      si il y a ma connexion vers la base de donnée

      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....
    4. pour la connexion c 'est $conn et pas $link

      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é.
    5. Modérateur
      @deep_seaPourrais 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 ???
  4. et voila le code html correspond
        <form action="" method="POST">
    <div class="services-half-width container">
    
                <div class="row">
                    <div class="services-half-width-text span12">
      <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-certificate"></i></span>
      <input id="titre" type="text" class="form-control" name="titre" placeholder="Nom de la salle des Fêtes ">  
     </div>
    <div class="input-group">
    <?php
    $requete = "SELECT `code_wilaya`,  `designation_wilaya` FROM `wilaya` ";
    $resultat = $conn->query($requete) or die ('Erreur '.$requete.' '.$conn->error);
      echo "<select name='choix'>";
    echo '<option>Choisir</option>';
    if(mysqli_num_rows($resultat)>0)
    
    
    {
    while ($row = mysqli_fetch_assoc($resultat))
    
     {
    
      echo'
    
      <option>'.$row['designation_wilaya'].'</option>';
    
    }
    
    
    }
    
    
    else
    {
        echo "0 results";
    }
    
    echo "</select>";
    ?>
    
    
    </div>
    
    
    
    
    
    <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-star"></i></span>
      <input id="number" type="number" class="form-control" name="number_etoile" placeholder="Nombre d'étoiles">  
    </div>
    
    
        <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-list-alt"></i></span>
        <input id="event" type="text" class="form-control" name="event" placeholder="Evenement 1 , evenement 2, ..." />
      </div>
    
    
      <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-pencil"></i></span>
        <input id="place" type="number" class="form-control" name="place_salle" placeholder="Nombre de place" />
      </div>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-usd"></i></span>
        <input id="prix" type="number" class="form-control" name="prix" placeholder="prix minimun"  pattern="^\d+(\.|\,)\d{2}$"/>
      </div>
    
    
    
    <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-usd"></i></span>
        <input id="prix" type="number" class="form-control" name="prix" placeholder="prix maximun"  pattern="^\d+(\.|\,)\d{2}$"/>
      </div>
    
    <div class="input-group">
    <label class="label label-default" style="background-color: #c6526b;" id="clickme">Options avancés</label>
    </div>
    
    
    
    <center>
    <table class="table" id="tab">
    <thead>
    <tr>
    <th> </th>
    <th> </th>
    </tr>
    </thead>
    <tbody  >
      <tr>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Parking</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Traiteur</label></td>
    <td> <label class="radio-inline"><input type="checkbox" name="option_salle">serveur</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Diner</label></td>
    <td> <label class="radio-inline"><input type="checkbox" name="option_salle">Soirée</label></td>
    <td> <label class="radio-inline"><input type="checkbox" name="option_salle">Boisson</label></td>
      </tr>
      <tr>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Salés</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">DJ</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Décoration</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Caméra</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">Limousine</label></td>
    <td><label class="radio-inline"><input type="checkbox" name="option_salle">zorna</label></td>
      </tr>
    </tbody>
    </table>
    </center>
    
    
    
    <script type="text/javascript">
    var element = document.getElementById("clickme");
    var tab = document.getElementById("tab");
    element.onclick=function()
    {
    tab.style.visibility='visible';
    
    
    };
    </script>
    
                    </div>
    <input  type="submit" class="btn btn-danger btn-block" style="border-radius: 12px;" name="submit" value="Filtrer" \>
                </div>
    </div>
    </form>
    


    EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).

    Explications disponibles ici :ICI

    Merci d'y penser dans tes prochains messages.
    Jordane45