probleme de date et le format SQL

fanette
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 22:34

Bonsoir

J'ai une requete SQL qui fonctionne mais cependant j'ai un provleme en effet dans mon SQL jai un champs date qui est sous la forme : 2007-01-12

hors j'ai ma requete
$result = mysql_query("SELECT * FROM agenda WHERE yeardebut = '$annee-$mois-$jour'  AND region = '1' OR region  = '2' OR region = '3' ORDER BY id DESC");
cependant ma varialble $annee-$mois-$jour' est egal a 2007-1-12 il manque donc le 0 à 01 ... avez vous une méthode pour remedier a ce probleme ?

Merci

Invité
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 22:39


fanette
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 22:46

J'ai fait
WHERE yeardebut = getdate('$c_annee-$c_mois-$jour')
mais sa ne change rien a mon probleme ...

Invité
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 22:50

il me manque toujours le 0

ViPHP
ViPHP | 1961 Messages

02 janv. 2007, 22:53

Bonjour,

Avant d'utiliser tes variables PHP dans MySQL tu dois le convertir à un format compréhensible par MySQL.

Tes variables PHP peuvent être considérées comme des chaines.
Tu dois donc convertir tes chaines PHP en DATE MySQL.

La fonction MySQL qui te permet de faire ça c'est STR_TO_DATE()

Dans ton cas ça donnerait QQ chose du style
$qry = "SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('". $annee."-".$mois."-".$jour."', '%Y-%m-%d')  AND region = '1' OR region  = '2' OR region = '3' ORDER BY id DESC";
if(!$result = mysql_query($qry)){
   die('ERR_SQL :<br />' . $qry . '<br />' . mysql_error());
}
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 22:56

il me manque toujours le 0
essaies ca:

$
date = getdate();
$year = $date[year];
$mois = $date[mon];
$jour = $date[mday];
$FormatDate = "$jour-$mois-$year";
$select = "SELECT * FROM $table WHERE date='$FormatDate'";

Invité
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 23:02

bonsoir merci de ta réponse

jai donc mi ceci

Code : Tout sélectionner

yeardebut = STR_TO_DATE('". $annee."-".$mois."-".$jour."', '%Y-%m-%d')
J'ai afficher le resulatt de la requete mais sa ne maffiche pas le 0 manquant ... et donc pas de resultat.

ViPHP
ViPHP | 1961 Messages

02 janv. 2007, 23:05

C'est normal que tu ne le vois pas comme ça,
Essaie ta requête, elle fonctionne à condition que ton champ dans la base soit de type DATE
Si par exemple il est de type DATETIME ou bien TIMESTAMP il te faudra ajouter l'heure.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 23:08

Re bonsoir

jai fait la méthodes
$FormatDate = "$jour-$mois-$year"; 
je les affiché mais il me manque toujours mon 0

Invité
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 23:10

Ajolocla

Jai vérifier le Type dans SQL est bien "date"

ViPHP
ViPHP | 1961 Messages

02 janv. 2007, 23:15

Re,
Dans la mhode que je t'ai donné, c'est pas PHP qui fera cette conversion mais MySQL donc tu ne peut pas le voir en affichant ta requête avant l'exécution.

Fais un copier coller du résultat. dans phpMyAdmin ou bien dans le client MySQL et exécute-la. Là tu comprendras.

Si tu tiens vraiment à le voir, ton 0, avant l'exécution utilise ceci
 $mois = $mois < 10 ? $mois : '0' . $mois;
$jour = $jour < 10 ? $jour : '0' . $jour;
Mais je te rassure tout de suite. Ça ne changera rien, SI ça fera faire plus d'instructions et donc ça ralentira d'avantage ton appli.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 1961 Messages

02 janv. 2007, 23:23

Re,
Si ça peut te rassurer regarde le code suivant

Code : Tout sélectionner

mysql> SELECT STR_TO_DATE('2007-1-1', '%Y-%m-%d'); +-------------------------------------+ | str_to_date('2007-1-1', '%Y-%m-%d') | +-------------------------------------+ | 2007-01-01 | +-------------------------------------+ 1 row in set (0.06 sec) mysql>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

fanette
Invité n'ayant pas de compte PHPfrance

02 janv. 2007, 23:47

Merci pour t'es réponse

alors j'ai prit ta méthode cepandant sa ne fonctionne pas voici ma requete qui se creer

je lé afficher avecx un echo

Code : Tout sélectionner

SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('2007-1-12', '%Y-%m-%d') AND region = '6' ORDER BY id DESC
et voici la requete du code

Code : Tout sélectionner

$result = "SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('$annee-$mois-$jour', '%Y-%m-%d') AND region = '1' OR region = '2' OR region = '3' ORDER BY id DESC";

ViPHP
ViPHP | 1961 Messages

02 janv. 2007, 23:52

Re,
Tu es sur que cette requête génère le code que tu montres ???
Avec ceci
AND region = '1' OR region  = '2' OR region = '3'
J'ai beaucoup de mal à croire que ça génère ceci
AND region = '6' 
Sinon, as tu fait ce que je t'ai demandé ???
Exécuter ta requête sous phpMyAdmin ou bien sous le client MySQL.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

fanette
Invité n'ayant pas de compte PHPfrance

03 janv. 2007, 00:01

Re bonsoir

ALors en faite voici le code complet je lavai reduit afin qu'il soit + comphrehensible
if($_GET['region'] == 'fr') {
$result = "SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('$c_annee-$c_mois-$jour', '%Y-%m-%d') AND region = '1' AND region  = '2' AND region = '3' AND region = '4' AND region = '5' AND region = '6' AND region = '7' AND region = '8' AND region = '9' AND region = '10' AND region = '11' AND region = '12' AND region = '13' AND region = '14' AND region = '15' AND region = '16' AND region = '17' AND region = '18' AND region = '19' AND region = '20' AND region = '21' AND region = '22' ORDER BY id DESC";
$result2 = mysql_query($result);
}

[php]SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('2007-1-12', '%Y-%m-%d') AND region = '1' AND region = '2' AND region = '3' AND region = '4' AND region = '5' AND region = '6' AND region = '7' AND region = '8' AND region = '9' AND region = '10' AND region = '11' AND region = '12' AND region = '13' AND region = '14' AND region = '15' AND region = '16' AND region = '17' AND region = '18' AND region = '19' AND region = '20' AND region = '21' AND region = '22' ORDER BY id DESC
if($_GET['region'] <> 'fr') {
$result = "SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('$c_annee-$c_mois-$jour', '%Y-%m-%d') AND region = '$_GET[region]' ORDER BY id DESC";
$result2 = mysql_query($result);
}[/php]
SELECT * FROM agenda WHERE yeardebut = STR_TO_DATE('2007-1-12', '%Y-%m-%d') AND region = '4' ORDER BY id DESC
donc voici tous le code ... avec les resulat afficher avec un echo