Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

dproduction Messages postés 39 Statut Membre -  
 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

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

      ça marche pas
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > dproduction Messages postés 39 Statut Membre
         
        et ainsi?
        echo '#'.$R->id.' - Titre: '.$R->nom . '<br/>';
        0
    2. dproduction Messages postés 39 Statut Membre
       
      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
    3. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      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
    4. dproduction Messages postés 39 Statut Membre
       
      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
  2. 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
    1. dproduction Messages postés 39 Statut Membre
       
      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
    2. 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