parse error, unexpected T_CONSTANT_ENCAPSED_STRING

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : parse error, unexpected T_CONSTANT_ENCAPSED_STRING

par airbem » 07 juil. 2005, 10:08

Bonjour

j'ai remplacé mot_clé par un champ existant dans ma base , la requet marche . le probleme est que la recherche ne ce fait pas sur l'ensemble des champs de ma base. :? .

Je crois que je vais revenir a mon ancien code qui marche bien. mais le probleme et c'est la raison pour laquel j'ai voulu le changer par "voir le code en haut".
C'est dans le champ qui me permet de saisir l'information que je souhaite trouver , je ne peut mettre qu'un mot clé .
Exemple si je met dans le champ : Dubois
j'ai un resultat qui s'affiche (toutes les info sur Duboi ,son prenom Alain , sa ville ......).

mais si je met : Dubois Alain
je n'ai aucun resultat .


Voila je ne sais pas comment faire pour que ce programme prenne en consideration plusieurs mot cle.
<?
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']; 

$sqlquery=  "SELECT * FROM cv WHERE titre LIKE '%$recherche%' OR ref LIKE '%$recherche%' OR nom LIKE '%$recherche%' OR prenom LIKE '%$recherche%' OR adresse LIKE '%$recherche%' OR ville LIKE '%$recherche%' "; 
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
if($number <=0) 
   { 
     echo"<br>Aucun résultat trouvé dans la base de donnée<br><br>"; 
   } 

}

?> 
Et encor MERCI pour votre aide

par pjl » 06 juil. 2005, 22:39

commence par un champ et on verra pour la suite.
Mais fais déjà une requête qui marche.

Ca ne sert à rien de conserver une requête fausse.

par airbem » 06 juil. 2005, 18:39

J'ai bien compris que c'est ma requet qui pose probleme
$sql = "select * from cv where 1 and mot_cles like '%".$tab[0]."%' "; 
et que je dois modifier " mot_cles" par un champ qui existe dans ma table .mais le probleme et que je souhaite faire une recherche sur l'ensemble des champs de ma table et non pas sur un seul champ. c'est là où ça se complique (pour moi).

par Vince » 06 juil. 2005, 18:19

comprend tu ton code ?

parceque tu as ta requête ici
$sql = "select * from cv where 1 and mot_cles like '%".$tab[0]."%' ";
on te dis que tu n'as pas de champ mot_cles et que tu dois faire la recherche dans tes propres champs.

Si tu comprenai un minimum ton code tu n'aurai aucune difficulté a modifier cette ligne pour resoudre ton probleme.

vas faire un tour ici http://www.phpdebutant.org/article117.php tu comprendra mieux je pense.

par airbem » 06 juil. 2005, 18:11

#-o
](*,)
:boire4:
8-[
Je passe la main à quelqu'un d'autre.
Avant j'avais deja un petit moteur de recherche . dont voic le code
<?
$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']; 

//mysql_select_db('my64035',$db); 
$sqlquery=  "SELECT * FROM cv WHERE titre LIKE '%$recherche%' OR ref LIKE '%$recherche%' OR nom LIKE '%$recherche%' OR prenom LIKE '%$recherche%' OR sex LIKE '%$recherche%' OR ville LIKE '%$recherche%' OR date_dispo LIKE '%$recherche%' OR ville LIKE '%$recherche%' OR fonction LIKE '%$recherche%' OR niveau LIKE '%$recherche%' OR region1 LIKE '%$recherche%' OR nom_entr1 LIKE '"; 
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
if($number <=0) 
    { 
      echo"<br>Aucun résultat trouvé dans la base de donnée<br><br>"; 
    } 

}


?>
Celui ci marche trés bien mais le probleme c'est qu'il prend pas en compte plusieur mot clé.

je m'explique : dans le champ de la recherche si je mettais plus d'un mots , je n'avais aucun resultat.

par airbem » 06 juil. 2005, 18:03

moi ce que je veut c'est faire une recherche sur tous les champs .

par Vince » 06 juil. 2005, 17:59

oui donc deja ton tout premier probleme a mal été résolu, puisque c'est
$mots = str_replace('\'', ' ', $mots);
que tu dois mettre et pas
$mots = str_replace('\\', ' ', $mots);
Ensuite le gars il a crée un champ mot_clés pour chaque enregistrement de sa table.

Reste a savoir dans quels champs tu veux effectuer ta recherche.

par mere-teresa » 06 juil. 2005, 17:59

#-o
](*,)
:boire4:
8-[
Je passe la main à quelqu'un d'autre.

par airbem » 06 juil. 2005, 17:54

Je me suis inspirer de ce script.
http://www.phpinfo.net/articles/article_moteur.html.
Du coup je sais pas comment faire avec "mot_cle" qui ne correspond pas au contenu de ma table.

par pjl » 06 juil. 2005, 17:44

airbem, ca fait 2 fois que mere-teresa corrige tes posts pour mettre ton code PHP en valeur.
Tu pourrais faire l'effort de le faire toi-même.
Le bouton PHP n'est quand même pas si loin que celà du bouton Code.

par Vince » 06 juil. 2005, 17:37

Bein tu n'as pas de champ mot_cles donc il ne saurai pas te trouver un resultat.

par mere-teresa » 06 juil. 2005, 17:36

Y a-t-il une colonne mots_cles ?
===> NON !

Alors pourquoi la mettre dans ta requête ?


SELECT * FROM cv WHERE 1 AND mot_cles LIKE '%compt%'

par airbem » 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 ;

par mere-teresa » 06 juil. 2005, 17:26

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

par airbem » 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>";  
---------------------
-----------------