Page 1 sur 1

aide en php/sql

Posté : 18 févr. 2015, 20:05
par chancyaa
$ReqSelect_Paie = "SELECT IDEtu,NomEtu,Nom_Type_Paie,Montant_Type_Paie,sum(MontantPaie) AS MontantPaie
												FROM paiements,nature_paie,etudiants 
												WHERE paiements.IDEtu = etudiants.MatEtu							
												AND paiements.NaturePaiement = nature_paie.ID_Type_Paie
												AND NaturePaiement LIKE 'FS%'
												GROUP BY MatEtu, NomEtu;";
$Nom_Type_Paie= $DataPaie['Montant_Type_Paie'];
														$MontantPaie= $DataPaie['MontantPaie'];
														$result= $Nom_Type_Paie-$MontantPaie;
														
													echo '<td>'.($result).'</td>
bsr svp ce code php permet d'afficher les etats de paiements en general de tous les etudiants. mais j'ai besoin de deja de juste afficher les etudiants qui ont dejà tous payé leur scolarité

Re: aide en php/sql

Posté : 18 févr. 2015, 21:52
par Aureusms
Essayes :

Code : Tout sélectionner

$ReqSelect_Paie = "SELECT IDEtu,NomEtu,Nom_Type_Paie,Montant_Type_Paie,sum(MontantPaie) AS MontantPaie FROM paiements,nature_paie,etudiants WHERE paiements.IDEtu = etudiants.MatEtu AND paiements.NaturePaiement = nature_paie.ID_Type_Paie AND NaturePaiement LIKE 'FS%' AND MontantPaie != 0 GROUP BY MatEtu, NomEtu;";

Re: aide en php/sql

Posté : 19 févr. 2015, 06:30
par chancyaa
bjr Aureusms voici l'interface qui s'affiche pour le moment mais j'ai juste besoin d'afficher les étudiants qui ont déjà [img]C:\Users\KOUTONDI%20JP\Desktop\coco[/img]

Re: aide en php/sql

Posté : 19 févr. 2015, 09:26
par Aureusms
Bonjour,

Je ne peux accèder à l'image et secondement, pour bien faire, il faut les structures de la base de données sinon on ne peut pas faire grand chose.

Re: aide en php/sql

Posté : 19 févr. 2015, 09:37
par chancyaa
CREATE TABLE IF NOT EXISTS `etudiants` (
`MatEtu` varchar(50) NOT NULL,
`PhotoEtu` varchar(255) DEFAULT NULL,
`NomEtu` varchar(255) DEFAULT NULL,
`PrenomEtu` varchar(255) DEFAULT NULL,
`DateNais` date DEFAULT NULL,
`LieuNais` varchar(255) DEFAULT NULL,
`GenreEtu` varchar(255) DEFAULT NULL,
`NationEtu` varchar(255) DEFAULT NULL,
`BacEtu` varchar(255) DEFAULT NULL,
`AdresseEtu` varchar(255) DEFAULT NULL,
`datearrivee` date NOT NULL,
`Etat` varchar(255) DEFAULT NULL,
`datedepart` datetime DEFAULT NULL,
PRIMARY KEY (`MatEtu`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



CREATE TABLE IF NOT EXISTS `nature_paie` (
`ID_Type_Paie` varchar(50) NOT NULL,
`Nom_Type_Paie` varchar(255) NOT NULL,
`Montant_Type_Paie` int(10) NOT NULL,
PRIMARY KEY (`ID_Type_Paie`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `paiements` (
`IDEtu` varchar(50) NOT NULL,
`AnneePaie` varchar(50) NOT NULL,
`DatePaie` date NOT NULL,
`NaturePaiement` varchar(50) NOT NULL,
`MontantPaie` int(255) NOT NULL,
PRIMARY KEY (`IDEtu`,`AnneePaie`,`DatePaie`),
KEY `paiements_ibfk_1` (`IDEtu`),
KEY `paiements_ibfk_2` (`AnneePaie`),
KEY `paiements_ibfk_3` (`NaturePaiement`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

voici la structuer des trois tables qui doivent nous permet la gestion des paiements

Re: aide en php/sql

Posté : 19 févr. 2015, 14:22
par yann18
bonjour,
ta requête de départ est syntaxiquement fausse car un groupement fait toujours appel à tous les champs présents(exceptées les fonctions d'agrégation comme SUM(), AVG()...) dans le select.Donc on aurait dû voir dans le groupement les champs suivants IDEtu,NomEtu,Nom_Type_Paie,Montant_Type_Paie.toutefois si tu veux faire figurer dans ton select les champs qui ne seront pas concernés par le groupement il te faut utiliser la fonction GROUP_CONCAT().
En pratique une simple jointure entre la table étudiants et la table paiements pouvait déterminer les étudiants qui ont payé leur scolarité.Après
sur quoi te bases-tu pour déterminer qu'un étudiant ait payé sa scolarité?quelle colonne stocke l'information sur la scolarité?

Ne connaissant pas ton SI, je t'écris une requête qui pourrait ressembler à ce que souhaites faire:
$ReqSelect_Paie = "SELECT IDEtu,NomEtu,GROUP_CONCAT(Nom_Type_Paie,Montant_Type_Paie),sum(MontantPaie) AS MontantPaie
                   FROM paiements,nature_paie,etudiants
                   WHERE paiements.IDEtu = etudiants.MatEtu                                                       
                   AND paiements.NaturePaiement = nature_paie.ID_Type_Paie
                   AND NaturePaiement LIKE 'FS%'
                   GROUP BY MatEtu, NomEtu
		   HAVING sum(MontantPaie)>0 ";
en même temps je conseille d'utiliser les jointures évoluées ou SQL2( JOIN, LEFT JOIN,...) car elles sont plus rapides que la clause WHERE

Re: aide en php/sql

Posté : 19 févr. 2015, 19:40
par chancyaa
Dans la formation que j'ai eu, on n'a pas pu faire les requêtes évoluées, on s'est arrêté au requête de base donc je suis un peu perdu

Re: aide en php/sql

Posté : 19 févr. 2015, 19:54
par sirakawa
La formation n'a jamais parlé des Formes normales? cf http://fr.wikipedia.org/wiki/Forme_norm ... nnelles%29
Et n'a pas dit qu'il ne faut plus utiliser (en PHP) Mysql mais mysqli? cf http://php.net/manual/fr/mysqlinfo.api.choosing.php

Re: aide en php/sql

Posté : 20 févr. 2015, 09:49
par chancyaa
bjr merci les conseils. Yann18 [url]C:\Users\KOUTONDI%20JP\Desktop\coco[/url] voici en fait ma premiere interface qui affiche les états de paiements de tous les étudiants. mais je dois déjà faire une seconde qui présente juste les étudiants qui ont déjà tous payés.


NB: je suis un debutant en programmation web, je suis un administrateur réseau, cette projet est mon sujet de soutenance pour mon BTS en réseau

Re: aide en php/sql

Posté : 20 févr. 2015, 16:26
par tof73
administrateur réseau et donner des url de ce type C:\Users\KOUTONDI%20JP\Desktop\coco ?????????????????

Re: aide en php/sql

Posté : 20 févr. 2015, 16:45
par xTG
administrateur réseau et donner des url de ce type C:\Users\KOUTONDI%20JP\Desktop\coco ?????????????????
Non, étudiant si tu as bien lu.