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 :

empecher un enregistrement sur une tranche horaire deja prise


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut empecher un enregistrement sur une tranche horaire deja prise
    Bonjour à tous,
    j'essai de faire un truc pour mon association mais je sèche depuis 1 mois et j'arrive au bout du temps de mes recherches.

    voila on prête des voitures à pédales pour des enfants mais, l'association à besoin de prendre les réservations par internet car nous bossons tous et pas évident d’être toujours dispo.

    les gens choisisent un vehicule de la liste
    date de debut ( datetime) et date de fin (datetime)

    voici le formulaire de demande

    Code html : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    <?php
    header( 'content-type: text/html; charset=utf-8' );
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Reservation véhicule</title>
    <style type="text/css">
    body {
      background-color: rgb(0, 0, 0);
      background-color: rgba(0, 0, 0, 0.7);
    }
    select {
    width : 250px ;
    }
    .Style21 {
            font-size: 24px;
            color: #FFFFFF;
            font-weight: bold;
    }
    .Style22 {
            font-size: 9px;
            color: #999999;
    }
    .Style20 {      font-size: 24px;
            color: #FFFFFF;
    }
    </style>
    </head>
     
     
    <body>
    <p><br />
    </p>
    <form method="post" action="ajoutreservessai.php">
      <div align="center"></div>
      <table width="852" border="0" align="center" cellspacing="0">
        <tr>
          <td width="55"><span class="Style20"><a href="../index.php"><img src="../../images/Retour.png" alt="" title="RETOUR"/></a></span></td>
          <td width="944"><div align="center" class="Style20">Réserver un véhicule</div></td>
        </tr>
      </table><br />
      <table width="1275" border="0" align="center">
      <tr>
        <td><table width="1022" border="1" align="center">
          <tr>
            <td width="103" bgcolor="#FFFF99">Véhicule :</td>
            <td width="250" bgcolor="#FFFFFF"><span class="zone_texte">
              <select name="vehicule" class = 'moyen'>
                <option value=" "> </option>
                <option value="voiture rouge">voiture rouge</option>
                <option value="voiture verte">voiture verte</option>
                <option value="voiture grise">voiture grise</option>
                <option value="moto bleue">moto bleue</option>
                <option value="moto jaune">moto jaune</option>
                <option value="moto rose">moto rose</option>
              </select>
            </span></td>
            <td width="132" bgcolor="#FFFF99">Heure de début :</td>
            <td width="188" bgcolor="#FFFFFF"><span class="zone_texte">
              <input type="datetime-local" id="started_at" name="started_at" value="" />
            </span></td>
            <td width="147" bgcolor="#FFFF99">Heure de fin :</td>
            <td width="162" bgcolor="#FFFFFF"><span class="zone_texte">
              <input type="datetime-local" id="ended_at" name="ended_at" value="" />
            </span></td>
     
          </tr>
     
     
        </table></td>
      </tr>
    </table><br />
    <div align="center"></div>
      <div align="center">
        <input type="submit" value="Valider" />
        <input type="reset" value="Recommencer" />
      </div>
    </form>
    </body>
    </html>

    ce formulaire envoi vers une page de traitement

    traitement :

    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
    36
    37
    38
    39
    40
     
     
    <?php
    // information pour la connection à le DB
    $conn = mysqli_connect('*****', '*****', '*****', '*****');
    //modification des caractères avec accents
    mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'");
     
     
      //récupération des valeurs des champs:
      $id = $_POST["id"] ;
      $vehicule = $_POST["vehicule"] ;
      $started_at = $_POST["started_at"] ;
      $ended_at = $_POST["ended_at"] ;
     
     
     
      //création de la requête SQL:
     
     
      $sql = "INSERT INTO cles2(id , vehicule, started_at, ended_at) VALUES ( '$id' ,'$vehicule','$started_at', '$ended_at')";
     
     
     
    //exécution de la requête SQL:
    	$result = $conn->query($sql);
     
     
      //affichage des résultats, pour savoir si la modification a marchée:
      if($result)
      {
      	echo "prêt non validé";
     
      }
      else
      {
         echo "prêt non valide, deja pris";
      }
    ?>
    globalement ça marche

    pourriez vous m'aider a corriger mon sript pour faire en sorte que si un créneau est pris pour un véhicule, une personne qui réserve le même et que sa réservation empiète sur l'autre réservation cela lui refuse l'enregistrement et par conséquent lui affiche un message et n'enregistre rien sur la bdd

    merci j'en peu plus ca fais plein de temps que j'essaye tout ce que je peux trouver sur le net mais sans succès et c'est supper urgent maintenant

    merci a vous de l'interet que vous portez a aider les gens novices comme moi

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    1- Ton formulaire n'as pas d'élément avec l'attribut name="id" or que tu en récupères dans $_POST. Ensuite, un id doit être unique.
    2- Tu ne dois pas mettre directement des valeurs du formulaires dans la requête mais utiliser une requête préparée.
    3- Pour ta demande, tu dois vérifier dans la base si la voiture est déjà réservée pour le créneau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from cle2 where (:started_at between started_at and ended_at or :ended_at  between started_at and ended_at ) and vehicule= :vehicule
    Si ça retourne de ligne (que tu peux afficher), c'est que c'est déjà réservé, tu ne lances plus la requête pour l'insertion.

    Tu peux mettre aussi les véhicules dans une table dans ta base, sur laquelle tu boucles pour générer les options avec son id comme valeur et ce que tu mettras dans la table cle2.

    A+.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    Merci de votre réponse

    c'est tres confus pour moi mais je vais essayer de bricoler un truc je vous redis
    encore merci

Discussions similaires

  1. [PHP 7] executer script sur une tranche horaire
    Par thibotus01 dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2017, 20h25
  2. [OL-2016] Notification quotidienne sur une tranche horaire
    Par curt dans le forum Outlook
    Réponses: 1
    Dernier message: 05/01/2017, 14h19
  3. Réponses: 5
    Dernier message: 20/01/2016, 14h50
  4. Réponses: 3
    Dernier message: 01/12/2005, 10h17
  5. limitation du nombre d'enregistrement sur une jointure
    Par coredump dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2005, 16h13

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