[MySQLi] Exploiter procédure stockée
Bonjour,
J'ai créé mes procédures qui fonctionnent sous mysql mais comment les exploiter avec PHP?
J'ai fais un test mais ca ne fonctionne que la premiere fois.
Voila mes procédures , elle me permettent de lister les commandes d'un client,de connaitre le nombre de commande qu'il a passé et d'affiche le détail d'une commande.
Code:
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
| delimiter $$
CREATE PROCEDURE detail_commande(IN numero_commande SMALLINT UNSIGNED)
BEGIN
SELECT jaquette,j.libelle AS nom_jeu,image,quantite,l.prix AS pri
FROM relation_jvp r, jeu_video j, ligne_commande l, plateforme p
WHERE num_relation_jvp=id_relation_jvp
AND num_jeu_video=id_jeu_video
AND num_plateforme=id_plateforme
AND num_commande=numero_commande;
END$$
DELIMITER ;
delimiter $$
CREATE PROCEDURE liste_commande_par_client(IN numero_client SMALLINT UNSIGNED)
BEGIN
SELECT id_commande, DATE_FORMAT( date_com, '%d %m %Y' ) AS com_date, SUM( quantite * prix ) AS montant_commande
FROM commande, ligne_commande
WHERE id_commande=num_commande
AND num_client=numero_client
GROUP BY id_commande
ORDER BY date_com DESC;
END$$
DELIMITER ;
delimiter $$
CREATE PROCEDURE nb_commande_par_client (IN numero_client SMALLINT)
BEGIN
SELECT COUNT(id_commande) AS nb_commande
FROM commande
WHERE num_client =numero_client;
END$$
DELIMITER ; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?php
$connexion=new mysqli('localhost','client','simple','e_trade_games');
$requete="CALL nb_commande_par_client(".$_SESSION['client']['id_client'].")";
$resultat=$connexion->query($requete);
$ligne=$resultat->fetch_object();
if($ligne->nb_commande>0){
echo '<table><tr><td colspan="3">Liste de vos '.$ligne->nb_commande.' commande(s)</td></tr>
<tr><td>Date</td><td>Montant Commande</td><td>Détail</td></tr>';
$requete="CALL liste_commande_par_client(".$_SESSION['client']['id_client'].");";
echo $requete;
$resultat=$connexion->query($requete);
while($ligne=$resultat->fetch_object()){
echo '<tr><td>'.$ligne->com_date.'</td>
<td>'.$ligne->montant_commande.'</td>
<td><a href="index.php?page=historique&action=detail_commande&id_com='.$ligne->id_commande.'"><img src=""/></a></td>';
}
echo '</table>';
}
else{
echo 'Vous n\'avez effectué aucune commande';
}
$connexion->close();
?> |
Comment les exploite t'on en PHP? Le nombre de commande est bon lors de l'appel de la premiere procédure mais le deuxième me renvoie l'erreur suivante:
Citation:
Fatal error: Call to a member function fetch_object() on a non-object in C:\Program Files\wamp\www\e_trade_games\partie_client\affichage\historique\accueil.php on line 12
Faut-il que je mette des paramètres en out pour pouvoir sélectionner des colonnes ou c'est le meme principe que pour les vues.
En espérant que vous pourrez m'aider.
Merci.