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 :

Test sur date.


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Février 2010
    Messages : 133
    Par défaut Test sur date.
    Bonjour à tous !!!

    J'ai un site de réservation pour mon club.
    Jusqu'à aujourd'hui 1H par jour était permise. Mais avec le covid, nous allons passer à 1h par semaine.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $requet = ('SELECT COUNT(*) as total FROM reserv where (nlicence="'.$nlicence.'" && datec="'.$datec.'")'); (Datec=date choisie)

    J'interroge la base et je contrôle que la personne n'est pas inscrite à la date choisie. Si déjà inscrite, réservation refusée.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($data['total'] = 1)				     
     
    				{
    				echo '<a1><b1>licencié déjà inscrit  le '.$datec.'</a1></b1><br />';   			   
    ?>

    Maintenant, je dois contrôler par exemple
    s'il est déjà inscrit le 1 JUIN, il n'a pas de possibilité de réservation jusqu'au 8 JUIN.
    S'il choisit le 5 JUIN réservation refusée.

    C'est là que je coince, je ne vois pas comment construire mon test dans le formulaire(PHP).
    Quelqu'un pourrait-il m'aider ?
    Merci

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour.
    On va pouvoir régler ça dans ta requête SQL.
    Mais d'abord, il me faut quelques infos.
    1) Tu parles bien d'une semaine dite coulante : sa dernière réservation + 7 jours ?
    2) Ton champ datec est-il de type date ou datetime ou timestamp ?

    Question subsidiaire (pour la suite) mais TRES IMPORTANTE : utilises-tu PDO ou la librairie mysql pour les connexions à ta base ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    /*  L'idée est la suivante, tu fais d'abord une requête qui va te chercher la dernière réservation de ce client
     
    tu testes déjà ça dans ton PHPMyAdmin avec un vrai numéro de licence
     
    ici on pose que le numéro de licence est 25421
    Et on pose que ton champ datec est un datetime
     
    */
     
    SELECT max(datec) as der_reservation
    FROM reserv 
    where nlicence=25421 and datec is not null
    group by nlicence;
     
     
     
     
    /*Ensuite, si ça fonctionne, tu oublies la requête ci-dessus, et tu passes à la vraie requête.
    Tu compares la date choisie par le client avec sa dernière réservation.
     
    ici, on pose que la date choisie par le client est le 03/06/2020 15H
    Il te faut prévoir (premier cas) le client qui réserve pour la première fois.
    Et prévoir (dernier cas) n'importe quelle sorte d'anomalie.
    */
     
    SELECT 
    case
      when max(datec) is NULL then concat("Réservation pour le ", date_format("2020-06-03 15:00:00", "%d/%m/%Y %H:%i:%s")," autorisée") 
      when datediff(max(datec),"2020-06-03 15:00:00") >= 7 then concat("Réservation pour le ", date_format("2020-06-03 15:00:00", "%d/%m/%Y %H:%i:%s")," autorisée")
      when datediff(max(datec),"2020-06-03 15:00:00") < 7 then concat ("Déjà réservé le ", date_format("max(datec)", "%d/%m/%Y"), ". Prochaine réservation possible : après le ", date_add(max(datec),interval 7 day))
      else "anomalie"  
    end as check_date
    FROM reserv 
    where nlicence=25421 and datec is not null
    group by nlicence;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    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
    /*Et entre nous, quand le Covid sera terminé et que tu reviendras à 1H par jour, il te vaudrait mieux garder cette requête, avec cette simple modif
    Ici, on pose que datec est un simple champ date :
    */
     
    SELECT 
    case
      when max(datec) is NULL then concat("Réservation pour le ", date_format("2020-06-03", "%d/%m/%Y")," autorisée") 
      when "2020-06-03" > max(datec) then concat("Réservation pour le ", date_format("2020-06-03", "%d/%m/%Y")," autorisée")
      when "2020-06-03" = max(datec) then concat("Impossible ! Vous avez déjà réservé pour le ", date_format("2020-06-03", "%d/%m/%Y"))
      else "anomalie"  
    end as check_date
    FROM reserv 
    where nlicence=25421 and datec is not null
    group by nlicence;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Février 2010
    Messages : 133
    Par défaut
    Bonjour
    merci pour la réponse.

    champ datec type date
    Pas de PDO je suis chez free.
    Je suis un vieux qui commence à avoir des difficultés à évoluer aussi vite qu'internet.

    Voilà ou j'en suis.
    Je suis partie d'un test sous access et j'ai recupéré le sql.
    La requete access me donne ceci:

    nom prenom MaxDedatec proch
    DALTON Ma 30/05/2020 06/06/2020
    SUFFIT Sam 25/05/2020 01/06/2020
    RICHARD Marcel 25/05/2020 01/06/2020
    Je suis en train de mettre à jour mon formulaire PHP

    Requete MYSQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requet = ('SELECT nom, prenom, Max(datec) AS MaxDedatec, DateAdd("y",7,[MaxDedatec]) AS proch
    FROM reserv  where (nlicence="'.$nlicence.'" && datec="'.$datec.'"
    GROUP BY nom, prenom
    ORDER BY Max([datec]) DESC)');
    ...........
    Mon intention était de récupérer la variable proch et comparer avec la date rentrée par le formulaire.
    si datec >=proch Message: ok
    sinon message: prochaine réservation le: valeur de proch.
    j'ai bon ??

    Je vais interrompre mes tests pour en faire avec ton code.
    Je vais essayer de décrypter avant de commencer les essais.
    La réponse dans quelques temps.
    Merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Février 2010
    Messages : 133
    Par défaut
    bonsoir
    j'ai commencé les tests avec ton sql voici le message d'erreur:

    FUNCTION ctsblv.concat does not exist.

    je n'ai jamais utilisé cette fonction.
    A+

Discussions similaires

  1. [XL-2007] petit test sur dates alimentées par variable tableau
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2012, 11h21
  2. [SQL*Loader] Test sur date non renseigné
    Par frostiesI7 dans le forum SQL*Loader
    Réponses: 5
    Dernier message: 25/10/2011, 17h25
  3. Problème test sur date
    Par gdavezac dans le forum Débuter
    Réponses: 3
    Dernier message: 25/04/2009, 15h10
  4. [AC-2007] test sur date
    Par tibiurs dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 17/04/2009, 09h51
  5. Test sur date + heure
    Par zoidy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2007, 11h15

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