Bonjour,
J'ai suivi du mieux que j'ai pu le tuto pour la recherche instantanée.
Voila je rencontre un petit problème avec mon code.

Code affichage:

              <div class="tab-content">
                <div class="tab-pane fade show active" id="Introduction" role="tabpanel">
                    <form class="form-horizontal" method="post" action="">
                      <div class="form-group form-group-lg">
                    <!--    <label class="col-sm-2 control-label" for="recherche">Large label</label>  -->
                        <div class="col-sm-10">
                            <div class="input-group">
                        <span class="input-group-addon"><i class="fa fa-search fa-3x" aria-hidden="true"></i></span>
                        <input class="form-control" type="text" id="recherche" name="recherche" placeholder="  &nbsp;&nbsp; Search an airfield name"/>
                            </div>
                        </div>
                      </div>        
                    </form>
          <!-- Single Table -->
        <div class="col-md-10 wow fadeInUp animated" data-wow-delay=".3s">
            <div class="single-pricing-table text-center clearfix">
                <div class="resultat" id="resultat"></div>
            </div>
        </div>
                </div>
              </div>

Code interrogation de la base de données:

if(isset($_GET['motclef'])){
            $motclef = htmlentities($_GET['motclef']);

//          $q = array('motclef'=>$motclef.'%');
            $sql = "SELECT siteId, siteTitle, countryCode, lienUrl, visitsCount, creationDate FROM sites WHERE siteTitle like '%".$motclef."%' LIMIT 85";
            $req = $DB->query($sql);

            $count = $req->rowCount($sql);

//          if($count == 1){
            echo "<table class=\"table table-striped\">";
                while ($result = $req->fetch(PDO::FETCH_OBJ)){
                    echo "<tr><td><img src=\"assets/images/flags/".$result->countryCode.".png\"> </td><td style=\"text-align:left;\"><a href=\"airfield-".$result->lienUrl."-".$result->siteId.".html\"> ".$result->siteTitle." </a></td><td>Views:  ".$result->visitsCount."</td><td>Added:  ".convertDate($result->creationDate)."</td><td style=\"text-align:right;\"><a href=\"airfield-".$result->lienUrl."-".$result->siteId.".html\"><i class=\"material-icons icon-round mdi mdi-eye\" style=\"width:30px;height:30px;line-height:30px !important;\"></i></a></td></tr>";
                }
            echo "</table>";    
//          } else {
//              echo "No airfield was found for: ".$motclef;
//          }
        }

Actuellement, la fonction de recherche fonctionne de manière bancanle.
Le lien: ici (en page d'accueil)
Si vous entrez "amboise" par exemple, ça va fonctionner.
Si vous faites un copier/coller de "amboise", vous n'avez aucun résultat.

De plus, j'ai dû mettre :

// echo "No airfield was found for: ".$motclef;

... en remarque car sinon, "No airfield was found for: " est affiché en permanance.

Pouvez-vous m'aider?

Merci d'avance.
Hexa

2 réponses


Digivia
Réponse acceptée

Salut,
C'est tout à fait normal... rowCount n'est pas du tout fait pour compter les résultats d'un select, mais plutôt pour connaître le nombre de lignes affectées par la requete (il suffit d'aller voir la doc : http://php.net/manual/fr/pdostatement.rowcount.php). Donc pour des requêtes d'insert, delete, update... Mais pas du select.
Donc soit tu fais un SELECT COUNT(*), soit tu récupères le nombre d'entrées de ton tableau de résultat...

Hexa
Auteur

Salut Digiva,
merci pour ton aide, ça fonctionne impec!