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.