IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

problème de résultat requete sql


Sujet :

Requêtes MySQL

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut problème de résultat requete sql
    Bonjour,

    Je réalise une petite application web pour la gestion des stages et j'ai un problème pour l'affichage des stages pour l'inscription. Quand je m'inscris à un stage et que quelqu'un d'autre s'inscrit à ce même stage, le stage s'affiche de nouveau et je peux me réinscrire alors que quand je suis le seul à être inscrit, il ne s'affiche pas. Moi je ne veux pas qu'il s'affiche de nouveau, sauf bien sûr si je me suis désinscrit entre deux.

    J'ai une table stage avec numstage, libelle, etc. et id_Specialité et id_Theme qui sont des jointures avec la table theme et specialité. J'ai aussi la table personnel avec un num, nom, prenom, ident et mot de passe et j'ai également la table inscrire qui a comme champs: id_Personne, numStage_Stage et desinscription.

    Voici ma requête:

    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
    34
    35
    $requete = "select numStage,
    				stage.libelle AS libelleStage,
    				DATE_FORMAT(dateDebut,'%d/%m/%Y') AS dateDebut,
    				DATE_FORMAT(dateFin,'%d/%m/%Y') AS dateFin,
    				lieu,
    				DATE_FORMAT(dateLimite,'%d/%m/%Y') dateLimite,
    				nbRestantes,
    				specialite.libelle AS libelleSpe,
    				theme.libelle AS libelleTheme
    				from stage
    				INNER JOIN specialite ON stage.id_Specialite = specialite.id
    				INNER JOIN theme ON stage.id_Theme = theme.id
    				LEFT OUTER JOIN inscrire ON stage.numStage = inscrire.numStage_Stage
    				LEFT OUTER JOIN personnel ON inscrire.id_Personnel = personnel.num
    				WHERE exists (select 1 from inscrire where id_Personnel ='$numero')
    				AND (nbRestantes > 0 and stage.dateLimite >= '$date')
    				OR (desinscription = 'Oui' AND nbRestantes > 0 and stage.dateLimite >= '$date')
    				";
     
    				if(isset($_POST["themeStage"]) && $_POST["themeStage"]!="")
    				{
    					$requete = $requete. " AND id_Theme = '".$_POST["themeStage"]."'";
    				}
    				if(isset($_POST["dateDebut"]) && $_POST["dateDebut"]!="")
    				{
    						$dateDebut = conversionDateFrançaisVersMySql($_POST["dateDebut"]);
    						$requete = $requete. " AND stage.dateDebut = '".$dateDebut."' ";
    				}
    				if(isset($_POST["dateFin"]) && $_POST["dateFin"]!="")
    				{
    					$dateFin = conversionDateFrançaisVersMySql($_POST["dateFin"]);
    					$requete = $requete. " AND stage.dateFin = '".$dateFin."' ";
    				}
     
    				$requete = $requete. 'ORDER BY numStage';
    Merci de votre aide

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    1. pour déboguer, simplifie au maximum ta requète : tu n'as pas besoin des précisions sur les thèmes et spécialités
    2. je ne vois pas à quoi sert le champ 'desinscription' car soit une personne est dans la table 'inscrire' (que tu devrais plutôt nommer 'inscription') sur un stage, soit elle n'y est pas. Mais pourquoi mémoriser les stages pour lesquels une personne s'est désinscrite ?


    En essayant de comprendre les liens entre les tables et les champs, ça pourrait donner :
    Code sql : 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
    SELECT
    	numStage,
    	stage.libelle AS libelleStage,
    	DATE_FORMAT(dateDebut,'%d/%m/%Y') AS dateDebut,
    	DATE_FORMAT(dateFin,'%d/%m/%Y') AS dateFin,
    	lieu,
    	DATE_FORMAT(dateLimite,'%d/%m/%Y') dateLimite,
    	nbRestantes
    FROM stage
    	LEFT OUTER JOIN inscrire ON stage.numStage = inscrire.numStage_Stage
    	LEFT OUTER JOIN personnel ON inscrire.id_Personnel = personnel.num
    WHERE 
    	(
    		(
    		stage.numStage IN (SELECT DISTINCT numStage_Stage FROM incrire WHERE id_Personnel!=".$numero.") 
    		)
    		OR 
    		(
    		stage.numStage IN (SELECT DISTINCT numStage_Stage FROM incrire WHERE id_Personnel=".$numero." AND desinscription = 'Oui') 
    		)
    	)
    	AND
    	(
    	nbRestantes > 0 and stage.dateLimite >= ".$date."
    	)
    Participez vous aussi !
    Message utile
    Discussion résolue

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je mémorise les stages dont elle est désinscrit car je mais un motif pour savoir pourquoi elle s'est desinscrit

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    J'ai testé ce que tu ma donnée et sa fonctionne presque: il m'affiche bien les stages dont on s'est desinscrie et dont la date limite n'est pas dépassé mais par contre les stages dont on c jamais inscrits ne s'affiche pas

  5. #5
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    essaye en enlevant de la requête la première jointure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT OUTER JOIN inscrire ON stage.numStage = inscrire.numStage_Stage
    Participez vous aussi !
    Message utile
    Discussion résolue

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    LA requete ne fonctionne plus

Discussions similaires

  1. Problèmes avec ma requete SQL de mise a jour
    Par k750_b dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/02/2008, 23h22
  2. Problème simple sur requete sql
    Par williams59 dans le forum ASP
    Réponses: 15
    Dernier message: 02/01/2008, 14h18
  3. [débutante]Problème combobox et requete sql
    Par lilo415 dans le forum Bases de données
    Réponses: 13
    Dernier message: 03/04/2007, 11h11
  4. Réponses: 2
    Dernier message: 28/08/2006, 10h12
  5. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo