parse error, unexpected T_CONSTANT_ENCAPSED_STRING

Eléphanteau du PHP | 29 Messages

06 juil. 2005, 14:33

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 ]

Eléphant du PHP | 66 Messages

06 juil. 2005, 14:58

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 '\\'.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 15:00

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

Eléphant du PHP | 66 Messages

06 juil. 2005, 15:01

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)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 15:12

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 :)
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 29 Messages

06 juil. 2005, 15:31

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
Modifié en dernier par airbem le 06 juil. 2005, 15:44, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 15:38

Et elle est la ligne 58 ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 29 Messages

06 juil. 2005, 15:43

C'est cette ligne

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 15:46

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 29 Messages

06 juil. 2005, 15:54

:cry: marche pas

Eléphant du PHP | 66 Messages

06 juil. 2005, 16:02

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:
Modifié en dernier par Vince le 06 juil. 2005, 16:10, modifié 2 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 16:03

Apparemment le problème est au niveau de la requête...peux tu tester ta requête (echo $sqlquery) dans PHPMyAdmin (ou équiv) ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 29 Messages

06 juil. 2005, 17:24

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>";  
---------------------
-----------------
Modifié en dernier par airbem le 06 juil. 2005, 17:56, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 17:26

pas la peine de supplier :)
quelle est la structure de ta table ? (copie colle depuis PHPMyAdmin)

Eléphanteau du PHP | 29 Messages

06 juil. 2005, 17:33

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 ;
Modifié en dernier par airbem le 06 juil. 2005, 17:57, modifié 1 fois.