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 :

Problème pour une réservation (Projet BAC) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut Problème pour une réservation (Projet BAC)
    Bonjour à tous,

    Comme vous l'avez vu dans le titre j'ai un soucis au niveau d'un enregistrement. Je m'explique, je travaille sur un projet concernant des gîtes. Pour ce projet je dois faire un formulaire permettant la réservation d'un client par un adhérent. La réservation s'effectue cependant j'ai voulu ajouter une requête SQL pour ne pas permettre l'ajout de deux réservations sur une même période (logique).

    Je vous laisse découvrir mon script :

    -------------------------------------

    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
     
    mysql_connect("localhost", "root", "GSI");
    mysql_select_db("GitesDuVertige");
     
    $dateDeb = $_POST['dateDeb'];
    $numGite = $_POST['numGite'];
    $dateFin = $_POST['dateFin'];
     
     
     
     
     
     
    	// Requête vérif réservations
     
    $requete = 'SELECT * FROM RESERVATION ';
    $requete .= 'WHERE "$DateDebut" < DateResDeb AND "$DateFin" > DateResDeb ';
    $requete .= 'OR "$DateDebut" < DateResDeb AND "$DateFin" >DateResfin ';
    $requete .= 'OR "$DateDebut" > DateResDeb AND "$Datefin" < DateResfin ';
    $requete .= 'OR "$DateDebut" < DateResDeb AND "$Datefin" > DateResfin';
     
    $verif=mysql_query($requete) or die (mysql_error());
     
    if (mysql_num_rows($verif)>0)
     
    	echo '<h1><center><strong>Il y a déjà une réservation sur cette période !</center></strong></h1>';
     
    else 
     
    	$verif=mysql_query("INSERT INTO RESERVATION VALUES ('','$dateDeb','$dateFin',$numGite)") or die (mysql_error());
    	if($verif)
    { 
        echo '<h1><center><strong>La réservation a bien été effectuée !</center></strong></h1>';
    }
    	mysql_close(); 
    ?>
     
    </body>
    </html>
    -----------------------------

    Le problème vient du fait que même si j'effectue une réservation sur une période déjà prise, ça m'affiche le message "La réservation a bien été effectuée !" alors qu'au contraire ça devrait m'afficher "Il y a déjà une réservation sur cette période".

    Si vous avez cerné mon problème je vous prie de bien vouloir m'aider

    Merci à tous et bonne soirée

    Kerly.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Bonjour kerly,

    Je pense que tu as simplement un problème de concaténation. Tes 3 variables sont considérées comme des chaînes de caractères.

    remplace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $requete .= 'OR "$DateDebut" < DateResDeb AND "$DateFin" >DateResfin ';
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $requete .= 'OR' . $DateDebut . '< DateResDeb AND' . $DateFin . ' >DateResfin ';
    Tu devrais déjà voir une différence de coloration non négligeable .

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Bonsoir berew et merci de ta réponse, en effet la différence est appréciable

    Cependant des messages d'erreurs s'affichent :

    ---------------

    Notice: Undefined variable: DateDebut in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 24

    Notice: Undefined variable: DateFin in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 24

    Notice: Undefined variable: DateDebut in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 25

    Notice: Undefined variable: DateFin in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 25

    Notice: Undefined variable: DateDebut in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 26

    Notice: Undefined variable: Datefin in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 26

    Notice: Undefined variable: DateDebut in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 27

    Notice: Undefined variable: Datefin in c:\users\damien\documents\damien\cours\terminale\gsi\double cle usb\gsi\easyphp1-8-modgsi\www\projet\repformulaire.php on line 27
    Erreur de syntaxe près de '< DateResDeb AND > DateResDeb OR< DateResDeb AND >DateResfin OR ' à la ligne 1

    ------------------

    La requête modifiée donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete = 'SELECT * FROM RESERVATION ';
    $requete .= 'WHERE' . $DateDebut . '< DateResDeb AND' . $DateFin .' > DateResDeb ';
    $requete .= 'OR' . $DateDebut . '< DateResDeb AND' . $DateFin . ' >DateResfin ';
    $requete .= 'OR' . $DateDebut . ' > DateResDeb AND' . $Datefin . ' < DateResfin ';
    $requete .= 'OR' . $DateDebut .  ' < DateResDeb AND' . $Datefin . ' > DateResfin ';

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Ha je n'avais pas vu au début mais ça parait tellement gros .

    Regarde un peu le nom de tes variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $dateDeb = $_POST['dateDeb'];
    $numGite = $_POST['numGite'];
    $dateFin = $_POST['dateFin'];
    et celle que que tu utilises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $requete = 'SELECT * FROM RESERVATION ';
    $requete .= 'WHERE' . $DateDebut . '< DateResDeb AND' . $DateFin .' > DateResDeb ';
    $requete .= 'OR' . $DateDebut . '< DateResDeb AND' . $DateFin . ' >DateResfin ';
    $requete .= 'OR' . $DateDebut . ' > DateResDeb AND' . $Datefin . ' < DateResfin ';
    $requete .= 'OR' . $DateDebut . ' < DateResDeb AND' . $Datefin . ' > DateResfin ';

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Oula oui en effet, ça fait plusieurs jours que je bute sur ça alors qu'il n'y avait pas à chercher bien loin ... J'en rigole

    Merci beaucoup pour ton aide, juste que je ne comprend pas l'apparition de ce message à présent quand je valide le formulaire :

    Erreur de syntaxe près de '-06-02< DateResDeb AND2008-06-16 > DateResDeb OR2008-06-02< Date' à la ligne 1

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Ajoute quelques espaces que l'on voit un peu tous les mots et nombres de ta requête^^

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Même en y rajoutant des espaces, le même message apparaît :/

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    As-tu bien vérifié le nom de tes champs et table? As-tu testé ta requête directement dans le SGBD? Sous quel format récupères-tu les dates?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Oui les champs ont été vérifiés j'ai oublié deux majuscules mais rien 'a changé. La requête a été testée sous phpmyadmin et elle fonctionne. Le format est aaaa-mm-jj

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Il a y encore des erreurs dans le nom de tes variables (majuscule et minuscule). J'ai corrigé et recollé ta requête essaie la.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete = "SELECT * FROM RESERVATION WHERE " . $DateDebut . " < DateResDeb AND " . $DateFin . " > DateResDeb OR " . $DateDebut . " < DateResDeb AND " . $DateFin . " > DateResfin OR " . $DateDebut . " > DateResDeb AND " . $DateFin . " < DateResfin OR " . $DateDebut . " < DateResDeb AND " . $DateFin . " > DateResfin ";

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    J'ai apporté les modifications cependant ça enregistre toujours la réservation, je ne comprends pas. Je te met le script modifié :

    --------------------------------

    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
    41
    42
    43
    44
    <html>
    	<head>
    		<title>Formulaire de réservation</title>
    	</head>
    	<body background="nature_159.jpg">
     
    <?php
     
    mysql_connect("localhost", "root", "GSI");
    mysql_select_db("GitesDuVertige");
     
    $DateDebut = $_POST['dateDeb'];
    $numGite = $_POST['numGite'];
    $DateFin = $_POST['dateFin'];
     
     
     
     
     
     
    	// Requête vérif réservations
     
    $requete = "SELECT * FROM RESERVATION WHERE " . $DateDebut . " < DateResDeb AND " . $DateFin . " > DateResDeb OR " . $DateDebut . " < DateResDeb AND " . $DateFin . " > DateResFin OR " . $DateDebut . " > DateResDeb AND " . $DateFin . " < DateResFin OR " . $DateDebut . " < DateResDeb AND " . $DateFin . " > DateResFin ";
     
     
     
    $verif=mysql_query($requete) or die (mysql_error());
     
    if (mysql_num_rows($verif)>0)
     
    	echo '<h1><center><strong>Il y a déjà une réservation sur cette période !</center></strong></h1>';
     
    else 
     
    	$verif=mysql_query("INSERT INTO RESERVATION VALUES ('','$DateDebut','$DateFin',$numGite)") or die (mysql_error());
    	if($verif)
    { 
        echo '<h1><center><strong>La réservation a bien été effectuée !</center></strong></h1>';
    }
    	mysql_close(); 
    ?>
     
    </body>
    </html>

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Tu n'as plus d'erreur qui s'affiche? le seul souci est que la réservation est toujours enregistrée?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Oui c'est ça

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Pourrais-tu ajouter les balises que ce soit plus lisible?

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    C'est fait.

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Si ça peut éclairer, le formulaire est celui-ci :

    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
    <html>
    	<head>
    		<title>Formulaire de réservation</title>
    	</head>
    	<body background="nature_159.jpg">
    		    <form action="RepFormulaire.php" method="POST">
     
    		<h1 align="center"><u><b>Formulaire de réservation</b></u></h1>
    		<br/>
    		<br/>
    		<h2><u>Veuillez fournir les informations suivantes :</h2></u>
    		<br/>
    		<h3> Dates de réservation du client :</h3>
    		<p>Du : <input type="text" name="dateDeb" value="(aaaa-mm-jj)" size="10" maxlength="10"> 
    		   Au  : <input type="text" name="dateFin" value="(aaaa-mm-jj)" size="10" maxlength="10"></p>
     
     
     <h3> Numéro du gîte à réserver:</h3>
    	 <input type="text" name="numGite" value="" size="1">
     
    		<p><input type="submit" name="valider" value="Valider la réservation"> <input type="reset" name="annuler" value="Annuler la réservation"></p>
    	</body>
    </html>

  17. #17
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Lorsque tu fais ta requête en dur dans Phpmyadmin tu récupères bien ce qu'il te faut?

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Plus maintenant, on avait essayer au lycée ça fonctionnais et plus maintenant ... Quelle prise de tête pour une réservation ... ^^

  19. #19
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2012
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Bon, dis-moi ou tu en es, ce qui marche ce qui marche pas, je suis un peu perdu là^^

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Quand je teste la requête sur phpmyadmin, je dois remplacer les variables ou les autres champs par des dates ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [RCP] problème pour exporter le projet
    Par david06600 dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 14/11/2007, 16h46
  2. Problème pour une définition de type
    Par Kleer dans le forum Ada
    Réponses: 4
    Dernier message: 05/03/2007, 12h34
  3. Problème pour une calculette
    Par Pyrhaa_666 dans le forum C
    Réponses: 5
    Dernier message: 13/07/2006, 19h47
  4. [VB6]problèmes pour executer mon projet en VB
    Par Walowalo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/04/2006, 19h27
  5. problème pour une calculatrice
    Par Anthobask dans le forum C
    Réponses: 4
    Dernier message: 19/12/2005, 21h11

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