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 : 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
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 : 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
<?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:

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.