IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Script PhP sur AS400


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Script PhP sur AS400
    Bonjour,

    Je viens à vous aujourd'hui car malgrés plusieurs jours de recherche, je suis toujours bloqué au même point.

    La situation est a suivante :

    Je suis actuellement en stage au sein d'une mutuelle qui utilise différents serveurs, ainsi qu'un AS400.
    Je dois réaliser une application intranet qui a pour but de modifier les données présentes dans ce fameux AS.

    Mon problème :

    Par le biais d'une liste déroulante, l'utilisateur sélectionne un code traitement (CODTRT) ainsi qu'une date au format SSAAMMJJ (DATE).
    Une fois le formulaire envoyé, je récupère sur la page suivante les informations en sachant que les informations sont issues de la table YREFERENHD et YJOURS1HD.
    Sur cette page, je dois réaliser une boucle (ou autre chose, mais l'idée de la boucle me paraît la plus appropriée) afin de ne choisir dans les deux tables, que les résultats correspondants au CODTRT précédemment choisis, à une DATE strictement supérieur à la date choisis. Jusque la, tout va bien.

    Et c'est ici que ça se complique. En effet, un CODTRT possède plusieurs numéro d'ordre (NUORDR). Cela fonctionne sous forme de chaîne.
    Par exemple, un CODTRT peut commencer le 20140314 avec un NUORDR à 05 pour finir le 20140316 avec un NUORDR à 99.
    Le NUORDR commence toujours à 05, mais on ne sait jamais jusqu'a combien il monte. Le maximum possible étant 99.

    Donc le CODTRT possède un NUORDR allant de 05 à 99, une fois le dernier NUORDR atteint, la chaîne recommence, donc de 05 à 99 etc etc

    Voilà la véritable source du problème :

    Je dois effectuer une requête SQL dans les tables YREFERENHD et YJOURS1HD en prennant soin de n'afficher que les résultats correspondants au CODTRT choisis, strictement supérieurs à la date choisis et ayant un NUORDR de 05 à 99 (Il me faut seulement la première chaine.)


    Pour être plus claire et que cela soit plus compréhensible, en algorithmique, cela donnerait quelque chose du genre :

    SI CODTRT Choisis = CODTRT dans la BDD ET que DATE choisis > DATE dans la BDD
    LIRE LA BDD
    SI NUORDR suivant EST INFERIEUR au NUORDR actuel
    STOP.
    AFFICHE RESULTAT.

    Voilà, je ne suis pas réellement un expert du PhP, et encore moins de l'AS.
    Mais pour le coup, je ne sais vraiment pas comment faire.
    Tout en sachant que pour accèder à l'AS400 via PhP/SQL, il faut impérativement utiliser les pilotes ODBC.

    Vous en remerciant d'avance
    Cordialement.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Toujours pas de réponses...

    J'ai trouvé une piste du côté des CURSEURS en SQL.
    Malgrés ça, un petit problème persiste.

    Voilà mon code :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    DECLARE v_codtrt, v_date, v_nuordr VARCHAR(20);
    DECLARE fin INT DEFAULT 0;
    DECLARE i INT DEFAULT 0;
    DECLARE curs_nuordr CURSOR
    FOR SELECT IMNORD10F.YJOURS1HD.CODTRT, IMNORD10F.YJOURS1HD.DATE, IMNORD10F.YJOURS1HD.NUORDR
        FROM IMNORD10F.YJOURS1HD
        WHERE IMNORD10F.YJOURS1HD.CODTRT = '".$jobrecup."'
        AND IMNORD10F.YJOURS1HD.DATE > '".$daterecup."';
       DECLARE CONTINUE HANDLER FOR NOT FOUND SET fin = 99;
       OPEN curs_nuordr;
       loop_curseur LOOP
           FETCH curs_nuordr INTO v_codtrt, v_date, v_nuordr;
           IF v_nuordr > v_nuordr+1 THEN
               LEAVE loop_curseur;
           END IF;
       SELECT CONCAT(v_codtrt,' ',v_date,' ',v_nuordr) AS 'JOB';
    END LOOP;
    CLOSE curs_nuordr;

    Le problème se situe sur cette ligne : IF v_nuordr > v_nuordr+1 THEN

    Comment faire pour traduire ça, car je ne pense pas que cela fonctionne si facilement.
    En gros, comment faire pour dire " SI v_nuordr EST SUPÉRIEUR au v_nuordr SUIVANT ALORS...."

    Merci d'avance.
    Cordialement.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/05/2012, 17h24
  2. [Forum] Script php sur un serveur irc
    Par Patrice331 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 03/06/2008, 00h24
  3. Réponses: 0
    Dernier message: 27/11/2007, 14h37
  4. Réponses: 3
    Dernier message: 26/02/2007, 19h19
  5. [Serveur] executer script php sur red hat
    Par jj del amorozo dans le forum Apache
    Réponses: 6
    Dernier message: 08/02/2006, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo