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

PHP & Base de données Discussion :

condition if requete + affichage résultat


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    Par défaut condition if requete + affichage résultat
    Bonjour,

    Je développe un site et dedans j'ai un formulaire d'inscription. Je suis entrain de réaliser une requete pour ce formulaire mais j'ai deux problème:
    1) Quand ma table inscrire est vide, les critère de sélectionne ne fonctionne pas à cause de cette réstriction: or desinscription = 'Oui': Je pense qu'il faut mettre un if pour cette restriction mais je vois pas comment: si table inscrire n'est pas vide, on prend on compte aussi cette restriction

    2) Quand je m'inscrit à un stage et que quelqu'un d'autre s'inscrit à ce même stage, le stage s'affiche de nouveau et je pe me réinscrire alors que quand je suis le seul à être inscrit, il ne s'affiche pas. Moi je ve pas qu'il s'affiche de nouveau sauf bien sur si je me suis desinscrie entre deux

    voilà ma requete:

    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 not exists (select num from personnel where personnel.num = inscrire.id_Personnel and personnel.prenom !='$prenom')
    	and nbRestantes > 0
    	and stage.dateLimite >= '$date'
    	or  desinscription = 'Oui'
    ";
     
    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';

  2. #2
    Invité
    Invité(e)
    Par défaut
    1/ Essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and inscrire.desinscription != 'Non'
    Le problème quand on met un "OR..." parmi les "AND...", ce sont les priorités de traitement.
    Il faut savoir où mettre des parenthèses !

    Ces instructions ne donnent pas forcément le même résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a AND b OR c
    (a AND b) OR c
    a AND (b OR c)
    N.B. Tu es sûr d'avoir besoin de tout ça dans ta requete ?!

    2/ Quant à la 2ème question, sans code...
    Je dirais qu'il faut revoir toute la logique.
    Dernière modification par Invité ; 31/08/2013 à 08h53.

  3. #3
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    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 : 601
    Par défaut
    Bonjour.
    Pour répondre à ta première question, fais un test pour savoir si la table inscrire est vide. En fonction, aménage le script de la requête.
    Par ailleurs, ne manque t'il pas une table session ? ça m'étonnerait que les stages ne se renouvelle pas ...
    enfin que vient faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and personnel.prenom !='$prenom'
    dans le WHERE ? sauf à imposer que personne n'ait le même prénom ...

  4. #4
    Membre éprouvé
    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
    Par défaut
    Si je met and desinscription !='NON', sa m'affichera que les stages dont on c désinscrit, sa ne m'affichera pas les stages dont on ne c pas encore inscrit

    Et pour la seconde partie de ma question j'essaye de le traité ici:
    WHERE not exists (select 1 from personnel where personnel.num = inscrire.id_Personnel and inscrire.id_Personnel ='$numero')

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    on ne peut pas faire grand chose de plus pour toi, vu la complexité de la requête, et le manque d'explications (concernant les tables appelées, les champs testés,...)

    Pour "...or desinscription = 'Oui'...", à toi de savoir où mettre les parenthèses.

    Je pense surtout que si tu en arrives à une telle requête, c'est aussi, peut-être, que la CONCEPTION n'a pas été pensée correctement.
    Mais sans la structure des tables, et leurs inter-connections,... difficile à dire.

  6. #6
    Membre éprouvé
    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
    Par défaut
    J'ai une table stage avec numstage, libelle, etc. et id_Specialité et id_Theme qui sont des jointure 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 tableau inscrire qui a comme champs: id_Personne, numStage_Stage et desinscription.

    Ce que je veux afficher:
    les Stages dont le visiteur n'est pas inscrit et dont la date inscription n'est pas passé et qui reste de la place, et aussi les stages dont il s'est desinscription (desinscription = 'Oui) et dont la date inscription n'est pas passé et qui reste de la place.
    Sa c la requete de base. Ensuite il peut réduire sa recherche avec les trois critères: theme stage, date début, date fin

Discussions similaires

  1. [MySQL] Affichage résultat d'une requete sql dans un tableau
    Par sara21 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/05/2008, 03h01
  2. affichage résultat requete SQL en visual basic
    Par neg03 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/04/2008, 11h57
  3. Affichage résultat requete dans textBox
    Par Brice_68 dans le forum IHM
    Réponses: 4
    Dernier message: 11/05/2007, 15h58
  4. Affichage résultat requete
    Par Brice_68 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 05/04/2007, 11h05
  5. Réponses: 1
    Dernier message: 11/05/2006, 16h37

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