PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 2024 → Filtre l'affichage d'une Zone Répété
Filtre l'affichage d'une Zone Répété
Started by John2085, Oct., 25 2016 8:33 PM - 4 replies
Registered member
14 messages
Posted on October, 25 2016 - 8:33 PM
Bonjour à tous
Je pense pas en être loin mais je trouve pas ma solution alors voilà.
Je fais un site pour un hôtel je voudrais afficher les chambres libres pour les clients.
Donc j'ai 2 fichiers :
-chambre (avec nom de la chambre ,prix,nombre de lit ,etc)
-réservation ( avec nom de la chambre, dateArrive, dateDepart,etc)
2 page
1 page avec 2 champ de saisi dateArrive et dateDepart, 1 champ saisi pour le nombre de Pers. et un bouton recherche
1 page avec la zone Répétée avec en paramètre pour la page les 2 dates et le nombre de pers(nombre de lit)
J'affiche toutes les chambres dans une zone répété filtre par le nombre de lit (via une requête du fichier chambre)
jusque la tous vas bien :)
C'est la que ça coince je voudrais supprimé les chambres de la zone répété qui se trouve dans le fichier réservation dont les dateArrive et dateDepart qui se trouve dans le fichier réservations
Posted on October, 26 2016 - 9:47 AM
John2085 vient de nous annoncer :
Bonjour à tous Je pense pas en être loin mais je trouve pas ma solution alors
voilà.
Je fais un site pour un hôtel je voudrais afficher les chambres libres pour
les clients.
Donc j'ai 2 fichiers :
-chambre (avec nom de la chambre ,prix,nombre de lit ,etc)
-réservation ( avec nom de la chambre, dateArrive, dateDepart,etc)
2 page 1 page avec 2 champ de saisi dateArrive et dateDepart, 1 champ saisi
pour le nombre de Pers. et un bouton recherche
1 page avec la zone Répétée avec en paramètre pour la page les 2 dates et le
nombre de pers(nombre de lit) J'affiche toutes les chambres dans une zone
répété filtre par le nombre de lit (via une requête du fichier chambre)
jusque la tous vas bien :)
C'est la que ça coince je voudrais supprimé les chambres de la zone répété
qui se trouve dans le fichier réservation dont les dateArrive et dateDepart
qui se trouve dans le fichier réservations


perso j'essaie toujours de remonter ça le plus haut dans le traitement
c'est à dire en SQL

Mais c'est souvent du sql un peu trapu , et donc là ce pourrait être un
not in(select ....)

une autre façon assez performante est le tableau associatif.
Je charge les résultats de ma requête (donc celle des réservations)
dans un tableau associatif et en lisant le détail de ma première
requête, je regarde si je trouve la correspondance dans le tableau
associatif.

Dans ton cas donc, tu charges dans un tableau associatif de chaine
tRESA (pas la mère, le tableau) une requete de tes resa entre les deux
dates
Tu as donc un tableau avec plein de tRESA[idChambre]=datederesa


Tu fais ensuite ta requete sur les chambres. Quand tu lis le détail de
ta requete, tu testes
si tRESA[idChambre]="" alors
// c'est ok, j'ai pas de resa je peux afficher cette chambre
fin
Registered member
14 messages
Posted on October, 27 2016 - 8:16 PM
Merci je vais essayer mais je suis pas vraiment habituer au tableau associatif vous pouvez m'en dire un peu plus svp.
Posted on November, 02 2016 - 3:26 PM
John2085 a pensé très fort :
Merci je vais essayer mais je suis pas vraiment habituer au tableau
associatif vous pouvez m'en dire un peu plus svp.


le tableau associatif permet de gérer un tableau avec deux valeurs,
l'une étant la valeur clé, l'autre la valeur.

En fait cela peut être un peu plus compliqué que cela car la valeur
peut être une structure de données; ce qui ouvre encore plus de
possibilités, mais restons simple.

Prenons l'exemple d'un fichier client où tu aurais ta clé primaire (une
clé technique numérique attribuée automatiquement) et une référence
client propre au client. Supposons que tes client connaissent la
reference mais pas la clé technique. Or ton traitement lui veut
travailler avec la clé primaire. Donc imagine que tu doivent intégrer
un fichier qui ne donne que ces clés internes.

Tu crees un tableau associatif
ID_KEY est un tableau associatif d'entiers

et tu vas charger la correspondance entre clé interne et clé technique.

en gros tu vas avoir un tableau id_key qui sera ainsi
ID_KEY[xb12345]=10001
ID_KEY[xb12989]=10002
ID_KEY[yy788787]=10003
ID_KEY[z12121]=10004
ID_KEY[rr1212121]=10005
.....
en utilisant ID_KEY[xb12345], cela te retournera l'identifiant
technique 10001

Tu vas me dire : pourquoi je ne lis pas ma base avec le code externe
sachant que je dois bien avoir un index (soit par un ordre sql select,
soit par un hlitrecherche) ?

parce que si tu traites un fichier de 10000 lignes, tu vas faire 10000
accès; alors que le tableau associatif, tu le charges au début et tout
est en mémoire.
C'est d'une rapidité fulgurante !

Au moment où je me suis converti à ça, j'ai fait passer des traitements
batchs qui prenaient plus de 20 minutes à moins d'une minute (bien sûr
des traitements qui avaient beaucoup de lignes à traiter et beaucoup de
recherches comme cela)

C'est donc un système indispensable que je t'encourage à utiliser (même
s'il y a plusieurs autres solutions)
Registered member
14 messages
Posted on November, 03 2016 - 11:34 AM
Merci pour tes explications je vais travailler dessus .
En tout cas mon problème est régler merci à tous
:)