Requete, entre 2 fesant deja partie d'entre 2 dates...

Résolu
Signaler
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
-
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
-
Bonjour,

J'ai un problème un peu compliqué à resoudre...

Je vais essayer d'etre claire.

Dans un calendrier mes utilisateurs peuvent diffuser une pub (image.jpg) entre 2 dates de leur choix (date1 et date2)

Lorsque que le calendrier s'affiche une ligne d'occupation leur montre les dates deja prisent. Apartir de la, ils peuvent voir les crénaux disponible.

Toute fois rien ne les empeche de prendre dates deja prisent lors de la validation du formulaire...

Pour le code voila les variables que je récupere:

function date_fr_to_mysql($str)
{
    return preg_replace(
        '/([0-9]{2}).?([0-9]{2}).?([0-9]{4})/',
        '\\3-\\2-\\1',
        $str);
}

$date_deb = $_POST['date1'];
$date_fin = $_POST['date2'];

$date1 = date_fr_to_mysql($date_deb);
$date2 = date_fr_to_mysql($date_fin);

En résumé:
Je voudrais vérifier qu'entre Date1 et Date2  aucune réservation  n'a deja etait faites.

J'espere avoir été claire dans le cas contraire je déveloprais un peu plus.

Az

3 réponses

Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
Réglé.

Az
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
J'ai essayer ca mais ca ne marche pas...

function date_fr_to_mysql($str)
{return preg_replace(
   '/([0-9]{2}).?([0-9]{2}).?([0-9]{4})/',
   '\\3-\\2-\\1',
   $str);}

$date_deb = $_POST['date1'];
$date_fin = $_POST['date2'];
$chk_ban  = $_POST['baniere'];
$chk_mot  = $_POST['moteur'];
$chk_aqu  = $_POST['aquereur'];

$date = date_fr_to_mysql($date_deb);
$date2 = date_fr_to_mysql($date_fin);
$date1 = $date;

while($date1>=$date2)
{
    $requete = 'SELECT *
    FROM site_resa
    WHERE \''.$date1.'\' BETWEEN date1 AND date2
    AND baniere = "on"
    OR aquereur = "on"
    OR moteur = "on"';

    $requete1 = mysql_query($requete)or die('Erreur SQL !
'.$requete.'
'.mysql_error());
    while ($data1=mysql_fetch_array($requete1))
        {$baniere = $data1[7];
        $moteur = $data1[8];
        $aquereur = $data1[9];}
        If (($chk_ban "on")&&($baniere "on"))
            {$date1 = $date2;
            $erreur = "oui";}        If (($chk_mot "on")&&($moteur "on"))
            {$date1 = $date2;
            $erreur = "oui";}        If (($chk_aqu "on")&&($aquereur "on"))
            {$date1 = $date2;
            $erreur = "oui";}
    
        $chaine = $date1;
        $date_deb_exp = explode ("-", $chaine);
        $jour = $date_deb_exp[2];
        $mois = $date_deb_exp[1];
        $annee = $date_deb_exp[0];

        $jour = $jour+1;

$date1 = $annee."-".$mois."-".$jour;
}

Az
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
J'y suis presque mais il reste une petite erreur, j'ai mis des annotations pour que vous puissiez me suivre:

function date_fr_to_mysql($str)
{return preg_replace(
   '/([0-9]{2}).?([0-9]{2}).?([0-9]{4})/',
   '\\3-\\2-\\1',
   $str);}

$date_deb = $_POST['date1'];
$date_fin = $_POST['date2'];
$chk_ban  = $_POST['baniere'];
$chk_mot  = $_POST['moteur'];
$chk_aqu  = $_POST['aquereur'];

$date = date_fr_to_mysql($date_deb);
$date2 = date_fr_to_mysql($date_fin);
$date1 = $date;
$erreur = "";

//boucle sur le nobre de jours entre Date1 et Date2
while($date1<$date2)
{
    //Ecriture de la requete
        $requete = 'SELECT *
        FROM site_resa
        WHERE \''.$date1.'\' BETWEEN date1 AND date2
        OR baniere = "on"
        OR moteur = "on"
        OR aquereur = "on"';
    //Envois de la requete   
        $requete = mysql_query($requete)or die('Erreur SQL !
'.$requete.'
'.mysql_error());
        while ($data=mysql_fetch_array($requete))
        {$baniere = $data[7];
        $moteur = $data[8];
        $aquereur = $data[9];}
       
    //Découpage de la date
            $chaine = $date1;
            $date_deb_exp = explode ("-", $chaine);
            $jour = $date_deb_exp[2];
            $mois = $date_deb_exp[1];
            $annee = $date_deb_exp[0];

    //Ajoute 1 jour
            $jour = $jour+1;
    //Formatage du nouveau jours sur 2 chiffres
    if ($jour<=9)
        $jour = "0".$jour;

    //formatage de la nouvelle date
        $date1 = $annee."-".$mois."-".$jour;

    //Si Date1 et Date2 ont le meme critére sur "on" on sort de la boucle, sinon on controle le jour suivant jusqu'a date2.        If (($chk_ban "on")&&($baniere "on"))
            {$erreur = $date1."baniere"; //==> "baniere"me sert a voir a quel endroit je sort de la boucle.
            break;}        If (($chk_mot "on")&&($moteur "on"))
            {$erreur = $date1."moteur";
            break;}        If (($chk_aqu "on")&&($aquereur "on"))
            {$erreur = $date1."aquereur";
            break;}
}

if ($erreur == "")
{
...
}

Le dernier probléme c'est que j'ai parfois des erreurs qui me font sortir de la boucle au niveau de "moteur" alors qu'il n'y a aucune raison...

A mon avis c'est soit une erreur au niveau de la requete ou des conditions... loool.

Az