Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de syntaxe, il parait...

Parse error: syntax error, unexpected ';'

    6 avril 2020 à 11:18:56

    Bonjour,

    je cherche depuis hier d'où et comment cette erreur peut apparaitre...

    J'ai trois fonctions très simples qui fonctionnent par ailleurs

    function aff_console_titre($idconsole,$db)
        { // Affiche le nom de la console
    		$sql = "SELECT CAUcons_console 
    			FROM CAUcons 
    			WHERE CAUcons_id=".$idconsole;
    		$req = $db->query($sql);
    		$res = $req->fetch_assoc();
    		
    		return ($res['CAUcons_console']);
        }
    
    function aff_jeu_titre($idjeu,$db)
        { // Affiche le nom du jeu
    		$sql = "SELECT CAUjeux_titre 
    			FROM CAUjeux 
    			WHERE CAUjeux_id=".$idjeu;
    		$req = $db->query($sql);
    		$res = $req->fetch_assoc();
    		
    		return ($res['CAUjeux_titre']);
        }
    
    function aff_utilisateur($idutil,$db)
        { // Affiche le code, le nom et le ^prénom
    		$sql = "SELECT CAUutil_Nom, CAUutil_Prenom, CAUutil_Code
    			FROM CAUutil
    			WHERE CAUutil_id=".$idutil;
    		$req = $db->query($sql);
    		$res = $req->fetch_assoc();
    		return ($res['CAUutil_Code']." : ".$res['CAUutil_Nom'].", ".$res['CAUutil_Prenom']);
        }

    Et j'ai bout de code qui ne présnete pas de difficulté particulière:

    $sql = 'SELECT * 
    							FROM CAUsess
    							WHERE CAUsess_jour=CURDATE()
    							ORDER BY CAUsess_debut';
    				$req = $db->query($sql);
    				
    				// Consulter et Corriger sessions
    				$html.="<h3>Liste des Sessions du jour</h3>";
    
    				while($listsess = $req->fetch_assoc())
    					{
    						$html.="<li>";
    						
    						$sqlp = "SELECT CAUprog_jeuxid, CAUprog_consid
    									FROM CAUprog 
    									WHERE CAUprog_id='".$listsess['CAUsess_progid'];
    						$reqp = $db->query($sqlp);
    						$resp = $reqp->fetch_assoc();
    						
    						$html.="<a href='http://bibcauderan.free.fr/caumod.php?lasession=".$listsess['CAUsess_id']."'>test lien</a>";
    						$html.=aff_console_titre($resp['CAUprog_consid'],$db)." - ".aff_jeu_titre($resp['CAUprog_jeuxid'],$db)." : </a>";
    						$html.=aff_utilisateur($listsess['CAUsess_utilid']."de ";
    						$html.=$listsess['CAUsess_debut']." à ".$listsess['CAUsess_fin'];
    												
    												
    						$html.="</li>";
    					}
    				$html.='		
    					</ul>
    					<a href="http://bibcauderan.free.fr/caumod.php?Rafraichissement=ok">
    						Retour en mode normal. 
    					</a> ';



    Le truc étant que lorsque je retire une fonction, ça marche par exemple celle-ci:

    $html.=aff_utilisateur($listsess['CAUsess_utilid']."de ";

     Et pourtant, j'ai beau vérifier dans tous les sens, pas moyen de trouver mon erreur...

    Peut-être un regard extérieur?

    Merci d'avance

    ----------------------

    En affichant le code sur cette page, je remarque que dans cette ligne:

    $html.="<a href='http://bibcauderan.free.fr/caumod.php?lasession=".$listsess['CAUsess_id']."'>test lien</a>";

    Il ne me prend pas en format texte une référence pour la BDD et pourtant, j'ai bine mes guillemets mis correctement (du moins, j'en ai l'impression)...

    -
    Edité par Walhan 6 avril 2020 à 11:22:57

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2020 à 11:22:25

      Bonjour

      Donner la ligne qui provoque l'erreur aurait été un indice ..

      Ligne 16 : il n'y aurait pas une quote en trop ?

      WHERE CAUprog_id='".$listsess['CAUsess_progid'];

      Et une erreur peut en cacher une autre ... 

      A+

      -
      Edité par monkey3d 6 avril 2020 à 11:27:26

      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2020 à 11:23:35

        Salut !

        J'espère que c'est une erreur de copier-coller, parce que l'avant-dernière ligne de code que tu mentionnes n'est justement pas correcte, compte les paires de parenthèses pour voir… Et elle fait partie du deuxième bloc de code qui effectivement pose problème…

        -
        Edité par Ymox 6 avril 2020 à 11:24:12

        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2020 à 14:35:24

          J'ai d'abord corrigé l'apostrophe en trop... pas suffisant...

          J'ai revérifié mes parenthèses et effectivement, il y avait un problème et là, ça marche!

          Merci à vous deux pour ces yeux aiguisés.

          J'y retourne, ce n'est pas fini pour autant.

          Bonne journée

          -
          Edité par Walhan 6 avril 2020 à 14:35:48

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2020 à 14:51:30

            Pour ma part, quand je génère du HTML avec PHP, je préfère "arrêter" le PHP, quitte à ouvrir et refermer un nombre incalculable de fois, plutôt que de tout mettre dans une chaîne qui du coup risque d'avoir toujours la même coloration syntaxique du fait que c'est une chaîne PHP. De plus, j'aime à croire que ça prend un chouïa moins de mémoire parce que l'entier de la chaîne n'est pas à mettre quelque part avant d'être affichée.

            Ensuite, je te conseille de voir pour faire une jointure, cette requête dans une boucle, c'est un des points normalement simples à optimiser et où tu peux gagner pas mal en performances aussi.

            Voici déjà un aperçu de ce que ça donnerait en séparant mieux HTML et PHP (nonobstant les joyeuses pitreries du forum qui ne seront jamais corrigées) :

            <?php
            $sql = 'SELECT * FROM CAUsess WHERE CAUsess_jour=CURDATE() ORDER BY CAUsess_debut';
            $req = $db->query($sql); // Consulter et Corriger sessions ?>
            <h3>Liste des Sessions du jour</h3>
            <?php while ($listsess = $req->fetch_assoc()): ?>
            <li>
                <?php $sqlp = "SELECT CAUprog_jeuxid, CAUprog_consid FROM CAUprog WHERE CAUprog_id='" . $listsess['CAUsess_progid'];
                $reqp = $db->query($sqlp);
                $resp = $reqp->fetch_assoc(); ?>
                <a href="/caumod.php?lasession=<?= $listsess['CAUsess_id'] ?>">test lien</a>
                <?= aff_console_titre($resp['CAUprog_consid'], $db); ?> - <?= aff_jeu_titre($resp['CAUprog_jeuxid'], $db); ?> : </a>
                <?= aff_utilisateur($listsess['CAUsess_utilid']); ?> de <?= $listsess['CAUsess_debut'] ?> à <?= $listsess['CAUsess_fin']; ?>
                </li>
            <?php endwhile; ?>
            </ul>
            <a href="/caumod.php?Rafraichissement=ok">Retour en mode normal. </a>

            -
            Edité par Ymox 7 avril 2020 à 10:49:03

            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2020 à 16:01:58

              A une époque je faisais comme ça (intégrer du php dans du html) et un développeur m'a conseillé de faire l'inverse (intégrer le html dans une chaine gérée par le php).

              Mais je note effectivement l'argument économie de mémoire.

              Après, je ne code pas suffisamment pour changer maintenant mes habitudes (sinon je vais envahir le forum d'erreurs de syntaxe et d'oubli d'ouverture et fermeture).

              Mais merci pour le conseil, si je redéveloppe quelque chose d'autre, j'y penserai.

              Bonne journée

              • Partager sur Facebook
              • Partager sur Twitter
                7 avril 2020 à 16:06:51

                C'est marrant que tu notes l'histoire de la mémoire alors que pour moi c'est surtout l'histoire de la coloration syntaxique qui me paraît le plus intéressant  :D
                Suivant l'IDE, il pourra même te dire que certaines balises ne sont pas fermées ou pas ouvertes, ce qui n'est évidemment pas possible si on considère que c'est une chaîne de caractères pour PHP, pour lesquelles à ma connaissance aucun IDE ne s'amuse à aller regarder ce qu'il s'y trouve.

                Et quid d'une jointure plutôt que ta requête dans la boucle ?

                -
                Edité par Ymox 7 avril 2020 à 16:10:30

                • Partager sur Facebook
                • Partager sur Twitter
                  8 avril 2020 à 10:31:37

                  Ça doit faire plus de 20 ans (en vrai, je suis vieux...) que je n'ai pas fait de requêtes composées, alors j'essaie de rester simple...

                  Par contre, tu as tout à fait raison pour l'IDE, et ça pourrait même fortement m'aider vue mes erreurs habituelles...

                  Pour info, tu utilises quoi (moi: Notepad++)?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 avril 2020 à 10:40:00

                    Pour ma part, j'utilise Eclipse, question d'habitude. J'ai entendu beaucoup de bien de Visual Studio Code, j'ai aussi plein de connaissances qui utilisent PhpStorm (mais celui-ci n'est pas gratuit suivant le cas d'utilisation), tu trouveras aussi mention d'Atom ou NetBeans, et ça c'est pour ceux que je connais.

                    Attention cependant : Notepad++ est, comme Sublime Text, un éditeur de texte qui met de la coloration syntaxique, un éditeur de code propose justement des fonctionnalités plus poussées en analysant la validité de la syntaxe par exemple.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 avril 2020 à 10:56:46

                      J'utilise aussi Eclipse avec Symfony.

                      Offre beaucoup d'intérêt pour l'édition car outre la coloration syntaxique (php, twig, ..), suggère les namespaces, les classes, les types, etc.

                      Et en annexe avec différents plugins, permet de gèrer git, etc.

                      Je me doute que d'autres outils savent faire la même chose.

                      A+

                      -
                      Edité par monkey3d 8 avril 2020 à 10:57:17

                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 avril 2020 à 6:40:11

                        Notepad++ propose également les champs etc...

                        Au fait, j'ai trouvé pour mon problème de TIME...

                        Comme le disait Ymox, c'est un format texte qui est attendu dans SQL, donc... Il ne faut pas oublier les quotes...

                        		$sql ="UPDATE CAUsess SET 
                        				CAUsess_progid=".$_POST['modSessProgramme'].",
                        				CAUsess_utilid=".$_POST['modSessUtilisateur'].",
                        				CAUsess_debut='".$_POST['heuredebut']."',
                        				CAUsess_fin='".$_POST['heurefin']."'
                        				WHERE CAUsess_id='".$_POST['SessId']."'";

                        Et maintenant, ça passe parfaitement sans soucis ni fonctions...

                        Merci à vous, je vais reprendre ma nuit de sommeil là où je l'avais arrêté.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 avril 2020 à 8:46:58

                          La solution ci-dessus ne concerne pas ce sujet mais cet autre.


                          Notepad++ n'est pas un IDE, je doute qu'il valide la syntaxe. Au pire tu peux détecter toi-même les erreurs du fait des étrangetés de la coloration syntaxique et c'est un bon indicateur (c'est à ça que ça sert quand c'est bien fait, ce qui n'est pas le cas avec l'outil utilisé sur ce site), mais il ne va pas te dire qu'il ne trouve pas telle ou telle classe, ou que la paire de parenthèses/crochets/accolades n'est pas complète, ou que la variable que tu utilises n'existe pas.

                          -
                          Edité par Ymox 9 avril 2020 à 9:25:37

                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 avril 2020 à 9:16:27

                            Coïncidence ... j'ai upgradé ce matin Eclipse version php en release 2020-03.

                            Notepad++ est sans doute un bon outil dans la gamme des éditeurs de texte.

                            Eclipse est un atelier de développement complet.

                            Les 2 produits ne sont pas comparables.

                            A+

                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 avril 2020 à 15:58:03

                              @Ymox : Autant pour moi, oui pour les jointures, bien entendu... Lorsque je t'ai lu, j'ai pensé UNION de requête et là, je dis non pour moi. Mais les jointures, oui, tout à fait...

                              Durant mes études, on me faisait programmer avec l'éditeur de texte de base, alors pour moi, Notepad++ est déjà un environnement de luxe, mais je vais essayer Eclipse dès que j'aurais stabilisé mon programme actuel (histoire de ne pas perdre de temps à m'habituer à un nouvel environnement alors que j'ai une autre problématique en tête).

                              Merci beaucoup à vous deux et bon week end.

                              -
                              Edité par Walhan 11 avril 2020 à 15:58:30

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Erreur de syntaxe, il parait...

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown