Prob php

Résolu
Bonjour,
cette page m'affiche a chaque fois erreur d'exécution de la requête:
<html>
<body>
<?php
//affectation des valeurs saisies dans des variables
$codeagent=$_POST['codeagent'];
$nomagent=$_POST['nomagent'];

// Connexion au serveur MySQL
$db=mysql_connect("localhost","root","eleve") or die ("erreur de connexion".mysql_error());

// Ouverture de la base PARTIR
mysql_select_db("PARTIR",$db) or die( "erreur de connexion à la base PARTIR");
// Requete selection Agent
$sql="SELECT *
FROM Agent
WHERE Agent.code=$codeagent";
$req=mysql_query($sql) or die ("erreur d'execution de la requête");

$ligne = mysql_fetch_array($sql);
print "
<h2>La commission de cette agent :</h2>
<table>

<tr>
<td>code:</td>
<td>".$codeagent["codeagent"]."</td>
</tr>
<tr>
<td>Nom:</td>
<td>".$ligne["nomagent"]."</td>
</tr>
<tr>
<td>Prenom:</td>
<td>".$ligne["prenomagent"]."</td>
</tr>
<tr>
<td> commission:</td>
<td>".$ligne["comagent"]."</td></tr>
</table>
";

// Requête total voyage par agent

$query = "SELECT Agent.codeagent,SUM(Voyage.prixvoy)*(Agent.comagent)
FROM Agent, Voyage, Reservation
WHERE Agent.$codeagent=Reservation.$codeagent
And Voyage.codevoy= Reservation.codevoy
GROUP BY Agent.codeagent
";
$result = mysql_query ($query) or die ("Erreur lors de la requête :".mysql_error());
while ( $donnees = mysql_fetch_array($result) )
{

echo $donnees['Agent.codeagent'], $donnees['SUM(Voyage.prixvoy)*(Agent.comagent)'] ;
}

// Fermeture de la connexion à MySQL
mysql_close();

?>
</body>
</html>
help please!!!
Configuration: Windows XP
Firefox 2.0.0.14

34 réponses

Résumé de la discussion

Un problème d'exécution de requête PHP/MySQL apparaissait sur une page utilisant mysql_connect et des variables POST, avec des erreurs de syntaxe et des résultats non récupérés correctement. La solution proposée corrige les requêtes en plaçant une condition WHERE codeagent='$codeagent' et en récupérant les champs nomagent, prenomagent et comagent via mysql_fetch_array. Puis une seconde requête joignant agent, voyage et reservation est employée pour agréger les prix et calculer la commission en multipliant la somme par la valeur comagent. L'exemple issu du cas illustre l'importance d'utiliser des noms de colonnes corrects, d'échapper les valeurs et d'afficher le total après obtention fiable des résultats.

Bobot (l’IA à votre service)
  1. merci a vous Thecrazyspy, voici la page qui fonctionne:
    <body>
    <?php
    //affectation des valeurs saisies dans des variables
    $codeagent=$_POST['codeagent'];
    $nomagent=$_POST['nomagent'];

    // Connexion au serveur MySQL
    $db=mysql_connect("localhost","root","eleve") or die ("erreur de connexion".mysql_error());

    // Ouverture de la base PARTIR
    mysql_select_db("PARTIR",$db) or die( "erreur de connexion à la base PARTIR");
    // Requete selection Agent
    $sql="SELECT * FROM agent WHERE codeagent='".$codeagent."'";
    $req=mysql_query($sql) or die ("erreur d'execution de la requête 1");

    while ($nbr=mysql_fetch_array($req))
    {
    $nom=$nbr["nomagent"];
    $prenom=$nbr["prenomagent"];
    $comm=$nbr["comagent"];
    }

    print "
    <h2>La commission de l'agent $nom :</h2>
    <table>

    <tr>
    <td>code:</td>
    <td>".$codeagent."</td>
    </tr>
    <tr>
    <td>Nom:</td>
    <td>".$nom."</td>
    </tr>
    <tr>
    <td>Prenom:</td>
    <td>".$prenom."</td>
    </tr>

    </table>
    ";

    // Requête total voyage par agent

    $query = "SELECT * FROM agent, voyage, reservation WHERE agent.codeagent=reservation.codeagent and voyage.codevoy= reservation.codevoy and agent.codeagent='".$codeagent."'";

    $result = mysql_query ($query) or die ("Erreur lors de la requête :".mysql_error());

    $cpt = "0";
    while ($nbr=mysql_fetch_array($result))
    {
    $code=$nbr["codeagent"];
    $somme=$nbr["prixvoy"];

    $comm=$nbr["comagent"];
    $cpt = $cpt + $somme;
    }

    $tot = $cpt*$comm;
    echo "<h3>La commission pour l'agent $nom est de : ".$tot." €</h3>";

    // Fermeture de la connexion à MySQL
    mysql_close();

    ?>

    </body>
    1. merci pour l'explication sa me sera très utile pour mon oral demain
      1. vu que l'on est dans une boucle qui cherche le prix des voyages, a cahque passage on additionne le prix des voyages donc ex cpt = 100 au passage 1, au passage deux ctp = ctp + 200 donc cpt = 100 + 200, pour pouvoir avec la comm de la somme des voyages
        1. ok donc cela veut dire que si je change de prix d'un voyage vendus le $cpt va le prendre en compte et m'afficher le bon résultat? pourquoi il faut l'additionner avant de le multiplier la somme?
          1. sa ne marche toujours pas on me dit qu'il a une problème ici: while ( $donnees = mysql_fetch_array($result))
            1. non pas obliger, je dois partir la, je serai la ce soir si sa ne marche pas
              1. c'est quoi $cpt = $cpt + $somme ? il faut les déclarés dans les variables?
                1. j'avais oublier un ;

                  $query = "SELECT agent.codeagent,SUM(voyage.prixvoy)*(agent.comagent) FROM agent, voyage, reservation WHERE agent.codeagent=reservation.codeagent and voyage.codevoy= reservation.codevoy and agent.codeagent='".$codeagent."' GROUP BY agent.codeagent";

                  $result = mysql_query ($query) or die ("Erreur lors de la requête :".mysql_error());

                  $cpt = 0;
                  while ($nbr=mysql_fetch_array($result))
                  {
                  $code=$nbr["codeagent"];
                  $somme=$nbr["prixvoy"];
                  $comm=$nbr["comagent"];
                  $cpt = $cpt + $somme;
                  }

                  $tot = $cpt*$comm;
                  echo $tot;
                  1. $query = "SELECT agent.codeagent,SUM(voyage.prixvoy)*(agent.comagent) FROM agent, voyage, reservation WHERE agent.codeagent=reservation.codeagent and voyage.codevoy= reservation.codevoy and agent.codeagent='".$codeagent."' GROUP BY agent.codeagent";

                    $result = mysql_query ($query) or die ("Erreur lors de la requête :".mysql_error());

                    $cpt = 0;
                    while ($nbr=mysql_fetch_array($result))
                    {
                    $code=$nbr["codeagent"];
                    $somme=$nbr["prixvoy"];
                    $comm=$nbr["comagent"];
                    $cpt = $cpt + $somme
                    }

                    $tot = $cpt*$comm;
                    echo $tot;
                    1. <html>
                      <head>
                      <title>calculcomagent</title>

                      </head>
                      <body>
                      <?php
                      //affectation des valeurs saisies dans des variables
                      $codeagent=$_POST['codeagent'];
                      $nomagent=$_POST['nomagent'];

                      // Connexion au serveur MySQL
                      $db=mysql_connect("localhost","root","eleve") or die ("erreur de connexion".mysql_error());

                      // Ouverture de la base PARTIR
                      mysql_select_db("PARTIR",$db) or die( "erreur de connexion à la base PARTIR");
                      // Requete selection Agent
                      $sql="SELECT * FROM agent WHERE codeagent='".$codeagent."'";
                      $req=mysql_query($sql) or die ("erreur d'execution de la requête 1");

                      while ($nbr=mysql_fetch_array($req))
                      {
                      $nom=$nbr["nomagent"];
                      $prenom=$nbr["prenomagent"];
                      $comm=$nbr["comagent"];
                      }

                      print "
                      <h2>La commission de l'agent $nom :</h2>
                      <table>

                      <tr>
                      <td>code:</td>
                      <td>".$codeagent."</td>
                      </tr>
                      <tr>
                      <td>Nom:</td>
                      <td>".$nom."</td>
                      </tr>
                      <tr>
                      <td>Prenom:</td>
                      <td>".$prenom."</td>
                      </tr>
                      <tr>
                      <td> commission:</td>
                      <td>".$comm."</td></tr>

                      </table>
                      ";

                      // Requête total voyage par agent

                      $query = "SELECT agent.codeagent,SUM(voyage.prixvoy)*(agent.comagent) FROM agent, voyage, reservation WHERE agent.codeagent=reservation.codeagent and voyage.codevoy= reservation.codevoy and agent.codeagent='".$codeagent."' GROUP BY agent.codeagent";

                      $result = mysql_query ($query) or die ("Erreur lors de la requête :".mysql_error());
                      while ( $donnees = mysql_fetch_array($result))
                      {

                      echo $comm;
                      }

                      // Fermeture de la connexion à MySQL
                      mysql_close();

                      ?>

                      </body>
                      </html>
                      1. la dernière requête qui marche très bien sur MYsql me fait se calcul. vous avez une idée pour pouvoir afficher ma dernière requête?
                        1. ben faut faire une requete qui va chercher les voyage vendu, les additioné dans une variable puis multiplier celle ci par sa com
                          • 1
                          • 2