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:
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.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
En espérant que vous pourrez m'aider.
Merci.
Partager