[PHP mySql] Cherchez l'erreur

Fermé
Freduho - 10 juil. 2010 à 18:40
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 12 juil. 2010 à 14:08
Bonjour,

Voila, tant bien que mal, je suis entrain de développer mon site de e-commerce. J'ai réalisé un script php afin que chacun de mes futurs clients puissent consulter en détails la liste des produits de chacune de leurs commandes passées. Le soucis est que seul les 5 dernières entrées ajoutées dans une commande apparaissent dans le détail. Voici mon code:

<?php
session_start();

require("connexion.php");
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<?php include("php/header.php"); ?>



</head>
<body>

<!-- insertion du logo-->

<?php include("php/logo.php"); ?>

<!-- insertion du menu.php-->

<?php include("php/menu.php"); ?>

<div id="menu">
<span class="fairelescourses"> <a href="fairelescourses.php"><img src="faire_les_courses.png" alt="Faire les courses"
id="home"
onmouseover="flcon();"
onmouseout="flcoff();" /></a></span>
<span class="quisommesnous"> <a href="quisommesnous.php"><img src="qui_sommes_nous.png" alt="Qui sommes nous ?"
id="hame"
onmouseover="espon();"
onmouseout="espoff();" /></a></span>
<span class="contact"> <a href="contact.php"><img src="contact.png" alt="Contact"
id="hime"
onmouseover="contacton();"
onmouseout="contactoff();" /></a></span>
<span class="panier"> <a href="panier.php"><img src="panier.png" alt="panier"
id="hume"
onmouseover="panieron();"
onmouseout="panieroff();" /></a></span>

</div>

<!-- élément de décors-->

<?php include ("php/elements.php"); ?>

<!-- Contenu de coeur de la page-->


<div id="connexion" style="visibility:hidden">


<form class="formconnexion" id="form1" name="form1" method="post" action="gestion_client.php">

<table border="0" align="center">
<tr>
<td align="right">Login</td>
<td><input name="email" type="text" class="bck" id="email" size="15" /></td>



</tr>
<tr>
<td align="right">Mot de passe</td>
<td><input name="mdp" type="password" class="bck" id="mdp" size="15" maxlength="10" /></td>
</tr>

<tr>
<td align="center" colspan="2">

<input type="submit" name="Submit" value="connexion" />
</td>
</tr>
<tr>
<td align="center" colspan="2"><a href="gestion_client.php?valide=ok">Vous n'êtes pas client, inscrivez-vous ici</a></td>
</tr>
</table>


</form>



</div>
<div id="corps">
<div id="paraaracceuil">





<h1> Espace membre</h1>

<hr/>
<?

$query="SELECT * FROM client WHERE email ='".$_SESSION['login']."' AND idClient ='".$_SESSION['idClient']."'";

$register = mysql_query( $query)
or die("Impossible d'executer la requete : " . mysql_error());
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($register) > 0) {
$data = mysql_fetch_object($register);
$civilite=$data->civilite;
$nom=ucfirst($data->nom_client);
}


?>

<h2>Bienvenue <? echo $civilite." ".$nom; ?></h2>

<?
function ceiling($value, $precision) {
return floor($value * pow(10, $precision)) / pow(10, $precision);
}

$idcom=$_GET['idcom'];
$idcli=$_GET['idcli'];


$result = mysql_query("SELECT * FROM detailProduitCommander WHERE idCommande='".$idcom."'");

echo "<h4> Commande n° ".$idcom."</h4>";
echo '<br /><br />
<br />
<br />
<br />

';
echo '<table width="700" border="1" class="TEST"><tr>';
echo "<td>Produit</td><td>Prix</td><td>Qte</td><td>Total</td></tr>";


while ($row = mysql_fetch_object($result)) {

$result2 = mysql_query("SELECT * FROM produits WHERE nom='".$row->produit."'");

while ($row2 = mysql_fetch_object($result2)) {

if ($row2->prix_kilo==0.00) {
$prix=$row2->prix_unitaire." pièce";
$qte=$row->qte;
}else {
$prix=$row2->prix_kilo." /Kg";
// on vérifie que la quantité demandé est inférieur à 1Kg
if ($row->qte<1) {
$qte=$row->qte*1000;
$qte=$qte.'g';
} else {
$qte=$row->qte.'Kg';

}

}

echo "<tr><td>".$row->produit."</td><td>".$prix."</td><td>".$qte."</td><td>".$row->total." €</td></tr>";
$total = $row->total + $total;


}
} echo "<tr><td colspan='3'>Total </td><td>".number_format(ceiling($total,2), 2,'.',' ')." €</td></tr>";
echo "</td></tr></table>";




?>

J'espère avoir été suffisamment clair et vous avoir fourni assez d'élément afin que vous puissiez répondre à ma requête.





</div>
</div>
</div>

</body>


</html>
A voir également:

1 réponse

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 juil. 2010 à 14:08
Bonjour,

Je ne vois pas trop pourquoi ça afficherait un nombre limité de produit parmi l'ensemble des produits existants.
Par contre si je puis me permettre, il y a un petit problème de performance je pense dans ce script.

Plutôt que de faire deux requêtes SQL, dont la seconde à l'intérieur d'une boucle - qui plus est pour récupérer uniquement des informations détaillées sur les résultats de la première requête -, pourquoi ne pas faire une seule et même requête SQL en groupant les deux requêtes existante. C'est possible si la base de données a été bien faite, en faisant une jointure sur les tables correspondantes pou rrécupérer à la fois l'ensemble des produits commandés, ainsi que les détails de chaque produit.
Cette requête est à faire au même endroit que la requête 1, la 2 disparaissant.
0