[RESOLU] Requête Mysql imbriqué dans une autre, enfin je pense ?

Petit nouveau ! | 6 Messages

23 nov. 2016, 18:05

Bonjour, je débute en php et html etc...
je code une appli web pour mon assos sportive et je rencontre un problème.

Soyez indulgent svp :)

Pour faire court je fait un système de stats des joueurs de basket ball.
J'ai créer les tables :
- joueurs (nom)
- rencontres (date ,locaux , visiteurs ,score_locaux, score_visiteurs)
je créer une table dynamiquement nommé (locaux-visiteurs) quand on renseigne dans un form les champs de la table rencontres. Cette table contient les champ (nom, points, fautes,etc) . Le champ nom vient de la table joueurs.
Je renseigne cette table dans un form pour saisir les statistiques de rencontre, ou l'on selectionne la rencontre, le joueur depuis des listes deroulantes et on saisi les stats points,fautes,etc...

Jusque la tout va bien;

Maintenant je dois afficher sur la page html les données de ses deux tables et c'est la que ça ce gatte !!!
<?php
                                        try
                                        {
                                            // On se connecte à MySQL
                                            $bdd = new PDO('mysql:host=localhost;dbname=bce;charset=utf8', 'root', '');
                                        }
                                        catch(Exception $e)
                                        {
                                            // En cas d'erreur, on affiche un message et on arrête tout
                                                die('Erreur : '.$e->getMessage());
                                        }

                                        // Si tout va bien, on peut continuer

                                        // On récupère tout le contenu de la table jeux_video
                                        $reponse = $bdd->query('SELECT * FROM journee ORDER BY date_rencontre DESC');                                        

                                        // On affiche chaque entrée une à une
                                        while ($donnees = $reponse->fetch())
                                        {
                                        ?>
                                            <p>
                                            <?php 
                                            $rencontre=$donnees['locaux']."-".$donnees['visiteurs'];
                                            echo $donnees['date_rencontre']." "; 
                                            echo $rencontre." "; 
                                            echo $donnees['score_locaux']."-".$donnees['score_visiteur']    
                                                
                                                //Affichage de la table des stats $rencontre 
                                                 $reponse2 = $bdd->query("SELECT * FROM `".$rencontre."`");
                                                 while ($donnees2 = $reponse2->fetch())
                                                    {
                                                        echo $donnees2['nom']." ".$donnees2['point']." ".$donnees2['fautes'];
                                                    }
                                            
                                            ?>     
                                            </p>                                        
                                            <?php
                                        }
                                        $reponse->closeCursor(); // Termine le traitement de la requête

                                        ?>
                                    [/color]
j'ai l'erreur :
( ! ) Parse error: syntax error, unexpected '$reponse2' (T_VARIABLE), expecting ',' or ';' in E:\wamp64\www\lab\statistiques.php on line 91
J'imagine que je m'y prend mal la:
//Affichage de la table des stats $rencontre 
                                                 $reponse2 = $bdd->query("SELECT * FROM `".$rencontre."`");
                                                 while ($donnees2 = $reponse2->fetch())
                                                    {
                                                        echo $donnees2['nom']." ".$donnees2['point']." ".$donnees2['fautes'];
                                                    }
mais voila aprés quelques heures de recherches je bloque.

Si quelqu'un peu m'expliquer la méthode a suivre et en esperant ne pas devoir revoir l'organisation de ma base de donnée snif snif !!

Merci

Mammouth du PHP | 786 Messages

23 nov. 2016, 18:28

c'est à cette ligne qu'il manque ce qui est indiqué dans le message d'erreur.
echo $donnees['score_locaux']."-".$donnees['score_visiteur']

Petit nouveau ! | 6 Messages

23 nov. 2016, 19:02

Effectivement je n'ai pas préciser la ligne concernée par le message c'est :
$reponse2 = $bdd->query("SELECT * FROM `".$rencontre."`");

Petit nouveau ! | 6 Messages

23 nov. 2016, 19:07

Je viens de tester au cas ou ça viendrai de la variable rencontre et donc une erreur dans ma requête bien que le message n'indique pas ça , mais ça ne change rien.
$reponse2 = $bdd->query("SELECT * FROM joueurs");
Le problème ne viendrait t il pas de $bdd qui est ouvert pour l'affichage de la boucle while ?
Je ne sais plus ou chercher lol

Petit nouveau ! | 6 Messages

23 nov. 2016, 19:14

Mille excuse, j'avais pas compris ta réponse !! Honte sur moi
j'ai oublié le ; sur la ligne 88
echo $donnees['score_locaux']."-".$donnees['score_visiteur'];
Il est temps de faire une longue pause !

Merci beaucoup

Eléphanteau du PHP | 12 Messages

25 nov. 2016, 17:40

Salut,

Bien que marqué "Résolu", je n'ai pas bien compris si tu as trouvé ta solution.

Je découvre en ce moment PDO. Utilisant mysqli jusque là, je fais souvent des requêtes générées par le résultat d'une précédente.
Et je constate que PDO n'aime pas trop ça, surtout avec les fetch(). Peut-être n'est-ce pas fait pour après tout.

En ce qui me concerne, je passe désormais par des requêtes préparées, des bindParam mais aussi des fetchAll().

Dans la théorie, fetchAll() serait plus gourmant que fetch(), mais quelques articles que j'ai lu sur le net ont plutôt tendance à dire que "ça dépend du contexte".

A voir si ça peut t'aider dans ton code !

Bon courage !

Petit nouveau ! | 6 Messages

25 nov. 2016, 18:03

Merci mais non c était juste une erreur de syntaxe le ;
Erreur de débutant que je suis lol