trouver des enregistrements en fction d'un seuil

Mammouth du PHP | 19672 Messages

10 oct. 2005, 23:03

bonne nuit ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

11 oct. 2005, 07:27

Alut :lol:
bonne nuit
merci bcq :P

Sinon, je viens de tester ma requete ds phpmyadmin. g remplacé les colname par des valeurs mais il me dit que la requete a été effectuée avec succes et je ne vois pas de valeurs :cry: .

Comment faut-il faire pour tester correctement les valeurs?
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Eléphant du PHP | 289 Messages

11 oct. 2005, 08:01

en fait, je viens de comprendre pourkoa il me dit que tout va bien mais ne m'affiche aucun resultat!!!

qd je fais la requete sans les conditions sur les colname 1 à 3 cad le requete suivante:
SELECT registre.NumDossier, registre.NumOT, registre.NumPompe, registre.Marques, registre.Models, registre.Secteur, registre.Urgence, registre.Datedebut, registre.Cloture, SUM(points.Points) AS test FROM registre, points WHERE registre.ID = points.Numdossier GROUP BY registre.NumDossier ORDER BY test Desc 
j'obtiens tous les resultats de ma table points

mais lorsque je rajoute
AND registre.Datedebut > 2005-02-01 AND registre.Datedebut < 2005-02-28
je n'obtiens plus rien, mais je n'ai pas de message d'erreur!
je ne te parle meme pas si je rajout la condition avec test!!!

est ce que tu sais d'ou ca peut provenir??? le format de "datedebut" est datetime. est ce que ca peut venir de la?

Fab
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 oct. 2005, 08:32

lorsque je rajoute
AND registre.Datedebut > 2005-02-01 AND registre.Datedebut < 2005-02-28
je n'obtiens plus rien, mais je n'ai pas de message d'erreur!

le format de "datedebut" est datetime. est ce que ca peut venir de la?
Sûrement !
Il y a là 2 problèmes dans cette syntaxe.

- 2005-02-01 n'est pas une valeur numérique mais une chaîne de caractère.
Tu dois donc la placer entre apostrophes.

- après avoir mis ces valeurs entre apostrophes, cela revient à effectuer une comparaison de chaînes de caractères
or, comme tu fais bien de le préciser, le format de "datedebut" est datetime.
Il faut donc transtyper ta valeur '2005-02-01' de format chaine de caractère en format date.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 oct. 2005, 08:38

Essaie avec ces clauses :
AND registre.Datedebut > mktime(0,0,0,2,01,2005)
AND registre.Datedebut < mktime(0,0,0,2,28,2005)

Eléphant du PHP | 289 Messages

11 oct. 2005, 08:40

alut et comment que tu fais pour transcripter?? :wink:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 oct. 2005, 08:45

La fonction mktime() crée une valeur au format date à partir d'éléments numériques. ;)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 oct. 2005, 08:47

NB : transtyper, et non transcrypter ! ;)
- transtyper : changer le type (le format) d'une donnée
- transcrypter : je ne connais pas, mais crypter sigifie coder, rendre inaccessible

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 oct. 2005, 08:50

Est-ce un peu plus clair comme ça ?
AND registre.Datedebut > 01-02-2005
// tu compares une date avec une forme non valide (ni numérique, ni vraiment chaîne de caractères)
// --> ça ne marchera pas

AND registre.Datedebut > '01-02-2005'
// tu compares une date avec une chaîne de caractères
// --> ça ne marchera pas

AND registre.Datedebut > mktime(0,0,0,2,1,2005) 
// tu compares une date avec une date
// --> ça devrait marcher

Mammouth du PHP | 19672 Messages

11 oct. 2005, 08:52

J'ai un petit doute: on peut pas comparer en utilisant par exemple:

Code : Tout sélectionner

AND TO_DAYS(registre.Datedebut) > TO_DAYS(01-02-2005)
:?:

Faut que je vérifie dans ma doc, mais les fonction de tri sur les dates sont assez nombreuses, j'arrive à m'y perdre des fois.

[Edit]Ça devrait fonctionner : TO_DAYS retourne un nombre de jour depuis l'année 0.[/Edit]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

11 oct. 2005, 09:08

Je viens de tester vos methode et il n'y a que celle de Cyrano qui ne revoit pas d'érreur .... mais il n'ya tjs pas de valeurs
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

11 oct. 2005, 09:10

Je crois que je sais pourquoi: tu testes avec des dates mal formatées: dans ta base, elles doivent être au format AAAA-mm-jj et tu compares avec jj-mm-AAAA : il n'y a donc aucune correspondance: modifie la date test et reviens nous avec le retour.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

11 oct. 2005, 10:08

que je mette jj-mm-aaaa ou aaaa-mm-jj, ca ne change rien, je n'ai pas de message d'erreur mais aucun tableau ne s'affiche :evil:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

11 oct. 2005, 10:37

BOn, alors il faut que je teste ça en local: tu vas me mettre ici le sql de création des tables nécessaires avec quelques données comme jeu d'essai et une requête à tester. Autrement, je ne vois pas comment faire, je ne vois pas ce que tu fais ni comment tu procède, si j'arrive à sortir un résultat, je devrais arriver à t'expliquer comment faire ensuite.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

11 oct. 2005, 10:58

Points
Champ Type Attributs Null Défaut Extra Action
ID mediumint(4) Non auto_increment
Numdossier text Non
Operations text Non
Zones text Non
Points text Non
Heure datetime Non 0000-00-00 00:00:00



ID Numdossier Operations Zones Points Heure
22 49 8 1 414 2005-02-23 00:00:00
21 49 7 1 276 2005-02-23 00:00:00
13 27 3 3 1 2005-02-15 00:00:00
12 27 1 3 100 2005-02-15 00:00:00
20 49 5 1 90 2005-02-23 00:00:00
10 27 2 2 34 2005-02-14 00:00:00
9 27 3 1 100 2005-02-13 00:00:00
8 27 1 1 2345 2005-02-12 00:00:00
19 49 2 1 1290 2005-02-23 00:00:00
23 45 2 1 765 2005-02-24 00:00:00
24 45 3 1 228 2005-02-24 00:00:00

registre

Champ Type Attributs Null Défaut Extra Action
ID mediumint(4) Non auto_increment
NumDossier varchar(15) Non
NumOT varchar(16) Non
NumPompe varchar(9) Non
Marques text Non
Models text Non
Secteur text Non
Urgence varchar(5) Non 0
Datedebut datetime Non 0000-00-00 00:00:00
Datefin datetime Oui 0000-00-00 00:00:00
Heure varchar(50) Non
Cloture varchar(4) Oui non
Totalpoint text Oui NULL
Avisot text Non
Typefacture text Non



ID NumDossier NumOT NumPompe Marques Models Secteur Urgence Datedebut Datefin Heure Cloture Totalpoint Avisot Typefacture
51 9608/0 15030137126-0010 PE 2466 12 22 43 3 2005-02-25 14:00:00 0000-00-00 00:00:00 2005-02-25 13:58:03 oui NULL 2
21 - num dossier - 0000-00-00 00:00:00 0000-00-00 00:00:00 non
52 9610/0 15030138301-0010 PDCE 0182 8 25 44 2 2005-02-28 16:00:00 0000-00-00 00:00:00 2005-02-28 15:50:34 oui NULL 2
48 9603/0 15030136671-0010 PMP 1483 10 20 51 2 2005-02-23 11:05:00 0000-00-00 00:00:00 2005-02-23 11:01:13 oui NULL 1
49 9558/0 15030131756-0010 PE 2590 6 8 42 2 2005-02-18 15:00:00 0000-00-00 00:00:00 2005-02-23 14:49:28 oui NULL 2
50 9607/0 15030136672-0010 PMP 1455 11 21 51 1 2005-02-24 11:45:00 0000-00-00 00:00:00 2005-02-24 11:43:16 oui NULL 2
45 9601/0 15030136659-0010 PDCE 0631 9 18 51 2 2005-02-22 09:20:00 0000-00-00 00:00:00 2005-02-23 09:16:58 oui NULL 1


Voici la base point et registre. j'ai mis en prmier les carateristisques des champs et ensuites quelques valeures (j'espère que ma mise en page va etre correcte !!!)

merci bcq,
FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)