Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 11/03/2010, 09h57   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
Par défaut probleme requete sql

bonjour à tous,

je m'explique j'ai 3 tables dont voici le code :
Code :
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 :
$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 :
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!
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 10h05   #2
Membre émérite
 
Assistant recherche bioinfo
Inscription : novembre 2007
Messages : 800
Détails du profil
Informations personnelles :
Localisation : Canada

Informations professionnelles :
Activité : Assistant recherche bioinfo

Informations forums :
Inscription : novembre 2007
Messages : 800
Points : 825
Points : 825
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.
Zwiter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 10h10   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
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!
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 10h36   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
je viens de changer dans ma base :

Code :
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 :
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

Dernière modification par johan0510 ; 11/03/2010 à 11h08.
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 11h14   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
dans mysql elle doit etre par défaut de cette manière 0000-00-00 non?
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 11h25   #6
Membre habitué
 
Inscription : juillet 2009
Messages : 156
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 156
Points : 133
Points : 133
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
Ze AzAr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 11h28   #7
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
merci de ta réponse ze azar!
voici le code de mon formulaire :
Code :
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 :
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?
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 11h33   #8
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 4 774
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 4 774
Points : 6 723
Points : 6 723
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.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 11h50   #9
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
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?
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 12h00   #10
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 4 774
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 4 774
Points : 6 723
Points : 6 723
Citation:
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 .
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 12h02   #11
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
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!!
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 12h05   #12
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
mon code :

Code :
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...
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 12h13   #13
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 4 774
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 4 774
Points : 6 723
Points : 6 723
Code :
$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'.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 12h21   #14
Candidat au titre de Membre du Club
 
Inscription : mars 2010
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 111
Points : 11
Points : 11
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
johan0510 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 08h40.


 
 
 
 
Partenaires

Hébergement Web