Parse error: syntax error, unexpected '''
Résolu
Kevinteger
-
Kevinteger Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Kevinteger Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Le but de mon code est d'interoger ma base de données chez free et d'afficher la recherche. (comme un dictionnaire)
j'ai un souci et je ne vois pas ce qui cloche:
Voici mon code php. Lorsque j'éxécute ma recherche, il me dit:
Parse error: syntax error, unexpected ''' in /mnt/167/sda/6/1/k.dejoye/rechercher.php on line 12
<?php // on se connecte à MySQL
$db = mysql_connect('sql.free.fr', 'k.dejoye', '********');
// on sélectionne la base
mysql_select_db('k_dejoye',$db);
// on crée la requête SQL
$sql = "SELECT Terme,Definition FROM k_dejoye WHERE Terme LIKE '%$Recherche%'";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !.$sql.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
// on affiche les informations de la table
PRINT '.$data["Terme"].$data["Definition"]';
// on ferme la connexion à mysql
mysql_close();
?>
Le but de mon code est d'interoger ma base de données chez free et d'afficher la recherche. (comme un dictionnaire)
j'ai un souci et je ne vois pas ce qui cloche:
Voici mon code php. Lorsque j'éxécute ma recherche, il me dit:
Parse error: syntax error, unexpected ''' in /mnt/167/sda/6/1/k.dejoye/rechercher.php on line 12
<?php // on se connecte à MySQL
$db = mysql_connect('sql.free.fr', 'k.dejoye', '********');
// on sélectionne la base
mysql_select_db('k_dejoye',$db);
// on crée la requête SQL
$sql = "SELECT Terme,Definition FROM k_dejoye WHERE Terme LIKE '%$Recherche%'";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !.$sql.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
// on affiche les informations de la table
PRINT '.$data["Terme"].$data["Definition"]';
// on ferme la connexion à mysql
mysql_close();
?>
A voir également:
- Parse error: syntax error, unexpected '''
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Playback error reconnect in 3s (1/5) francais - Forum Box et Streaming vidéo
- Error 1962 ✓ - Forum PC fixe
- Whea error occt - Forum Processeur
- A javascript error occurred in the main process - Forum Matériel & Système
4 réponses
Bonjour,
Je te déconseille d'utiliser la fonction print pour afficher des données. Il me semble que pour les tableaux il faut utiliser, par exemple {$data['terme']} si tu utilises cette fonction.
Moi (et une majeure partie des utilisateurs de php que je connais) je préfère utiliser echo "...";
Et tu as oublié les {} de ton while
Essaye çà :
Je te déconseille d'utiliser la fonction print pour afficher des données. Il me semble que pour les tableaux il faut utiliser, par exemple {$data['terme']} si tu utilises cette fonction.
Moi (et une majeure partie des utilisateurs de php que je connais) je préfère utiliser echo "...";
Et tu as oublié les {} de ton while
Essaye çà :
<?php // on se connecte à MySQL $db = mysql_connect('sql.free.fr', 'k.dejoye', '********'); // on sélectionne la base mysql_select_db('k_dejoye',$db); // on crée la requête SQL $sql = "SELECT Terme,Definition FROM k_dejoye WHERE Terme LIKE '%$Recherche%'"; // on envoie la requête $req = mysql_query($sql) or die('Erreur SQL !.$sql.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = mysql_fetch_assoc($req)) // on affiche les informations de la table (Ca va te mettre un point entre tes valeurs c'est bien ça que tu veux ?) { echo ".$data['Terme'].$data['Definition'] <br/>"; } // on ferme la connexion à mysql mysql_close(); ?>
^^ enleve le commentaire de la ligne 11 ! les acolades sont bien mises
Cette fois-ci l'erreur est passée à la ligne 13.
Ce qui me semble bizar c'est que la fonction echo ne soit pas écrite en bleu dans mon code...
<?php // on se connecte à MySQL
$db = mysql_connect('sql.free.fr', 'k.dejoye', '********');
// on sélectionne la base
mysql_select_db('k_dejoye',$db);
// on crée la requête SQL
$sql = "SELECT Terme,Definition FROM k_dejoye WHERE Terme LIKE '%$Recherche%'";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !.$sql.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
// on affiche les informations de la table
{
echo ".$data['Terme'].$data['Definition'] <br/>";
}
// on ferme la connexion à mysql
mysql_close();
?>
Ce qui me semble bizar c'est que la fonction echo ne soit pas écrite en bleu dans mon code...
<?php // on se connecte à MySQL
$db = mysql_connect('sql.free.fr', 'k.dejoye', '********');
// on sélectionne la base
mysql_select_db('k_dejoye',$db);
// on crée la requête SQL
$sql = "SELECT Terme,Definition FROM k_dejoye WHERE Terme LIKE '%$Recherche%'";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !.$sql.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
// on affiche les informations de la table
{
echo ".$data['Terme'].$data['Definition'] <br/>";
}
// on ferme la connexion à mysql
mysql_close();
?>
Es-tu sûr de bien avoir un champ Terme et un champ Definition (attention à la majuscule en début de mot) ?
Je te mets le code pour avoir : entre un terme et sa définition mais ça tu aurais pu le trouver tout seul ;)
Et d'ailleurs en passant je te modifie un petit peu le code pour l'affichage, peut être que c'est là que ça plante...
edit : Et tant qu'à faire je te remplace aussi ton mysql_fetch_assoc par un mysql_fetch_array que je préfère personnellement (après les gouts et les couleurs...).
Je te mets le code pour avoir : entre un terme et sa définition mais ça tu aurais pu le trouver tout seul ;)
Et d'ailleurs en passant je te modifie un petit peu le code pour l'affichage, peut être que c'est là que ça plante...
<?php // on se connecte à MySQL $db = mysql_connect('sql.free.fr', 'k.dejoye', '********'); // on sélectionne la base mysql_select_db('k_dejoye',$db); // on crée la requête SQL $sql = "SELECT Terme,Definition FROM k_dejoye WHERE Terme LIKE '%$Recherche%'"; // on envoie la requête $req = mysql_query($sql) or die('Erreur SQL !.$sql.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = mysql_fetch_array($req)) // on affiche les informations de la table { echo $data['Terme'].":".$data['Definition']." <br/>"; } // on ferme la connexion à mysql mysql_close(); ?>
edit : Et tant qu'à faire je te remplace aussi ton mysql_fetch_assoc par un mysql_fetch_array que je préfère personnellement (après les gouts et les couleurs...).
J'ai résolu mon probleme:
<?php // on se connecte à MySQL
$Recherche=$_POST['Recherche'] ;
//echo $Recherche;
$db = mysql_connect('k.dejoye.sql.free.fr', 'k.dejoye', '20042006');
// on sélectionne la base
mysql_select_db('k_dejoye',$db);
// on crée la requête SQL
//$sql = "SELECT * FROM Glossaire WHERE 'Terme' LIKE '%$Recherche%'";
$sql = "SELECT * FROM Glossaire WHERE Terme like '$Recherche'";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL'.$sql.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
{
echo $data['Terme'].":".$data['Definition'];
}
// on ferme la connexion à mysql
mysql_close();
?>
Un autre souci se pose maintenant, je m'explique:
j'ai une liste de mots.Et dans cette liste, il est possible d'avoir de mots récurrents comme par exemple pomme et pomme de pain.
Avec mon code, si je recherche la définition de "pomme", il me donne que la première définition qu'il trouve. Je souhaiterais qu'il m'affiche toutes les définition avec pomme comme mot clé...
Autre souci: si je ne respecte pas exactement la casse de ma table, il ne m'affiche pas le terme et sa définition...
Merci pour tout!!!
<?php // on se connecte à MySQL
$Recherche=$_POST['Recherche'] ;
//echo $Recherche;
$db = mysql_connect('k.dejoye.sql.free.fr', 'k.dejoye', '20042006');
// on sélectionne la base
mysql_select_db('k_dejoye',$db);
// on crée la requête SQL
//$sql = "SELECT * FROM Glossaire WHERE 'Terme' LIKE '%$Recherche%'";
$sql = "SELECT * FROM Glossaire WHERE Terme like '$Recherche'";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL'.$sql.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
{
echo $data['Terme'].":".$data['Definition'];
}
// on ferme la connexion à mysql
mysql_close();
?>
Un autre souci se pose maintenant, je m'explique:
j'ai une liste de mots.Et dans cette liste, il est possible d'avoir de mots récurrents comme par exemple pomme et pomme de pain.
Avec mon code, si je recherche la définition de "pomme", il me donne que la première définition qu'il trouve. Je souhaiterais qu'il m'affiche toutes les définition avec pomme comme mot clé...
Autre souci: si je ne respecte pas exactement la casse de ma table, il ne m'affiche pas le terme et sa définition...
Merci pour tout!!!
Avec mon code, si je recherche la définition de "pomme", il me donne que la première définition qu'il trouve. Je souhaiterais qu'il m'affiche toutes les définition avec pomme comme mot clé...
Solution :
Reprends le $sql = "SELECT * FROM Glossaire WHERE 'Terme' LIKE '%$Recherche%'"; que tu as mis en commentaire (les % en SQL permettent de sélectionner tous les termes comprennant <Recherche>).
Par contre, dans ce cas tu récupèreras aussi 'Pommette'. Solution : dans ton while, rajoute un test avant de faire ton echo.
Autre souci: si je ne respecte pas exactement la casse de ma table, il ne m'affiche pas le terme et sa définition...
Le plus simple :
Dans la base, tu mets tout en majuscule, et tu fais :
$Recherche=strtoupper($_POST['Recherche'] );
Solution :
Reprends le $sql = "SELECT * FROM Glossaire WHERE 'Terme' LIKE '%$Recherche%'"; que tu as mis en commentaire (les % en SQL permettent de sélectionner tous les termes comprennant <Recherche>).
Par contre, dans ce cas tu récupèreras aussi 'Pommette'. Solution : dans ton while, rajoute un test avant de faire ton echo.
Autre souci: si je ne respecte pas exactement la casse de ma table, il ne m'affiche pas le terme et sa définition...
Le plus simple :
Dans la base, tu mets tout en majuscule, et tu fais :
$Recherche=strtoupper($_POST['Recherche'] );
Description string strtoupper(string string ) strtoupper retourne string avec tous ses caractères alphabétiques mis en majuscule.
En fait, ce n'est pas le contenu de ta BDD qui apparaîtra en majuscule.
Tu prends la variable $Recherche et tu la passes en majuscule.
Exemple :
Quelqu'un fait une recherche sur 'PoMme'
Tu mets strtoUpper('PoMme') = 'POMME' dans $Recherche
Tu fais ton SELECT.
Seule condition : il faut que le champs de ta table soit en majuscule.
Il y a moyen de faire la même chose directement dans la requête, mais comme c'est un calcul, ta requête sera beaucoup plus longue à passer :
SELECT * FROM ... WHERE <gras>UPPER(TonChamp) like UPPER('%$Recherche%')</gras>
Maintenant j'ai cette erreur:
Parse error: syntax error, unexpected T_STRING in /mnt/167/sda/6/1/k.dejoye/rechercher.php on line 11
Et je n'ai pas vu de {} autour du while il faut les mettre où?
Merci d'avance pour ton aide!