Page 1 sur 2

parse error, unexpected T_CONSTANT_ENCAPSED_STRING

Posté : 06 juil. 2005, 14:33
par airbem
Bonjour

Pouvez vous m'aider svp , je n'arrive pas a trouver mon erreur

parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/testweb/rechercher.php on line 32


Voici un bout de code
-------------
--------
if(isset($_GET['recherche'])) 
{ 
  if($_GET['recherche']=='') 
  { 
    echo"<h2>Recherche</h2>"; 
    echo"Veuillez saisir un critère de recherche"; 
  } 
  elseif(strlen($_GET['recherche'])<3) 
  { 
    echo"<h2>Recherche</h2>"; 
    echo"Veuillez saisir un critère de recherche de plus de 3 caractères"; 
  }

$recherche=$_GET['recherche']; 

// on passe les mots recherchés en minuscules

$recherche = strtolower($recherche);

// on remplace les ' + , :  par des espaces

$mots = str_replace('+',' ', trim($recherche));

$mots = str_replace('\',' ', $mots);

$mots = str_replace(',',' ', $mots); // ici la ligne 32

$mots = str_replace(':',' ', $mots);
Merci bien

edit mere-teresa : c'est mieux de mettre [ PHP ] que [ Code ]

Posté : 06 juil. 2005, 14:58
par Vince
Salut,

je pense que c'est ton anti slash qui pose probleme a la ligne 31 mais pas certain essaye d'en rajouter une devant donc '\\'.

Posté : 06 juil. 2005, 15:00
par mere-teresa
$mots = str_replace('\\',' ', $mots); 

Posté : 06 juil. 2005, 15:01
par Vince
aussi, si c'est les quotes que tu veux remplacer a la ligne 31 il te manque un caractère, je suppose que l'antislash est pour ignorer la quote qui suit.
str_replace('\'',' ', $mots)

Posté : 06 juil. 2005, 15:12
par mere-teresa
aussi, si c'est les quotes que tu veux remplacer a la ligne 31
Oui et si ce sont les antislashs que tu veux remplacer les messages au dessus sont valables :)

Posté : 06 juil. 2005, 15:31
par airbem
J'ai remplacé str_replace('\'',' ', $mots) par str_replace('\\'',' ', $mots) comme vous me l'avez dis

Maintenant il m'annonce ça comme erreur : :(

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /web/testweb/rechercher.php on line 58
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<? 
$db = mysql_connect('******', '*****', '******'); 
mysql_select_db('base1',$db); 


if(isset($_GET['recherche'])) 
{ 
 if($_GET['recherche']=='') 
 { 
   echo"<h2>Recherche</h2>"; 
   echo"Veuillez saisir un critère de recherche"; 
 } 
 elseif(strlen($_GET['recherche'])<3) 
 { 
   echo"<h2>Recherche</h2>"; 
   echo"Veuillez saisir un critère de recherche de plus de 3 caractères"; 
 } 

$recherche=$_GET['recherche']; 

// on passe les mots recherchés en minuscules 

$recherche = strtolower($recherche); 

// on remplace les ' + , :  par des espaces 

$mots = str_replace('+',' ', trim($recherche)); 

$mots = str_replace('\\',' ', $mots); 

$mots = str_replace(',',' ', $mots);   //  ICI LA  LIGNE 32 

$mots = str_replace(':',' ', $mots); 


// on place les differents mots dans un tableau 
$tab = explode(' ' , $mots); 

// on compte le nbr d'élément du tableau. 
$nb = count($tab); 

//on prépare la requête SQL. 
$sqlquery = "select * from cv where 1 and mot_cles like \'%$tab[0]%\' "; 

// on boucle pour integrer tous les mots dans la requête 
for($i = 1; $i < $nb; $i++) { 
 $sqlquery .= "$operateur mot_cles like \'%$tab[$i]%\' "; 
} 

// 
// 

$result = mysql_query($sqlquery); 
$number = mysql_num_rows($result); //    ICI LA  ligne 58 
if($number <=0) 
   { 
     echo"<br>Aucun résultat trouvé dans la base de donnée<br><br>"; 
   } 

} 


?>
edit mere-teresa : avec [ PHP ] on voit mieux les couleurs

Posté : 06 juil. 2005, 15:38
par mere-teresa
Et elle est la ligne 58 ?

Posté : 06 juil. 2005, 15:43
par airbem
C'est cette ligne

$number = mysql_num_rows($result); // LIGNE 58

Posté : 06 juil. 2005, 15:46
par zeus
remplace
$sqlquery = "select * from cv where 1 and mot_cles like \'%$tab[0]%\' ";

par
$sqlquery = "select * from cv where 1 and mot_cles like '%".$tab[0]."%' "; 
Il faut sortir les variables des chaines de caractères car PHP ne gère pas cette particularité avec les tableaux

Posté : 06 juil. 2005, 15:54
par airbem
:cry: marche pas

Posté : 06 juil. 2005, 16:02
par Vince
a cette ligne.
$sqlquery .= "$operateur mot_cles like \'%$tab[$i]%\' ";
tu as un point en trop non ?
$sqlquery .=
OUBLIEZ CE POST JE SUIS DEBILE :oops:

Posté : 06 juil. 2005, 16:03
par mere-teresa
Apparemment le problème est au niveau de la requête...peux tu tester ta requête (echo $sqlquery) dans PHPMyAdmin (ou équiv) ?

Posté : 06 juil. 2005, 17:24
par airbem
Je n'est plus d'erreur , mais le resultat de la recherche ne donne rien .Hors ma base de donnée est pleine

(je veus dire par là qui si je rentre un element qui est dans ma base , la recherhce ne donne rien ) .

Lorsque je fait un echo de ma requet j'obtiens ça :

select * from cv where 1 and mot_cles like '%compt%'

Et quand je l'execute dans PHPmyadmin , j'obtien ça

#1054 - Unknown column 'mot_cles' in 'where clause'

S'il VOUS PLAIT SORTER MOI DE CE PETRIN :cry:

Voici le code
<?php


// on passe les mots recherchés en minuscules
$recherche = strtolower($recherche);

// on remplace les ' + , :  par des espaces
$mots = str_replace("+", " ", trim($recherche));
$mots = str_replace("\"", " ", $mots);
$mots = str_replace(",", " ", $mots);
$mots = str_replace(":", " ", $mots);
$recherche=rawurlencode($recherche);              
// on place les differents mots dans un tableau
$tab = explode(" " , $mots);

// on compte le nbr d'élément du tableau.
$nb = count($tab);

//on prépare la requête SQL.
$sql = "select * from cv where 1 and mot_cles like '%".$tab[0]."%' "; 
// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
  $sql .= "$operateur mot_cles like \'%$tab[$i]%\' ";
}

// on se connecte au serveur
mysql_connect('*****', '*******', '*****');

// on execute la requête SQL.
$result = mysql_db_query('base1', $sql);

if ($result) {
  
  if (mysql_num_rows($result) == 0) {

    // Si il n'y a pas de résultats
    echo "<center><b>Pas de Résultat</b></center><br>";

  } else {

     while ($tablo = mysql_fetch_object($result)) {
            
            print "<TR>";

print "<TD nowrap class=\"style4\" >$tablo->nom &nbsp</b></TD>";
print "<TD nowrap class=\"style4\" >$tablo->prenom &nbsp</b> </TD>";
print "<TD nowrap class=\"style4\" >$tablo->code &nbsp</b></TD>";  
---------------------
-----------------

Posté : 06 juil. 2005, 17:26
par mere-teresa
pas la peine de supplier :)
quelle est la structure de ta table ? (copie colle depuis PHPMyAdmin)

Posté : 06 juil. 2005, 17:33
par airbem
CREATE TABLE `cv` (
  `id` int(11) NOT NULL auto_increment,
  `date` date NOT NULL default '0000-00-00',
  `nom` varchar(255) NOT NULL default '',
  `prenom` varchar(255) NOT NULL default '',
  `code` varchar(255) NOT NULL default '',
  `ville` varchar(255) NOT NULL default '',
  `dern_exp` varchar(255) NOT NULL default '',
  `nom_entr1` varchar(255) NOT NULL default '',
  `prec_ent` varchar(255) NOT NULL default '',
  `nom_entr2` varchar(255) NOT NULL default '',
  `nomDestination` varchar(255) NOT NULL default '',
  `date_dispo` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`),
) TYPE=MyISAM AUTO_INCREMENT=47 ;