Prob php
Résolucette 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
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.
-
de rien bonne chance
-
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> -
merci pour l'explication sa me sera très utile pour mon oral demain
-
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
-
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?
-
c'est un compteur temporaire
-
que veut dire $cpt svp?
-
ok merci
-
ok je vais look sa je l'envoi par mail apres
-
sa ne marche toujours pas on me dit qu'il a une problème ici: while ( $donnees = mysql_fetch_array($result))
-
je suis la, est ce que sa a marcher?
-
ok sa marche pas donc faite moi signe quand vous serez arrivé
-
non pas obliger, je dois partir la, je serai la ce soir si sa ne marche pas
-
c'est quoi $cpt = $cpt + $somme ? il faut les déclarés dans les variables?
-
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; -
$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; -
<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> -
tu peu m'afficger ta requete jai pas les fichier sou sla main
-
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?
-
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