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 :

probleme requete sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut probleme requete sql
    bonjour à tous,

    je m'explique j'ai 3 tables dont voici le code :
    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
    CREATE TABLE etat(
    id_etat INT NOT NULL AUTO_INCREMENT,
    description_etat VARCHAR(40) NOT NULL,
    constraint Pk_etat Primary Key (id_etat))TYPE=InnoDB;
     
    CREATE TABLE evenements(
    id_evenement INT NOT NULL AUTO_INCREMENT,
    jour_evenement VARCHAR(2) NOT NULL,
    mois_evenement VARCHAR(2) NOT NULL,
    annee_evenement VARCHAR(4) NOT NULL,
    heure VARCHAR(2),
    id_etat_evenement INT,
    constraint Pk_evenements Primary key (id_evenement),
    constraint Fk_evenements Foreign key (id_etat_evenement) References etat (id_etat))TYPE=InnoDB;
     
    CREATE TABLE horaires(
    id_horaire INT NOT NULL AUTO_INCREMENT,
    jour VARCHAR(10),
    heure VARCHAR(2),
    id_etat_horaire INT,
    constraint Pk_horaires Primary key (id_horaire),
    constraint Fk_horaires Foreign key (id_etat_horaire) References etat (id_etat))TYPE=InnoDB;
    Je veux réaliser un tableau ou je vois les heures et les id_etat de chaque évènement par rapport à la date d'aujourd'hui.

    Pour cela j'ai utilisé cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $aujourdhui = date("d/m/Y");
    qui me retourne 11/03/2010. Jusque la tout va bien!

    Ensuite je réalise ma requête et affiche le tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$sql= "SELECT heure, id_etat_evenement FROM evenements, etat WHERE evenements.id_etat_evenement=etat.id_etat AND " " ORDER BY heure*1 ASC";
    	//le *1 force la transformation en nombre puisque le champ heure dans la table est en varchar et non en int.
    	$req = mysql_query($sql) or die(mysql_error());
    La ou sont les guillemets je ne sait pas quoi mettre!
    Quelqu'un sait-il faire ce genre de requête? merci!

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Bonjour,
    Pourquoi ne pas utiliser le type date dans ta table, et selectionner les entrées dont la date est celle du jour ? :
    WHERE date=NOW()

    Z.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    merci zwiter pour ta réponse,
    je n'ai pas le droit de changer la table c'est une histoire de timestamp! c'est sur que sa aurait été plus facile comme tu me le di!

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    je viens de changer dans ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE evenements(
    id_evenement INT NOT NULL AUTO_INCREMENT,
    date date NOT NULL,
    heure VARCHAR(2),
    id_etat_evenement INT,
    constraint Pk_evenements Primary key (id_evenement),
    constraint Fk_evenements Foreign key (id_etat_evenement) References etat (id_etat))TYPE=InnoDB;
    Sauf que lorsque je fait un insert sa m'affiche toujours : 0000-00-00.

    voici le code :
    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
    	if (isset($_POST['envoi']))
    	{
    		//création de la requète d'insertion
    		$date_evenement = ($_POST['date_evenement']);
    		$heureDebut = ($_POST['heure_debut']);
    		$heureFin = ($_POST['heure_fin']);
    		$id_etat_evenement = $_POST['id_etat_evenement'];
     
    				if(!empty($date_evenement) && !empty($heureDebut) && !empty($heureFin) && !empty($id_etat_evenement))
    				{
    					$heure = $heureDebut; // tant que l'heure de départ n'a pas atteint l'heure de fin on fait des insert
    					while ($heure < $heureFin)
    					{
    						$req = "INSERT INTO evenements VALUES ('', $date_evenement, $heure, $id_etat_evenement)";
    						mysql_query($req) or die(mysql_error());
    						$heure = $heure + 1; // voir comment rajouter une heure à l'heure saisi car ce n'est pas forcement un int
    					}
     
    				mysql_close();				
    				echo '<ul><li>Evénement enregistré !</li></ul>';
    				}
    		}
    Quelqu'un a-t-il la solution???
    Merci

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    dans mysql elle doit etre par défaut de cette manière 0000-00-00 non?

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    ton $_POST["date_evenement"] renvoi la date sous quel format???

    Parce que un champ de type date doit recevoir ses données sous forme de AAAA-MM-JJ

    Si tu ne lui envoi pas au bon format, il te mets en défaut 0000-00-00

  7. #7
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    merci de ta réponse ze azar!
    voici le code de mon formulaire :
    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
    echo "<h1>Ajouter un événement</h1>
     
        <form method='post' action='#'>
        	<table id='tabAjoutEvent'>
            	<tr>
                	<td>Date : <input type='date' size = '10' name='date_evenement' value='$date_evenement'/></td>
                </tr>
     
    			<tr>
                	<td>Heure Debut : <input type='text' size = '2' name='heure_debut'</td>
                    <td>Heure Fin : <input type='text' size = '2' name='heure_fin'</td>
    			</tr>
     
    			<td>Description de la piste : </td>
    			<td><select name='id_etat_evenement'>";
     
                $sql = ('SELECT * FROM etat');
                $req = mysql_query($sql) or die(mysql_error());
                while($data = mysql_fetch_assoc($req))
                {
    			$optionT = $data['id_etat'].' | '.$data['description_etat'];// concaténation des deux éléments de la table état
    			echo '<option value='.$optionT.'>' .$optionT. '</option>';
                }
                mysql_close();
     
    			echo "</select></td>
    			</tr>
     
    			<tr>
    				<td><input name='reset' type='reset' value='Effacer'/></td>
                </tr>
     
    			<tr>
    				<td colspan='2'><input type='submit' name='envoi' value='Envoyer'/></td>
    			</tr>
     
     
    		</table>
        </form>
    C'est surment cette ligne qui nous intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            	<tr>
                	<td>Date : <input type='date' size = '10' name='date_evenement' value='$date_evenement'/></td>
                </tr>
    Oui je comprend bien ce que tu veux me dire mais c'est dans le input qui faut le préciser?

  8. #8
    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,
    Tu ne répond pas à la question de Ze AzAr
    Citation Envoyé par Ze AzAr
    ton $_POST["date_evenement"] renvoi la date sous quel format???
    C'est là le soucie.
    Par contre une discussion résolue qui poura t'aider: date dans un formulaire.

  9. #9
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    merci de ta réponse andry.aime,

    mon $_POST["date_evenement"] renvoi la date sous le format :

    $date_evenement = date("Y-m-d");

    Ce que je veux c'est afficher dans mon input la date du jour sous ce format:
    11/03/2010

    ensuite dans mon insert il faut que ce soit de ce format si jai bien compris :
    date("Y-m-d"); comment faut-il faire?

  10. #10
    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
    ensuite dans mon insert il faut que ce soit de ce format si jai bien compris :
    date("Y-m-d"); comment faut-il faire?
    C'est expliqué sur la discussion sur le lien que j'ai donné précédemment .

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    ouai j'ai regardé mais j'ai pas tout compris

    sachant que j'ai une variable $date_evenement je vais pas l'incrémenter 2 fois!!

  12. #12
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    mon code :

    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
    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
    <?php
    include ('traitements.php');
    connectDB();
     
    	$date_evenement = date("Y-m-d");
     
    	if (isset($_POST['envoi']))
    	{
    		//création de la requète d'insertion
    		$date_evenement = ($_POST['date_evenement']);
    		$heureDebut = ($_POST['heure_debut']);
    		$heureFin = ($_POST['heure_fin']);
    		$id_etat_evenement = $_POST['id_etat_evenement'];
     
    				if(!empty($date_evenement) && !empty($heureDebut) && !empty($heureFin) && !empty($id_etat_evenement))
    				{
    					$heure = $heureDebut; // tant que l'heure de départ n'a pas atteint l'heure de fin on fait des insert
    					while ($heure < $heureFin)
    					{
    						$req = "INSERT INTO evenements VALUES ('', '$date_evenement', $heure, $id_etat_evenement)"; //mettre des '' pour la date evenement
    						mysql_query($req) or die(mysql_error());
    						$heure = $heure + 1; // voir comment rajouter une heure à l'heure saisi car ce n'est pas forcement un int
    					}
     
    				mysql_close();				
    				echo '<ul><li>Evénement enregistré !</li></ul>';
    				}
    		}
     
     
    	echo "<h1>Ajouter un événement</h1>
        
        <form method='post' action='#'>
        	<table id='tabAjoutEvent'>
            	<tr>
                	<td>Date : <input type='date' size = '10' name='date_evenement' value='$date_evenement'/></td>
                </tr>
    			
    			<tr>
                	<td>Heure Debut : <input type='text' size = '2' name='heure_debut'</td>
                    <td>Heure Fin : <input type='text' size = '2' name='heure_fin'</td>
    			</tr>
    
    			<td>Description de la piste : </td>
    			<td><select name='id_etat_evenement'>";
     
                $sql = ('SELECT * FROM etat');
                $req = mysql_query($sql) or die(mysql_error());
                while($data = mysql_fetch_assoc($req))
                {
    			$optionT = $data['id_etat'].' | '.$data['description_etat'];// concaténation des deux éléments de la table état
    			echo '<option value='.$optionT.'>' .$optionT. '</option>';
                }
                mysql_close();
     
    			echo "</select></td>
    			</tr>
    			
    			<tr>
    				<td><input name='reset' type='reset' value='Effacer'/></td>
                </tr>
    			
    			<tr>
    				<td colspan='2'><input type='submit' name='envoi' value='Envoyer'/></td>
    			</tr>
    			
    			
    		</table>
        </form>
    	
     	<br><a href='index.php'>Revenir à l'accueil</a>";
     
    ?>
    ce qui est expliquer me donne pas la date du jour sa me retourne une date au bon format mais pas celle d'aujourd'hui...

  13. #13
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date_evenement = implode('-',array_reverse (explode('/',$_POST['date_evenement'])));
    Si on saisie une date de format "dd/mm/yyyy" sur ton formulaire, ce code transforme la date de format 'yyyy-mm-dd'.

  14. #14
    Membre éclairé
    Inscrit en
    Mars 2010
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 271
    Par défaut
    okay j'avais pas tout pigé! je pensais pas qu'il fallait le mettre dans $_POST!
    tu me sort de la noyade je te remercie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Probleme requete sql et code html
    Par needles94000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/03/2006, 17h38
  2. [Access] Probleme requete SQL
    Par kissmytoe dans le forum Langage SQL
    Réponses: 11
    Dernier message: 24/02/2006, 15h25
  3. probleme requete SQL
    Par grochenel dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/12/2005, 09h26
  4. [MySQL] probleme requete sql et php
    Par digger dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/10/2005, 14h15
  5. probleme requete sql
    Par Shosho dans le forum Langage SQL
    Réponses: 12
    Dernier message: 03/05/2005, 09h25

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