aide en php/sql

Petit nouveau ! | 5 Messages

18 févr. 2015, 20:05

$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é

ViPHP
ViPHP | 1996 Messages

18 févr. 2015, 21:52

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;";
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 5 Messages

19 févr. 2015, 06:30

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]

ViPHP
ViPHP | 1996 Messages

19 févr. 2015, 09:26

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.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 5 Messages

19 févr. 2015, 09:37

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

Mammouth du PHP | 571 Messages

19 févr. 2015, 14:22

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

Petit nouveau ! | 5 Messages

19 févr. 2015, 19:40

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

Mammouth du PHP | 2278 Messages

19 févr. 2015, 19:54

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 5 Messages

20 févr. 2015, 09:49

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

Mammouth du PHP | 688 Messages

20 févr. 2015, 16:26

administrateur réseau et donner des url de ce type C:\Users\KOUTONDI%20JP\Desktop\coco ?????????????????

ViPHP
xTG
ViPHP | 7331 Messages

20 févr. 2015, 16:45

administrateur réseau et donner des url de ce type C:\Users\KOUTONDI%20JP\Desktop\coco ?????????????????
Non, étudiant si tu as bien lu.