IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requete sql qui ne s'exécute pas quand elle est importé en php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Requete sql qui ne s'exécute pas quand elle est importé en php
    Bonjour, ma requete sql ne s'exécute pas quand elle est importé en php mais pourtant elle marche sur phpMyAdmin (je bosse sur WAMP).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
                        <?php
     
                        // Connexion au serveur MySQL
                        $server = "localhost";
                        $login = "root";
                        $mdp = "";
                        $db = "truc";
                        $link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
     
     
    					$rq="SELECT partie_fini.timestamp,partie_fini.scenario,(partie_fini.nb_fini-partie_perdue.nb_P) AS R, (partie_jouee.nb_jouées-partie_fini.nb_fini) AS I, partie_perdue.nb_P AS P"
    ." from (SELECT COUNT(scenario) AS nb_fini, scenario, timestamp"
    ." FROM partie_enreg WHERE label='fin-partie' AND partie_enreg.course='Formation et démonstration'"
    ." GROUP BY scenario"." HAVING nb_fini > 1) as partie_fini,"." (SELECT COUNT(scenario) AS nb_P, scenario"
    ." FROM partie_enreg WHERE label='fin-partie' AND intitule='echec' AND partie_enreg.course='Formation et démonstration'"
    ." GROUP BY scenario"." HAVING nb_P> 1) as partie_perdue,"
    ." (SELECT COUNT(scenario) AS nb_jouées, scenario"." FROM partie where joueur IN (SELECT id FROM joueur WHERE course='Formation et démonstration') GROUP BY scenario"
    ." HAVING COUNT(scenario) > 1) as partie_jouee"." WHERE partie_fini.scenario = partie_jouee.scenario AND partie_fini.scenario=partie_perdue.scenario"." ORDER BY partie_fini.scenario";
     
                        $results = mysqli_query($link, $rq);
    					//or die ('Execution de la requête impossible');
     
     
     
                        while ($row = mysqli_fetch_assoc($results)) {
    						echo '<tr>';
     
                             echo'  <td class="col-1">'.$row["partie_fini.timestamp"].'</td>
                                    <td class="col-2">'.$row["partie_fini.scenario"].'</td>
    								<td class="col-3">'.$row["R"].'</td>
    								<td class="col-4">'.$row["I"].'</td>
    								<td class="col-5">'.$row["P"].'</td>
    								
    								</tr>';	
    					}
     
                        ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Enlève toutes les concaténations inutiles (requête).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Fait mais ça ne change rien... :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
                        <?php
     
                        // Connexion au serveur MySQL
                        $server = "localhost";
                        $login = "root";
                        $mdp = "";
                        $db = "truc";
                        $link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
     
     
    					$rq="SELECT partie_fini.timestamp,partie_fini.scenario,(partie_fini.nb_fini-partie_perdue.nb_P) AS R, (partie_jouee.nb_jouées-partie_fini.nb_fini) AS I, partie_perdue.nb_P AS P from (SELECT COUNT(scenario) AS nb_fini, scenario, timestamp FROM partie_enreg WHERE label='fin-partie' AND partie_enreg.course='Formation et démonstration' GROUP BY scenario HAVING nb_fini > 1) as partie_fini, (SELECT COUNT(scenario) AS nb_P, scenario FROM partie_enreg WHERE label='fin-partie' AND intitule='echec' AND partie_enreg.course='Formation et démonstration' GROUP BY scenario HAVING nb_P> 1) as partie_perdue, (SELECT COUNT(scenario) AS nb_jouées, scenario FROM partie where joueur IN (SELECT id FROM joueur WHERE course='Formation et démonstration') GROUP BY scenario HAVING COUNT(scenario) > 1) as partie_jouee WHERE partie_fini.scenario = partie_jouee.scenario AND partie_fini.scenario=partie_perdue.scenario ORDER BY partie_fini.scenario";
     
                        $results = mysqli_query($link, $rq);
    					//or die ('Execution de la requête impossible');
     
     
     
                        while ($row = mysqli_fetch_assoc($results)) {
    						echo '<tr>';
     
                             echo'  <td class="col-1">'.$row["partie_fini.timestamp"].'</td>
                                    <td class="col-2">'.$row["partie_fini.scenario"].'</td>
    								<td class="col-3">'.$row["R"].'</td>
    								<td class="col-4">'.$row["I"].'</td>
    								<td class="col-5">'.$row["P"].'</td>
    								
    								</tr>';	
    					}
     
                        ?>

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Quand tu dis "ne s'exécute pas", ça veut que ta requête plante ou qu'elle ne renvoie aucun résultat ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Alors j'avais des soucis avec les accents dans mon sql, je les ai retiré et effectivement le résultat de ma requete ne s'affiche pas (il s'affiche pourtant quand je test dans phpMyAdmins ou meme dans HeidiSQL...)


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
     
                        // Connexion au serveur MySQL
                        $server = "localhost";
                        $login = "root";
                        $mdp = "";
                        $db = "Truc";
                        $link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
    					/*
                        $rq_a="SELECT COUNT(scenario) AS nb_fini, scenario, timestamp FROM partie_enreg WHERE label='fin-partie' AND partie_enreg.course='Truc - Formation et démonstration' GROUP BY scenario HAVING nb_fini > 1";
    					$rq_b="SELECT COUNT(scenario) AS nb_P, scenario FROM partie_enreg WHERE label='fin-partie' AND intitule='echec' AND partie_enreg.course='Truc - Formation et démonstration' GROUP BY scenario HAVING nb_P> 1";
    					$rq_c="SELECT COUNT(scenario) AS nb_jouees, scenario FROM partie where joueur IN (SELECT id FROM joueur WHERE course='Truc - Formation et démonstration') GROUP BY scenario HAVING COUNT(scenario) > 1"; 
                        $rq="SELECT partie_fini.timestamp, partie_fini.scenario,(partie_fini.nb_fini-partie_perdue.nb_P) AS R, (partie_jouee.nb_jouees-partie_fini.nb_fini) AS I, partie_perdue.nb_P AS P from (".$rq_a.") as partie_fini, (".$rq_b.") as partie_perdue, (SELECT COUNT(scenario) AS nb_jouees, scenario FROM partie where joueur IN (".$rq_c.") as partie_jouee WHERE partie_fini.scenario = partie_jouee.scenario AND partie_fini.scenario=partie_perdue.scenario ORDER BY partie_fini.scenario";
    					*/
    					$rq2="SELECT partie_fini.timestamp,partie_fini.scenario,(partie_fini.nb_fini-partie_perdue.nb_P) AS R, (partie_jouee.nb_jouees-partie_fini.nb_fini) AS I, partie_perdue.nb_P AS P
    						from (SELECT COUNT(scenario) AS nb_fini, scenario, timestamp
    						FROM partie_enreg WHERE label='fin-partie' AND partie_enreg.course='Truc - Formation et démonstration'
    						GROUP BY scenario
    						HAVING nb_fini > 1) as partie_fini,
    						(SELECT COUNT(scenario) AS nb_P, scenario
    						FROM partie_enreg WHERE label='fin-partie' AND intitule='echec' AND partie_enreg.course='Truc - Formation et démonstration'
    						GROUP BY scenario
    						HAVING nb_P> 1) as partie_perdue,
    						(SELECT COUNT(scenario) AS nb_jouees, scenario
    						FROM partie where joueur IN (SELECT id FROM joueur WHERE course='Truc - Formation et démonstration') GROUP BY scenario
    						HAVING COUNT(scenario) > 1) as partie_jouee
    						WHERE partie_fini.scenario = partie_jouee.scenario AND partie_fini.scenario=partie_perdue.scenario
    						ORDER BY partie_fini.scenario
    						";
     
    						//$sql = " SELECT * FROM enregistrement where partie < 800";
    					//var_dump($rq);
    					//var_dump(mysqli_query($link, $rq2));
     
    					if($res = mysqli_query($link, $rq2)) {
     
    						var_dump (mysqli_num_rows($res));
     
    						while ($row = mysqli_fetch_array($res)) {
    							echo "test";
    							echo '<tr>';
     
    							 echo'  <td class="col-1">'.$row["partie_fini.timestamp"].'</td>
    									<td class="col-2">'.$row["partie_fini.scenario"].'</td>
    									<td class="col-3">'.$row["R"].'</td>
    									<td class="col-4">'.$row["I"].'</td>
    									<td class="col-5">'.$row["P"].'</td>
    									
    									</tr>';	
    						}
    					}
                        ?>

    A la suite du code je n'ai que:
    C:\wamp64\www\Truc\traitement.php:114:int 0



    Et si je dé-commente
    var_dump(mysqli_query($link, $rq2));
    ça me retourne

    C:\wamp64\www\Truc\traitement.php:110:
    object(mysqli_result)[2]
    public 'current_field' => int 0
    public 'field_count' => int 5
    public 'lengths' => null
    public 'num_rows' => int 0
    public 'type' => int 0

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bon j'ai réglé le soucis principal mais maintenant je me rend compte qu'il y a des accents dans la bdd et ça me fait planté le tout alors que je ne peux pas la modifier...

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Autrement dit, tu as un problème d'encodage. Vérifie l'encodage des fichiers PHP, de la page Web et des tables de la base de données.

    A lire sur le sujet : Encoder son site intégralement en UTF-8
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Je bute sur le meme problème, et ce qui suit ne vient pas de l'encodage je ne sais vraiment pas comment régler ce soucis...

    Trois cas d'essais pour mieux cerner le problème
    Le 1er ce que je veux avec la variable
    Le 2ème ce qui marche mais sans variable (donc ça m’embête car ça doit pouvoir changer en fonction du choix de la page précédent)
    Le 3ème cas c'est la méthode du 1er mais sur une requête plus petite et ça marche... (Donc la 1ère devrait marcher)




    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <tbody class="tbody">
                        <?php 
     
                        // Connexion au serveur MySQL
                        $server = "localhost";
                        $login = "root";
                        $mdp = "";
                        $db = "truc";
                        $link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
     
    					//AVEC VARIABLES
     
    					$rq2="SELECT partie_fini.timestamp AS temps,partie_fini.scenario AS scenar,(partie_fini.nb_fini-partie_perdue.nb_P) AS R, (partie_jouee.nb_jouees-partie_fini.nb_fini) AS I, partie_perdue.nb_P AS P ".
    						"from (SELECT COUNT(scenario) AS nb_fini, scenario, timestamp ".
    						"FROM partie_enreg WHERE label='fin-partie' AND partie_enreg.course='" . $cours . "'".
    						" GROUP BY scenario ".
    						"HAVING nb_fini > 1) as partie_fini, ".
    						"(SELECT COUNT(scenario) AS nb_P, scenario ".
    						"FROM partie_enreg WHERE label='fin-partie' AND intitule='echec' AND partie_enreg.course='" . $cours . "'".
    						" GROUP BY scenario ".
    						"HAVING nb_P> 1) as partie_perdue, ".
    						"(SELECT COUNT(scenario) AS nb_jouees, scenario ".
    						"FROM partie where joueur IN (SELECT id FROM joueur WHERE course='" . $cours . "'".
    						" HAVING COUNT(scenario) > 1) as partie_jouee ".
    						"WHERE partie_fini.scenario = partie_jouee.scenario AND partie_fini.scenario=partie_perdue.scenario ".
    						"ORDER BY partie_fini.scenario;";
     
    					var_dump(mysqli_query($link, $rq2));
     
    					if($res = mysqli_query($link, $rq2)) {
    						var_dump (mysqli_num_rows($res));
     
    						while ($row = mysqli_fetch_assoc($res)) {
     
    							echo '<tr>';
     
    							 echo'  <td class="col-1">'.$row["temps"].'</td>
    									<td class="col-2"><a href="traitement2.php" method="POST" name="scenar">'.$row["scenar"].'</a></td>
    									<td class="col-3">'.$row["R"].'</td>
    									<td class="col-4">'.$row["I"].'</td>
    									<td class="col-5">'.$row["P"].'</td>
    									
    									</tr>';	
    						}
    					}
                        ?>
                    </tbody>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <tbody class="tbody">
                        <?php 
     
                        // Connexion au serveur MySQL
                        $server = "localhost";
                        $login = "root";
                        $mdp = "";
                        $db = "truc";
                        $link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
     
    					//SANS VARIABLES
    					$rq2=Utf8_decode("SELECT partie_fini.timestamp AS temps,partie_fini.scenario AS scenar,(partie_fini.nb_fini-partie_perdue.nb_P) AS R, (partie_jouee.nb_jouees-partie_fini.nb_fini) AS I, partie_perdue.nb_P AS P ".
    						"from (SELECT COUNT(scenario) AS nb_fini, scenario, timestamp ".
    						"FROM partie_enreg WHERE label='fin-partie' AND partie_enreg.course='Formation et demonstration' ".
    						"GROUP BY scenario ".
    						"HAVING nb_fini > 1) as partie_fini, ".
    						"(SELECT COUNT(scenario) AS nb_P, scenario ".
    						"FROM partie_enreg WHERE label='fin-partie' AND intitule='echec' AND partie_enreg.course='Formation et demonstration' ".
    						"GROUP BY scenario ".
    						"HAVING nb_P> 1) as partie_perdue, ".
    						"(SELECT COUNT(scenario) AS nb_jouees, scenario ".
    						"FROM partie where joueur IN (SELECT id FROM joueur WHERE course='Formation et demonstration') GROUP BY scenario ".
    						"HAVING COUNT(scenario) > 1) as partie_jouee ".
    						"WHERE partie_fini.scenario = partie_jouee.scenario AND partie_fini.scenario=partie_perdue.scenario ".
    						"ORDER BY partie_fini.scenario;");
     
     
     
     
     
     
     
    					var_dump(mysqli_query($link, $rq2));
     
    					if($res = mysqli_query($link, $rq2)) {
    						var_dump (mysqli_num_rows($res));
     
    						while ($row = mysqli_fetch_assoc($res)) {
     
    							echo '<tr>';
     
    							 echo'  <td class="col-1">'.$row["temps"].'</td>
    									<td class="col-2"><a href="traitement2.php" method="POST" name="scenar">'.$row["scenar"].'</a></td>
    									<td class="col-3">'.$row["R"].'</td>
    									<td class="col-4">'.$row["I"].'</td>
    									<td class="col-5">'.$row["P"].'</td>
    									
    									</tr>';	
    						}
    					}
                        ?>
                    </tbody>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <tbody class="tbody">
                        <?php 
     
                        // Connexion au serveur MySQL
                        $server = "localhost";
                        $login = "root";
                        $mdp = "";
                        $db = "truc";
                        $link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
     
    					$rq2= "SELECT id FROM joueur WHERE course='" . $cours . "'" ;
     
    					var_dump(mysqli_query($link, $rq2));
     
    					if($res = mysqli_query($link, $rq2)) {
    						var_dump (mysqli_num_rows($res));
     
    						while ($row = mysqli_fetch_assoc($res)) {
     
    							echo '<tr>';
     
    							 echo'  <td class="col-1">'.$row["temps"].'</td>
    									<td class="col-2"><a href="traitement2.php" method="POST" name="scenar">'.$row["scenar"].'</a></td>
    									<td class="col-3">'.$row["R"].'</td>
    									<td class="col-4">'.$row["I"].'</td>
    									<td class="col-5">'.$row["P"].'</td>
    									
    									</tr>';	
    						}
    					}
                        ?>
                    </tbody>

    Merci pour vos réponses

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Vous connaissez vous l'histoire de la parenthèse et du group by qui ont sauté dans un copié collé et qui bloquent un étudiant pendant beaucoup trop de temps?

    Non? Alors laissez moi vous raconter:

    PROBLÈME RÉSOLU

    (merci de votre aide )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Doctrine] Requete Update qui ne s'exécute pas.
    Par Tyra3l dans le forum ORM
    Réponses: 4
    Dernier message: 17/06/2011, 13h31
  2. [A-03] Requete SQL qui ne s'execute pas
    Par Flo435 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/02/2009, 15h37
  3. Réponses: 4
    Dernier message: 21/08/2007, 16h47
  4. probleme de requete mysql qui ne s'exécute pas
    Par anto48_4 dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/03/2006, 10h51
  5. [MySQL] requete sql qui ne s'exécute pas
    Par anto48_4 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/03/2006, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo