J'ai une erreur au chargement de la page : Parse error: syntax error, unex...

Résolu/Fermé
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021 - Modifié le 23 janv. 2021 à 16:22
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 23 janv. 2021 à 23:24
J'ai cette page php qui fait l'objet d'un "include" dans mon index.php :
<?php
mysql_connect('localhost', 'xxxxxx', 'xxxxxxx') OR die ('Erreur de connexion à la base');
mysql_select_db('c5_plus') OR die ('Erreur de sélection de la base');

$dm1 = mysql_query('SELECT GROUP_CONCAT(label SEPARATOR', ')  FROM produits WHERE menu = '1' GROUP BY menu;') OR die ('Erreur de la requête MySQL dm1');
mysql_close();
?>

<h2 align="center">Les Menus</h2>
<p align="center">Que diriez-vous d'un menu à emporter ?</p>


<p><?php echo "$dm1" ?> :  €</p>

Et j'obtiens cette erreur :
"Parse error: syntax error, unexpected T_LNUMBER in /mnt/105/sdb/b/c/xxxxx/traiteur/xxxx.php on line 5"

J'essaye d'afficher le résultat de ma requête sql à la place d'un bout de texte dans ma page.
J'ai supprimé plein de champs parce que je fais plusieurs appels à des requêtes pour remplir les données variables de la page.

J'ai essayé avec plein d'exemples trouvés, en plus de ceux contre la résolution d'erreurs etc., rien n'y fait !
J'ai encadré les requêtes d'un "try{}" mais ça me donne une erreur sur le {.
J'ai essayé d'échapper avec "\" les caractères { et ça reste en erreur.
J'ai contrôlé les espaces et les retours mais je ne vois rien à modifier.

J'avais d'abord essayé sans passer par "$dm1" mais directement par la valeur de la requête et ça n'a pas marché.

Je suis un peu perdu, j'ai consulté différents tutos et cours php mais je ne trouve pas le cas qui correspond à mon besoin.

Quelqu'un peut-il m'éclairer ?
A voir également:

5 réponses

Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021
Modifié le 23 janv. 2021 à 16:37
J'ai modifié les ' par " dans la requête et ça me donne la page normale avec, au lieu du résultat (les libellés concaténés des plats du menu 1) ça :

Resource id #6 : €
0
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021
23 janv. 2021 à 16:43
j'ai remplacé "echo" par "print" et j'obtiens le même résultat...
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021
23 janv. 2021 à 16:51
As tu lu la réponse que je t'ai donné ?
0
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021 > jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
23 janv. 2021 à 17:03
Bonjour !
..je suis dessus !
Merci de cette célérité !
...
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 23 janv. 2021 à 17:26
Bonjour,

Déjà, ta requête contenant déjà des simples quotes à l'intérieur .. il faut utiliser, pour l'entourer.. des doubles quotes
$sql = "SELECT GROUP_CONCAT(label SEPARATOR ', ') AS LABELS FROM produits WHERE menu = :menu GROUP BY menu;";

$dm1 = mysql_query($sql) OR die ('Erreur de connexion à la base');


Ensuite, sache que l'extension mysql_* est obsolète et qu'il ne faut plus l'utiliser.
A la place, il te faudra modifier ton code en mysqli ou en PDO.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

En PDO par exemple
<?php
// DEBUT DU SCRIPT ... AVANT TOUT CODE HTML !!
//---------------------------------------------------//
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion à la bdd
try{
  $bdd =new PDO('mysql:host=localhost; dbname=c5_plus; charset=utf8', 'root', '');
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}


//préparation de la requête et des variables
$sql = "SELECT GROUP_CONCAT(label SEPARATOR ', ') AS LABELS FROM produits WHERE menu = :menu GROUP BY menu;";
$datas = array(':menu'=>1);

//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}

//on stocke le résultat de la requête dans un array
$row = $requete->fetch();
$labels = !empty($row) ? $row['LABELS'] : "-";
?>
<!Doctype>
<html>
  <head>
    <meta charset="utf-8">
    <title>Ton titre</title>
  </head>
  <body>

    <h2 align="center">Les Menus</h2>
    <p align="center">Que diriez-vous d'un menu à emporter ?</p>


    <p><?php echo "$dm1" ?> :  €</p>
  </body>
</html>


Je t'invite, pour tes prochains codes à lire et à appliquer le contenu de ces liens
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

et https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.


0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
23 janv. 2021 à 18:35
Par contre, si tu dev et testes tes pages sur free ... je pense qu'il faut passer en php 5.6 (minimum, PHP 7 si possible
Je ne sais pas si ceci est encore valable :
http://les.pages.perso.chez.free.fr/migrations/php5v6.io
0
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021
Modifié le 23 janv. 2021 à 19:48
J'ai réutilisé le code pour obtenir le descriptif du premier menu (il y en a 3), ça donne ça :
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
try{
  $bdd = new PDO('mysql:host=localhost;dbname=c5_plus', 'xxxxxx', xxxxxxx');
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
  $sql = "SELECT GROUP_CONCAT(label SEPARATOR ', ') AS LABELS FROM produits WHERE menu = :menu GROUP BY menu;";
  $dm1 = array(':menu'=>1);
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($dm1) ;
}catch(Exception $e){
  echo " Erreur ! ".$e->getMessage();
  echo " Les datas : " ;
 print_r($dm1);
}
$row = $requete->fetch();
$dm1 = !empty($row) ? $row['LABELS'] : "-";
?>

J'ai collé ça dans fichier passant par un include (type if elseif else) pour qu'il soit avant le code html de ma page générale (puisque la page menu n'est en fait qu'un bout du body) .
J'ai cette erreur :
Parse error: syntax error, unexpected '{' in /mnt/105/sdb/b/c/c5.plus/traiteur/sqlquery.php on line 5

Ligne 5 : try{

Je pense que c'est la question du caractère en php.. ..je creuse...

EDIT : Correction des balises de code. ( Ajout du langage pour avoir la coloration syntaxique )
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
23 janv. 2021 à 19:52
As tu lu mon autre message parlant de la version de php ???

Les pages perso free sont sur une très ancienne version de php ( php 4)

Aujourd'hui, on code en php 7.3 ... ( et la version 8 de php arrive ... )
Autant dire que tu as 20 ans de retard ....

Donc :
Pour faire tes dev, soit tu le fais en local sur ton ordi ( en utilisant un logiciel tel que Laragon ou Xampp pour émuler un serveur apache/php )
Soit tu héberges tes pages sur un "vrai" hébergeur qui a ses versions php à jour
Soit, sur free, tu peux, via un fichier .htaccess "forcer" la version de php au minimum en version 5.6 ... voir, si possible, en 7 ..


PS: Fais l'effort de lire toutes les réponses qu'on te donne.
J'ai l'impression que tu les lies en diagonale et/ou que tu ne les lies même pas.
0
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021
23 janv. 2021 à 20:16
Je suis en train de me dire que c'est la poisse !
J'ai collé le .htaccess avec le passage en php 5.6 et plus aucun lien ne fonctionne. Je trouve ça bien que ça évolue mais si ça condamne tout le "plus de 20 ans" comme tu dis ça va rendre caduc des tas de sites qui ont fait aussi l'histoire d'internet en France...
Enfin bon ! Si le but de tout ce qui se créé est d'être obsolète dès la naissance, je comprends...
Et php 92.1 en 2114 ressemblera à des hiéroglyphes pour php 191.3 en 3245...
|-b
;)
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 23 janv. 2021 à 21:17
Je te rassure, la plus part des sites ont été mise à jour ...
Et puis, ta comparaison est ridicule ... Les choses changent, évoluent.. pour des raisons de sécurité, de performances ... sinon on en serait encore au minitel ... voir au télégraphe... ou à utiliser des tambours et des signaux de fumée ...

Pour quelqu'un qui dit faire des formations... et créer des sites web sur sa page perso... ben.. heu... je ne sais pas dans quelle grotte (surtout qu'il n'y en a pas vers chez toi... ) tu as vécu ces vingt dernières années... mais les choses bougent.
J'espère que tes formations windows ne se font pas sur du windows 3.11 ...( et pourtant.. lui aussi c'est une page "hsitorique" des ordinateurs personnels )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Recoh Messages postés 37 Date d'inscription dimanche 19 juillet 2020 Statut Membre Dernière intervention 2 mars 2021
23 janv. 2021 à 23:11
lmao
C'est pour l' "obsolescence" que tu m'accables par ces mots ?!
Trêve de plaisanterie, effectivement, j'utilise surtout du html et du php très basique car je ne fais que des sites persos, et si on me demande un site capable de gérer un panier, une commande, un achat, je refuse et je renvoie vers un vrai webmaster, dont c'est le métier. Lui, sait travailler avec les BD et sait à qui demander quand il veut une solution. Je ne vends pas de site, j'applique l'architecture de mon site perso -tel qu'il est, il me plaît ! Et je l'adapte au souhait dans la limite de ce que je maîtrise. Par contre, pour "dépanner" un pote qui n'a pas un gros revenu et veut essayer d'utiliser un site pour promouvoir ses produits et informer ses clients, ça me va.
Il m'a suggéré la possibilité d'une commande directe, ce qui implique un panier, une commande, un choix, un prix, des tables et un SGBD ..! Et bien sûr, une grosse envie, de ma part, d'y arriver, comme si je savais le faire !!
Du coup, j'apprends, je me rends compte des impasses, des remises en question, les doutes quoi !
Je vais déjà essayer de tout mettre à la sauce php7, j'ai téléchargé la doc complète de php dot com. On verra bien !?
Merci encore pour tes conseils jordane45
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
23 janv. 2021 à 23:24
Rien n'est impossible à réaliser et tout s'apprend.
Il ne faut juste essayer de se mettre aux gouts du jours des technologies.

Pour le panier, tu peux, par exemple t'inspirer d'un code comme celui -ci
https://codes-sources.commentcamarche.net/source/102874-php-panier-caddi-virtuel-en-session
Cette version n'est que pour l'exemple et ne se sert que des variables de session.
Afin de pouvoir l'appliquer à un "vrai" site marchand, il faut y ajouter une gestion via base de données.

Et pour ce qui est de développer/tester tes scripts, je t'invite à installer sur ton ordi
( si windows ) un logiciel tel que Laragon ou xampp,
(sur mac : ) Mamp
(si Linux ) : là tu peux directement installer les packages apache/php/mysql

car les tester sur free n'est pas la meilleur solution je pense

Ensuite, pour ce qui est du moteur de connexion à la bdd, tu as le choix entre PDO (celui que je préfère et utilise au quotidien dans mon travail ) ou mysqli ( en Style procédural ou en Style orienté objet .. peu importe )

Le plus important avant de te lancer dans ton projet est de réaliser en premier un cahier des charges (qui liste en grandes lignes les différentes pages attendues )
Puis le découper dans un cahier des spécificités fonctionnelles ( en y détaillant, pour chaque page, chaque fonctionnalités qui seront nécessaires )
Puis penser/concevoir le modèle de la bdd

Et seulement après tout ça.. commencer à coder.

Je t'invite également à installer des cms e-commerce comme Magento ou prestashop ... juste pour voir comment ça fonctionne, voir à quoi ressemblent les bases de données ....
Ca donne de bonnes idées pour ensuite réaliser ces propres dev.
0