Parse error: syntax error, unexpected '$sql'

Résolu
legameur6810 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   -  
legameur6810 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour ou bonsoir j'ai créer une barre de recherche en php.
Cette barre me serviras d'exemple pour mes prochain site.
Voici tout les codes avec leurs noms, si vous pouvez m'aider se seras génial.

Code : INDEX.PHP
Attention celui la il est en en html mais j'ai mis l’extension php
<!DOCTYPE html>
<html lang="fr">
 <head>
  <meta charset="utf-8">
  <title>Ma barre de recherche ajax</title>
  <link rel="stylesheet" type="text/css" href="style.css" charset="utf-8" />
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script type="text/javascript" src="search.js"></script>
 </head>
 <body>
  <div class="wrap">
   <div class="search">
    <input type="text" name="recherche" class="text" id="recherche" />
   </div>
   <div class="resultat" id="resultat"></div>
  </div>
 </body>
</html>


Ensuite le STYLE.CSS

body, div, dl, dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
 margin: 0; padding: 0;
}

table {border-collapse: collapse; border-spacing: 0;}
fieldset, img { boder:0; }
address, caption,cite,code,dfn,var { font-style: normal; font-weight: normal; }
ol, ul {list-style: none;}
q:before, q:after{ content:""; }
abbr,acronym {border:0;}

input {font-family:Arial,Verdana,sans-serif;font-size:12;}

h1{color:#8A975B; line-height: 71px;float: left;}
h1{color:#8A975B; line-height: 71px;float: left; width:100%;}
body {background: url(img/back.png) repeat; font-family:Arial,Verdana,sans-serif; font-size: 12px; line-height: 16px;}


.wrap{margin:0 auto; width: 800px;font-size: 16px;}
.search {background:#1a1a1a; width: 700px; height: 86px;margin-top: 250px; padding-top: 80px;}7
.search,.text{width: 620px;height: 50px;float: left;font-family:Arial;font-size:20px;}

.resultat {backround: #1a1a1a; width: 700px;height:86;padding-left:80px;font-family:Arial;font-size:10px;}


Ensuite le code de la connexion à la base de données. (CNX.PHP)

<?php 

$serveur = 'localhost';
$user = 'root';
$pass = '';
$bdd = 'tutoriel_search_ajax';
$port = '3306';

try {
 $cnx = new PDO('mysql:host='.$serveur.';port='.$port.';dbname='.$bdd, $user, $pass);
}
catch(PDOException $e)
{
 echo $e->getMessage(); 
}

?>


Ensuite le code Javascript (search.js)

$(document).ready(function(){
 $("#recherche").keyup(function(){
  var recherche = $(this).val();
  var data = 'motclef=' + recherche;
  if(recherche.length>2){

   $.ajax({
    type : "GET",
    url : "result.php",
    data : data,
   success: function(server_response){

    $("#recherche").html(server_response).show();
   }
  });

  }

 });
});


Ensuite le RESULT.PHP

<?php
include_once 'cnx.php';
if(isset($_GET['motclef'])){
 $motclef = $_GET['motclef'];
 $q = array('motclef'=>$motclef. '%')
 $sql = 'SELECT title,message FROM blog WHERE title like :motclef or message like :motclef';
 $req = $cnx->prepare($sql);
 $req->execute($q);
 $count = $req->rowCount($sql);

 if($count == 1){
  while ($result = $req->fetch(PDO::FETCH_OBJ)){
   echo " Titre :".$result->title."<br />Message:".$result->message;
  }
 }else {
  echo "Aucun resultat pour :".$motclef;
 }
}







?>


Voila les codes si vous s'avez d'ou viens le problème, merci de me répondre


Legameur6810

2 réponses

NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Problème classique ...
Dans ce cas, toujours faire ces 3 vérifications :
- Ais-je oublié un ;
- Ais-je mal fermé une ( )
- Ais-je mal fermé { }

Contrôle de base, mais qui donne pas mal de réussites.
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Ton erreur vient de cette ligne
$count = $req->rowCount($sql)

Ce n'est pas $sql que tu dois utiliser ici, mais la variable issue de ton execute :
 $req 

$req->execute($q);


De toutes façons... comme précisé dans la doc officielle du php, il est déconseillé d'utiliser la fonction rowCount sur le résultat d'une requête SELECT.
A la place, tu peux utiliser un COUNT comme ceci par exemple :
try{
    $req = $cnx->prepare($sql);
     $req->execute($q);
     $result = $req->fetchAll(); //on stocke le resultat de la requete dans un array
}catch(Exception $e){
  echo "erreur dans la requête ! ".$e->getMessage();
}
   $count = count($resultat); //nombre de valeurs retournées par ta requête

    if(!empty($result)){
       foreach($result as $R){
          echo " Titre :".$R['title']."<br />Message:".$R['message'];
       }
     }      




NB: Pense à utiliser des blocs TRY/CATCH a CHAQUE requête.

Je t'invite fortement à lire ceci
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
et cela :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


0
legameur6810 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup.
0