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

  1. #1
    Membre du Club
    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
    Points : 63
    Points
    63
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    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 du Club
    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
    Points : 63
    Points
    63
    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 du Club
    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
    Points : 63
    Points
    63
    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+

  7. #7
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Peux-tu me montrer ton SQL ?
    Si tu parles des pages perso de free, c'est en MYSQL, et la fonction concat() existe... Bizarre...

    Peux-tu tester cette toute petite requête ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select concat(nom," ",prenom) as personne
    FROM reserv
    order by nom, prenom;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #8
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Bonjour
    pour la requete c'est ok le concat marche.

    Voilà mon test d'hier soir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $requet = ('SELECT 
                   case
      when max(datec) is NULL then concat("Réservation pour le ", date_format("'.$datec.'", "%d/%m/%Y")," autorisée") 
      when datediff(max(datec),"'.$datec.'") >= 7 then concat("Réservation pour le ", date_format("'.$datec.'", "%d/%m/%Y")," autorisée")
      when datediff(max(datec),"'.$datec.'") < 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="'.$nlicence.'" and datec is not null
     
    group by nlicence');
    j'avais une faute de frappe dans le where du code

    je n'ai plus l'erreur sur concat.

    Mes tests avant ton intervention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $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)');
    message erreur :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[MaxDedatec]) AS proch FROM reserv where (nlicence="3263350" && datec="2020-06-' at line 1

    là j'ai un pb avec la date des - au lieu du /

    je t'explique ma logique(peut-être merd...que)
    je testais si le jour saisie dans le formulaire n'était pas dans la base pour le licencié.
    Je testes ensuite qu'il reste des postes disponibles le jour et à l'heure choisie
    si présent, message à la console: inscription non effectuée.
    si absent de la base et s'il reste des postes, message: inscription réussie.(Maj de la base)
    toujours dans ma logique, je pensais calculer le prochain jour pour une nouvelle inscription(proch)
    retest
    si date saisie >= proch ok pour inscription
    sinon inscription refusée.
    Suis-je clair?
    merci encore pour ton aide.

  9. #9
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Re bonjour
    j'ai refait quelques tests avec ton select; J'ai l'impression qu'aucun test ne se fait.
    j'ai pu inscrire un licencié avec la même date.
    Dans mon formulaire d'inscription j'ai un calendrier(français) intégré par datepicker et les dates se présentent ainsi : 02/06/2020.
    après insert dans la table MYSQL,: 2020-06-02.
    quelle galère ces dates !
    autre remarque, si max(datec) est plus petit que la datec le résultat sera -7 non?

  10. #10
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Si tu veux bien, on remet les trucs tranquillement à plat, parce que tu ne pourras pas tout faire dans une seule requête.
    Et si on commençait par ça ?

    Je testes ensuite qu'il reste des postes disponibles le jour et à l'heure choisie
    Si tu me montres la ou les tables concernées, le mieux serait de faire une vue, dédiée à cette problématique seulement.
    Du genre, v_complet, qui te liste toutes les périodes où la salle est complète (de façon dynamique of course).

    C'est bien les vues pour découper par étapes tes problématiques dans ta base.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Je n'ai qu'une table mysql : reserv
    en pj.
    Le test du nombre de postes occupés est fait dans le formulaire.
    en pj
    Voici les tests effectués
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      //verification du nombre d'inscrits max FROM table 
    			   $test1 = mysql_num_rows(mysql_query('SELECT jourc FROM reserv where jourc="'.$jourc.'" && heurec="'.$heurec.'" && Stand="'.$Stand.'"')); 
     
                   if($test1 < $nbp)
     
    				{  	 
    				   $reste=($nbp) - ($test1);
     
    	   	$requ=mysql_query('insert into reserv (jourc, heurec, nom, prenom, nlicence, datec, Stand, pseudo) 
    	         values ( "'.$jourc.'", "'.$heurec.'", "'.$nom.'", "'.$prenom.'", "'.$nlicence.'", "'.$datec.'", "'.$Stand.'", "'.$pseudo.'")');
    if($requ)
      {
     echo '<br /><a1><b1>Reservation réussie !</b1></a1><br />';
    Le nombre de postes par stand est défini dans un fic de variables.

    Du genre, v_complet, qui te liste toutes les périodes où la salle est complète (de façon dynamique of course).
    Je ne vois pas ce que tu me demandes.

    autre remarque, si max(datec) est plus petit que la datec le résultat sera -7 non?
    Images attachées Images attachées   

  12. #12
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonjour.

    Petite explication sur les champs date : Si ton champ input de type date est dans une page HTML5 et lang="fr", alors c'est tout bon pour toi.
    HTML5 te construit le petit calendrier qui va bien en français dans tous les navigateurs récents et tu récupères direct la date en format SQL pour ta base de données.
    Si tu veux mettre par défaut la date à aujourd'hui, il te suffit de faire ça :


    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="date" name="datec" id="datec" required value="<?php echo date('Y-m-d') ; ?>" />

    Ensuite en PHP, si on te donne une date, tu peux trouver le jour (de la semaine) de n'importe quelle date en procédant ainsi.
    Nul besoin de le faire saisir à l'utilisateur.
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $days=array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
    echo $days[date('w')];//pour aujourd'hui
    echo $days[date('w', mktime(0, 0, 0, 6, 30, 2020))];//affichera mardi car 30/06/2020


    Ce n'est pas te faire injure que de te dire que tu as construit ta base SQL sans aucune idée de modélisation.
    Peux-tu, souhaites-tu, tout revoir de ce côté (avec mon aide) ou bien ton site tourne comme ça et on ne change plus rien ?
    Les avantages seront énormes dans une base bien rangée. A l'arrache comme ça, je te dirais qu'il te faudrait 3 tables minimum pour être heureux.
    Et bien poser tes clés d'unicité.

    edit : aux autres : notre ami étant en page perso de free et n'ayant pas souhaité mettre à jour sa version de PHP, il est en 5.1 et ne peut profiter de la classe DateTime. (archi pratique)
    Là aussi, si tu es en période de refonte, je te dirai comment passer en 5.6 en... 3 lignes !
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  13. #13
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Bonjour
    merci pour ta patience et ton aide.
    Comme tu l'as constaté, je ne suis pas un expert en mysql.
    Ni en quoi que ce soit d'ailleurs.
    Mon formulaire est en PHP.
    C'est une vieille appli que j'avais récupéré il y a un bout de temps déjà.
    Je veux bien la dépoussiérer(avec ton aide) mais je n'ai pas beaucoup de connaissances.(Tu vas avoir du boulot)
    Avec free, j'avais vu que je pouvais passer à mysqli, mais je n'ai jamais osé me lancer.
    Dans un premier temps, le mktime m'intéresse dans la mesure où cela évite des saisies aux utilisateurs.
    Que dois-je faire ?

    Grâce à ton sql, j'ai quand même avancé au niveau du contrôle des inscriptions avec max(datec) et datediff (si datediff < 7, inscription refusée.)
    Merci

  14. #14
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tel que c'est là, tes clients ne se connectent pas avec un mot de passe, n'est-ce pas ?
    On va garder ce principe si cela t'arrange, et vu le peu de sensibilité de la problématique des réservations à un stand de tir.
    Comment sont constitués tes numéros de licence ?
    Genre compliqué ? En fait, j'aimerais que tu me donnes le format d'une licence de ce genre, évidemment pas un vrai numéro de licence mais NNLNNNLNL (pour nombre ou lettre)
    Si c'est cela, il suffira que ton client le saisisse.
    A quoi sert le pseudo ? Les gens veulent être anonymes entre eux ?
    Comment les appelles-tu au demeurant, client, utilisateur ?
    Selon tes réponses, je t'enverrai les nouvelles tables directement exploitables en sql.

    edit encore :

    Sur les pages perso de free, pour passer en php 5.6, il suffit de poser à la racine du site un fichier .htaccess qui contient juste ceci.

    Code htaccess : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <IfDefine Free>
    php56 1
    </IfDefine>
    Options -Indexes

    Cela nous permettrait ensuite d'utiliser la classe PDO pour se connecter à ta base, et SURTOUT la classe DateTime pour faciliter énormément tes calculs de date.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  15. #15
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Bonsoir
    pour pouvoir réserver ,le licencié doit créer un compte avec son nom ou un pseudo et un mot de passe.
    ensuite il se connecte au site pour les réservations.il y a un contrôle sur couple pseudo mdp.
    les n° de licence sont données par la fftir. le plus ancien 200000
    le plus jeune 82700000.
    utilisateur.
    j'avais déjà ajouté un htaccess avec php 1.
    Autre:
    je ne vois pas comment paramétrer mktime avec la variable datec. 15/06/2020 par exemple) et l'affecter à la variable jourc
    Merci.

  16. #16
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Donc tu n'as pas que la table reserv, si tu stockes les mots de passe cryptés ?

    j'avais déjà ajouté un htaccess avec php 1.
    Tu veux dire php 5.1 j'imagine ?
    Ou bien ton htaccess est exactement celui que je t'ai montré et tu es donc en PHP 5.6 ?
    Car si tu es en 5.6, tout est plus simple. Tu le verras surtout par la suite. Essaie ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $datec="15/06/2020";
    $days=array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
    $date_choisie=new DateTime($datec);
    echo $days[$date_choisie->format('w')];

    Ton $datec est une chaîne de caractères là ?
    Dans ce cas, et si tu es dans une version de php < 5.6, essaie ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $datec="15/06/2020";
    $temp=explode('/',$datec);
    $days=array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
    echo $days[date('w', mktime(0, 0, 0, $temp[1], $temp[0], $temp[2]))];
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  17. #17
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Bonjour
    j'ai une table membrereserv. Les champs de reserv +mail,avatar,date inscription,derniere connexion, et statut (2 admin, 1 normal)

    j'ai regardé les infos chez free,la version 5.6 est en beta.
    la variable $datec est une variable au format date (d/m/y).
    Je vais faire les tests avec tes exemples.

    J'ai essayé avec strtotime, mais ça ne marche pas.
    là je sature ,je vais faire un pause.
    Merci encore et bon week-end

  18. #18
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Bonjour
    Je suis de retour.
    j'ai terminé les réservations covid; Non sans mal avec datepicker.

    J'ai fait les tests que tu m'as demandés.
    1-- php56 1 dans htaccess. c'est ok, sauf que tous les caractères accentués pas ok ; j'ai 8859-1 dans mes header.

    2 -- mktime: si je mets la datec en dur c'est ok. Par contre je voudrais qu'il me prenne la datec rentrée par le formulaire.
    J'ai essayé avec la variable datec, mais j'ai des warning mktime sur le paramètre 5; Warning: mktime() expects parameter 5 to be long, string given in......
    j'ai essayé de changer les temp sans succès.

    Maintenant, je pense améliorer le site.
    Si je passe en PHP56 pourrai je utiliser PDO ou sqli ? Je pense d'après ce que j'ai lu, le sqli me donnera moins de boulot pour la refonte.
    Je vais devoir modifier toutes me requetes.
    Que me conseilles-tu?
    Merci

  19. #19
    Membre du Club
    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
    Points : 63
    Points
    63
    Par défaut
    Bonjour Dendrite
    je pense que tu es en vacances; je n'ai pas de réponse depuis un petit moment.

    Je voudrais passer à Mysqli avant de laisser la main aux jeunes du club.
    Il y a pas mal de boulot aussi je crois que je vais utiliser le mode procédural qui me parait
    être le plus proche de mysql et me donnerait le moins de travail.
    Quel est ton avis ?
    je vieillis et deviens fainéant mais je vais tout de même m'atteler à la tâche..
    Merci

  20. #20
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    mysqli, je ne pratique pas, mais c'est sûrement très bien.
    Si tu dois faire des requêtes avec des filtres entrés par l'utilisateur via un formulaire, sers-toi de ces exemples tirés du manuel PHP.

    https://www.php.net/manual/fr/mysqli...statements.php

    Pour des requêtes dont les filtres ne sont pas des saisies utilisateur, tu peux aller plus vite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* Récupère toutes les lignes de la table myCity */
    $query = "SELECT Name, CountryCode, District FROM myCity";
    if ($result = mysqli_query($link, $query)) {
        while ($row = mysqli_fetch_row($result)) {
            printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
        }
        /* Libère le résultat */
        mysqli_free_result($result);
    }
    Sinon, ben, pour mktime et ta date en français, ça donne ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $datec='30/06/2020';
    $temp=explode('/',$datec);
    $jour=$temp[0];
    $mois=$temp[1];
    $annee=$temp[2];
    $days=array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
    echo $days[date('w')];//pour aujourd'hui
    echo $days[date('w', mktime(0, 0, 0, $mois, $jour, $annee))];//affichera mardi car 30/06/2020
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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