Login mot de passe
Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd [forum - Accès natifs]

Parcourir ce sujet :   1 Utilisateur(s) anonymes





Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
Régulier
Inscrit:
2017/10/26 21:21
Messages: 34
Hors Ligne
Bonjour tous le monde,

J'aimerai faire l'exemple de LST 93 de windev mobile concernant :

- Remplir le contenu d'une zone répétée a la demande .(30 par 30 lignes)


cette exemple va permettre de résoudre un gros problème de bug d'affichage de dizaines de lignes

sur une zone répétée.


voila le code de LST 93:


// Nombre de "page" de x éléments affichées dans la ZR
gnPageAffichée est un entier = 0

// Nombre d'éléments par page
gnNbElementsParPage est un entier = 30

// Résumé : Affiche plus d'enregistrements dans la ZR
//
PROCEDURE AffichePlusDEnregistrements()

// On supprime d'abord la dernière ligne qui servait à ajouter des enregistrements
SI ZR_Contenu..Occurrence > 0 ALORS
ZoneRépétéeSupprime(ZR_Contenu,ZR_Contenu..Occurrence)
FIN

HLitPremier(Contenu)
// On se positionne sur la bonne page
SI gnPageAffichée > 0 ALORS
HAvance(Contenu,IDContenu,gnNbElementsParPage * gnPageAffichée)
FIN

// On ajoute les occurrences
POUR i = 1 _A_ gnNbElementsParPage
SI PAS HEnDehors(Contenu) ALORS
// On ajoute une ligne
ZoneRépétéeAjouteLigne(ZR_Contenu,Contenu.IDContenu,Contenu.Texte)

// On se positionne sur l'enregistrement suivant
HLitSuivant(Contenu)
SINON
SORTIR
FIN
FIN

// On incrémente la page
gnPageAffichée ++

// Si on n'est pas arrivé à la fin du fichier on ajoute une ligne pour afficher plus d'enregistrements
SI PAS HEnDehors(Contenu) ALORS
ZoneRépétéeAjouteLigne(ZR_Contenu,0,"Afficher plus d'enregistrements...")
FIN



-- ma question est que j'aimerai convertir ce code avec le script php4wd avec une requête Maconnexion:Mysqlexec() et je me suis bloqué sur la fonction HAvance() je ne trouve pas son équivalent sur les fonctions php4wd avec ma requête !

est ce que vous avez une piste a me donné ?

Posté le : 5/19 20:22
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
SQLManagerX Team
Inscrit:
2004/7/1 12:49
De Grenoble (38)
Messages: 2106
Hors Ligne
Bonjour,

variables globales au projet

gnPageAffichée est une entier
gnNbElementsParPage est un entier = 30
// on veut les limit : 0,30 / 31,30 / 62,30 ........


PROCEDURE AffichePlusDEnregistrements
(pPage,nbElement)

ZoneRépétéeSupprimeTout(ZR_Contenu)
V_requete "select * from contenu LIMIT "+((pPage*nbElement)+pPage)+","+nbElement

ZoneRépétéeSupprimeTout
(ZR_contacts)

SI MonAcces:mySQLExec(vrequete,1ALORS
    TANTQUE MonAcces
:mySQLFetch(1)
        
// sur chaque ligne action a faire 
        
vindice ZoneRépétéeAjouteLigne(ZR_contacts)
        
SI vindice>0 ALORS
            ZR_contacts
[vindice].LBL_NOM            MonAcces:mySQLLitColParNom(1,"nom")
            
ZR_contacts[vindice].LBL_PRENOM            MonAcces:mySQLLitColParNom(1,"prenom" )
            
ZR_contacts[vindice].LBL_DATENAISSANCE    MonAcces:mySQLLitColParNom(1,"dateNaissance" )
            
ZR_contacts[vindice].LBL_ADRESSE        MonAcces:mySQLLitColParNom(1,"adresse" )
            
ZR_contacts[vindice].imgClient             ""
        
FIN
    FIN
SINON
    Erreur
(MonAcces:mySQLGetErrorMessage())    
FIN


en fait sous mySQL on a juste a changer la requete
select * from contenu limit 0,30 affiche les 30 premiere ligne ensuite on aura
select * from contenu limit 31,30 affichage des 30 ligne a partir de la 31 ......

donc
un bouton page suivante

gnPageAffichée
++
AffichePlusDEnregistrements(gnPageAffichée,gnNbElementsParPage )


un bouton page precedente

gnPageAffichée
--
si gnPageAffichée 0 alors gnPageAffichée=0
AffichePlusDEnregistrements
(gnPageAffichée,gnNbElementsParPage )


et entree de la fenetre contenant la ZR

gnPageAffichée
=0
gnNbElementsParPage est un entier 
30 
AffichePlusDEnregistrements
(gnPageAffichée,gnNbElementsParPage )

avec ce code on peut chabger le nombre de ligne affichée facilement et le controle de la page se fait par l'autre variable.

donc on garde le code de remplissage de la ZR mais on ajoute juste LIMIT avec les bon chiffre pour faire le changement de page

Posté le : 5/19 21:25
_________________
----------
Firetox
8 rue Georges Méliès
38130 ECHIROLLES
..............................
http://emidev.fr
http://www.teecod.fr/web/Informatique/accueil
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
Régulier
Inscrit:
2017/10/26 21:21
Messages: 34
Hors Ligne
la requête retourne une erreur de syntaxe

j'ai essayer une requête simple pour testé

"SELECT * FROM membres LIMIT 0, 10"

sur la base directement ça donne un résultat

mais si je l'exécute dans windev via Maconnexion:mysqlexec()
ça donne des erreurs de syntaxe et le serveur MariaDB avec Mysql m'invite a utilisé

"SELECT TOP 10 FROM membres."

ce qui ne règle pas le problème

Posté le : 5/20 0:06
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
SQLManagerX Team
Inscrit:
2004/7/1 12:49
De Grenoble (38)
Messages: 2106
Hors Ligne
oui normlale

il faut MariaDB starting with 5.5.21
This LIMIT feature was introduced in MariaDB 5.5.21.

SELECT ... FROM ... WHERE ...
[group_clause] [order_clause]
LIMIT [[offset,] row_count] ROWS EXAMINED rows_limit;

avec cette version cela devrait fonctionné

Posté le : 5/20 0:22
_________________
----------
Firetox
8 rue Georges Méliès
38130 ECHIROLLES
..............................
http://emidev.fr
http://www.teecod.fr/web/Informatique/accueil
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
Régulier
Inscrit:
2017/10/26 21:21
Messages: 34
Hors Ligne
Je travail avec un serveur web et mysql gratuit

www.000webhost.com

la version de mariaDB 10.3.14 :

Serveur : Localhost via UNIX socket
Type de serveur : MariaDB
Connexion au serveur : SSL n'est pas utilisé Documentation
Version du serveur : 10.3.14-MariaDB - MariaDB Server
Version du protocole : 10
Utilisateur : id9595704_admin@2a02:4780:bad:c0de::13
Jeu de caractères du serveur : UTF-8 Unicode (utf8).

Normalement c'est la version avancé

je vais voir les paramètres si je peut revenir a la version 5.5.1

Posté le : 5/20 12:23
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
SQLManagerX Team
Inscrit:
2004/7/1 12:49
De Grenoble (38)
Messages: 2106
Hors Ligne
bonjour,

Essayez la requete

select 
from maTable LIMIT 1,10


au lieu de 0,10
si cela fonctionne alors il faudra juste changer le 0 pour la page qui sera en fait 1

Posté le : 5/20 12:40
_________________
----------
Firetox
8 rue Georges Méliès
38130 ECHIROLLES
..............................
http://emidev.fr
http://www.teecod.fr/web/Informatique/accueil
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
Régulier
Inscrit:
2017/10/26 21:21
Messages: 34
Hors Ligne
j'ai essayer cette requête sur la base il manque la 1er ligne du résultat

et sur windev avec mysqlexec() toujours l'erreur de syntaxe il ne reconnu pas le mot "LIMIT" aparament !!!

Posté le : 5/20 12:55
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
SQLManagerX Team
Inscrit:
2004/7/1 12:49
De Grenoble (38)
Messages: 2106
Hors Ligne
alors il comprend le LIMIT 0,30

il faut tracer la requete qui est envoyée a php4wd car normalement pour type mySQL il ne devrait rien changer

j'ai mis en ligne la version 9.2.0.9 car effectivement pour certaines bases il ne comprenait pas qu'il fallait faire comme mySQL donc j'ai verifié sous mySQL et base compatible la requete n'est pas touchée, par sous SQLServer et Oracle, PosteGreSQL , Firebird il fait une correction qui permet de faire des requete SELECT .... LIMIT comme mySQL

dispo dans lesa cces natifs ou directement ici : http://www.sqlmanagerx.com/download/a ... atifs/php4WDX-9.2.0.9.zip

Posté le : 5/20 13:04
_________________
----------
Firetox
8 rue Georges Méliès
38130 ECHIROLLES
..............................
http://emidev.fr
http://www.teecod.fr/web/Informatique/accueil
Transférer la contribution vers d'autres applications Transférer


Re: Lst 93 remplir zone répétée a la demande (afficher la suite) avec php4wd
Régulier
Inscrit:
2017/10/26 21:21
Messages: 34
Hors Ligne
Bonjour,

Je m'excuse pour le retard a vous répondre.

effectivement le nouveau script php4WDX-9.2.0.9 résoudre le problème de syntaxe des requêtes avec le mot clé "LIMIT".

j'ai fait le test et ça marche

Merci beaucoup

Posté le : 5/21 12:54
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant




[Recherche avancée]