Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

dproduction Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
bonsoir mes amis. j'ai eu a poster un problème de programmation php ici, et j'ai eu des réponses . merci. maintenant ce programme génére des erreurs. j'ai ce message. j'ai besoin d'un coup de main. merci d'avance


Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\moteur de recherche\recherche.php on line 73

voici le code


<?php
//Affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion a la base de donnée
require_once "includes/connect_db.php";

//intialisation de la variable contenant les resultats
$resultats = "";
$query = !empty($_POST['query']) ? preg_replace("#[^#a-zA-Z ?0-9]#i", "", $_POST["query"]) : NULL;
$filtre = !empty($_POST["filtre"]) ? $_POST["filtre"] : NULL;

//traitement de la requette
if($query){
  switch($filtre){
     case "site entier" :
        // a faire plustard
      $sql = "";
      break;
    case "ecoles_maternelles" :
      $sql = "SELECT id, pageecomater_nom AS nom FROM  ecoles_maternelles WHERE pageecomater_nom LIKE ? OR pageecomater_contenance LIKE ?";
      break;
    case "ecoles_primaires" :
      $sql = "SELECT id, pageecoprim_nom AS nom FROM  ecoles_primaires WHERE pageecoprim_nom LIKE ? OR pageecoprim_contenance LIKE ?";
      break;
    default:
      $sql ="";
    break;
  } 

  $datas = array("%".$query."%", "%".$query."%");
  try{
    $req = $db->prepare($sql);
    $req ->execute($datas);
    $result = $req->fetchAll(FECTH_OBJ);
  }catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
  } 
}


?>
<!DOCTYPE html>
<html>
 <head>
  <title> mini moteur de recherche</title>
  <charset="utf8">
 </head>
 <body>
   <div id="zonefiltres">
    <p>
     <form action ="" method='POST'>
       <label for="query">entrer votre recherche: </label>
       <input type= "text" name="query" maxlength="80" size="80" id="query"  value="<?php echo $query; ?>"/><br>
       <label for="filtre">recherche au niveau de:</label>
       <select name="filtre" id="filtre">
         <option value="site entier" <?php echo  $filtre == "site entier" ? " selected='selected' ": ""; ?> >site entier</option>
         <option value="ecole_maternelle" <?php echo  $filtre == "ecole_maternelle" ? " selected='selected' ": ""; ?> >ecole_maternelle</option>
         <option value="ecole_primaire" <?php echo  $filtre == "ecole_primaire" ? " selected='selected' ": ""; ?>>ecole_primaire</option>
       </select>
       <br>
       <input type="submit" value="Recherche">
     </form>
    </p>
   </div>
  
   <div id="resultats">
  <?php
    $count = !empty($result) ? count($result) : 0;
    $strResult = $count>1 " résultats trouvés " : " résultat trouvé ";
    echo  $count ."".$strResult ."pour <strong>".htmlspecialchars($query)."</strong><hr/>";
    if(!empty($count) {
      foreach($result as $R){
        echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>';
      }
    } 
  ?>
  </div>
 </body>
</html>



2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, ceci semble incorrect:
 echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>';
peut-être un point au lieu du premier point-virgule?
0
dproduction Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
bonsoir yg_be. merci pour l'attention. j'ai essayé avec
echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>';

ça marche pas
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > dproduction Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
et ainsi?
echo '#'.$R->id.' - Titre: '.$R->nom . '<br/>';
0
dproduction Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai remplcé la ligne 74 par
echo '#'.$R->id.' - Titre: '.$R->nom . '<br/>';

j'obtient toujours le mémé message d'erreur
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
0
NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Sépare la ligne en plusieurs echo au lieu de faire une concaténation, tu verra peut être mieux d'où vient le problème.
0
dproduction Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
bonsoir NHenry. je comprend pas très bien. voici d'ou se situe le problème

 <?php
    $count = !empty($result) ? count($result) : 0;
    $strResult = $count>1 " résultats trouvés " : " résultat trouvé ";
    echo  $count ."".$strResult ."pour <strong>".htmlspecialchars($query)."</strong><hr/>";
    if(!empty($count) {
      foreach($result as $R){
        echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>';
      }
    } 
  ?>
0
Utilisateur anonyme
 
Bonsoir

Il y a aussi une erreur sur une des lignes précédentes :
    $strResult = $count>1 " résultats trouvés " : " résultat trouvé ";

Il manque un ? pour l'opérateur ternaire. J'ajoute des () car je ne suis jamais sûr des priorités :
    $strResult = ($count>1) ?  " résultats trouvés " : " résultat trouvé ";
0
dproduction Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
merci bien le père. on direct ça a fonctionné. j'ai encore une nouvelle erreur
celle ci Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty

voici le code tout en entier

<?php
//Affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion a la base de donnée
require_once "includes/connect_db.php";

//intialisation de la variable contenant les resultats
$resultats = "";
$query = !empty($_POST['query']) ? preg_replace("#[^a-zA-Z ?0-9]#i", "", $_POST["query"]) : NULL;
$filtre = !empty($_POST["filtre"]) ? $_POST["filtre"] : NULL;

//traitement de la requette
if($query){
  switch($filtre){
     case "site entier" :
        // a faire plustard
      $sql = "";
      break;
    case "ecoles_maternelles" :
      $sql = "SELECT id, pageecomater_nom AS nom FROM  ecoles_maternelles WHERE pageecomater_nom LIKE ? OR pageecomater_contenance LIKE ?";
      break;
    case "ecoles_primaires" :
      $sql = "SELECT id, pageecoprim_nom AS nom FROM  ecoles_primaires WHERE pageecoprim_nom LIKE ? OR pageecoprim_contenance LIKE ?";
      break;
    default:
      $sql ="";
    break;
  } 

  $datas = array("%".$query."%", "%".$query."%");
  try{
    $req = $db->prepare($sql);
    $req ->execute($datas);
    $result = $req->fetchAll(FECTH_OBJ);
  }catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
  } 
}


?>
<!DOCTYPE html>
<html>
 <head>
  <title> mini moteur de recherche</title>
  <charset="utf8">
 </head>
 <body>
   <div id="zonefiltres">
    <p>
     <form action ="" method='POST'>
       <label for="query">entrer votre recherche: </label>
       <input type= "text" name="query" maxlength="80" size="80" id="query"  value="<?php echo $query; ?>"/><br>
       <label for="filtre">recherche au niveau de:</label>
       <select name="filtre" id="filtre">
         <option value="site entier" <?php echo  $filtre == "site entier" ? " selected='selected' ": ""; ?> >site entier</option>
         <option value="ecole_maternelle" <?php echo  $filtre == "ecole_maternelle" ? " selected='selected' ": ""; ?> >ecole_maternelle</option>
         <option value="ecole_primaire" <?php echo  $filtre == "ecole_primaire" ? " selected='selected' ": ""; ?>>ecole_primaire</option>
       </select>
       <br>
       <input type="submit" value="Recherche">
     </form>
    </p>
   </div>
  
   <div id="resultats">
  <?php
    $count = !empty($result) ? count($result) : 0;
    $strResult = ($count>1) ?  " résultats trouvés " : " résultat trouvé ";
    echo  $count ."".$strResult ."pour <strong>".htmlspecialchars($query)."</strong><hr/>";
    if(!empty($count) ){
      foreach($result as $R){
        echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>';
      }
    } 
  ?>
  </div>
 </body>
</html>
0
Utilisateur anonyme
 
S'il te dit que la requête est vide, c'est que la requête est vide.
Si la requête est vide, c'est que $filtre ne satisfait aucun des cas de ton switch. $filtre n'est pas égal à ecoles_maternelles ni à ecoles_primaires. Tu n'as qu'à afficher sa valeur pour le vérifier.
Quand on voit que $filtre vient du champ "filtre" de ton formulaire, on vérifie quelles valeurs il y a dans ton formulaire et là ça saute aux yeux.
0