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

SQL Oracle Discussion :

[OWA_COOKIE package] Stocker plusieurs valeurs dans un cookie


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut [OWA_COOKIE package] Stocker plusieurs valeurs dans un cookie
    Bonjour,

    Je travaile avec le package OWA_COOKIE pour écrire/lire des cookies de sessions.

    Pour rappel, l'écriture se fait via la procédure owa_cookie.send. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OWA_COOKIE.send('net_name', 'Dupont');
    La lecture, via la fonction owa_cookie.get. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    VL_NETNOM_COOKIE OWA_COOKIE.COOKIE;
    ...
    VL_NETTITRE_COOKIE := OWA_COOKIE.get('net_titre');
    A noter que cette fonction retourne une valeure de type owa_cookie.cookie.

    Regardons de plus près ce type owa_cookie.cookie:
    type cookie is RECORD (
    name varchar2(4000),
    vals vc_arr,
    num_vals integer);
    On note bien que "vals" est un tableau de valeur indexé. Donc on doit pouvoir stocker plusieurs valeur dans un type type owa_cookie.cookie!

    La question est comment? Car on a vu plus haut que owa_cookie.send permettait de créer un coôkie mais avec une seule valeur...

    Bref, une fois que je saurais comment créer un cookie contenant plusieurs valeurs, je pourrai aller les rechercher via la propriété vals(indice) du type owa_cookie.cookie.

    Merci d'avance.


    P.S. A noter que je ne veux pas créer autant de cookies que j'ai de valeurs à stocker car le nombre de cookies par serveurs est limité (par défaut) à 20 sur les navigateur standards.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    J'ai jamais utilisé owa_cookie mais la définition
    Types
    This data type contains cookie name-value pairs. Since the HTTP standard allows cookie names to be overloaded (that is, multiple values can be associated with the same cookie name), there is a PL/SQL RECORD holding all values associated with a given cookie name.

    TYPE vc_arr IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER.

    TYPE COOKIE IS RECORD (
    name VARCHAR2(4000),
    vals vc_arr,
    num_vals INTEGER);
    semble a indiquer qu'on pourrait appeler pleusieurs fois send avec des valeurs différentes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /*
    || FALSE value in mime_header keeps the header open 
    || so we can insert the cookie into the header section
    */
    OWA_UTIL.mime_header ('text/html', FALSE);
    OWA_COOKIE.send ('city', 'BOSTON');
    OWA_COOKIE.send ('city', 'CHICAGO');
    OWA_COOKIE.send ('city', 'NEW YORK');
    OWA_UTIL.http_header_close;  -- Now close the header
    HTP.print ('<html>');
    comme indique ici

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut
    Merci.

    Selon mes premiers tests, la valeur est écrasé (je n'ai que 'NEW YORK' dans mon cookie 'city')...

    ja'i dans une procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    OWA_UTIL.mime_header ('text/html', FALSE);
    OWA_COOKIE.send ('city', 'BOSTON');
    OWA_COOKIE.send ('city', 'CHICAGO');
    OWA_COOKIE.send ('city', 'NEW YORK');
    OWA_UTIL.http_header_close;  -- Now close the header
    ...
    et dans l'autre:
    Code : 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
    19
     
    target_cookie OWA_COOKIE.COOKIE;
    BEGIN
        ...
        target_cookie := OWA_COOKIE.get ('city');
       -- Print message if the cookie was not found
       IF target_cookie.num_vals = 0
       THEN
          HTP.print ('<h1>Cookie not found!</h1>');
       ELSE
          HTP.print ('<h1>Values for cookie ' ||
                     'city' ||
                     '</h1><hr>');
          FOR i IN 1 .. target_cookie.num_vals
          LOOP
             HTP.print (target_cookie.vals (i) || '<p>');
          END LOOP;
       END IF;
       ...
    et à l'affichage:

    Values for cookie city
    -----
    NEW YORK
    Grrrrrrr... ça m'énerve... je pars en week-end prolongé maintenant avec ce problème en tête... suite de l'épisode lundi.

    Merci si qqun trouve pourquoi ça ne fonctionne pas.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut
    Décidément, le problème persiste. Je confirme que les valeurs sont écrsée ! C'est vraiement bizarre car selon la doc mise en lien par mnitu (Oracle Web Applications, Chapter 7), l'exemple de la création du cookie 'city' avec plusieurs valeure devrait fonctionner. Mais ce n'est pas le cas chez moi. Voici mon package de test:
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    PACKAGE BODY PACKTESTNP
    IS
       PROCEDURE TESTSENDCOOKIE
        IS
       BEGIN 
           OWA_UTIL.mime_header ('text/html', FALSE);
           OWA_COOKIE.send ('city', 'BOSTON');
           OWA_COOKIE.send ('city', 'CHICAGO');
           OWA_COOKIE.send ('city', 'NEW YORK');
           OWA_UTIL.http_header_close;  -- Now close the header
           HTP.print ('<html>');
           HTP.print ('<head>');
           HTP.print ('<title>TESTSENDCOOKIE</title>');
           HTP.print ('</head>');
           HTP.print ('<body>');
           HTP.print ('TESTSENDCOOKIE');
           HTP.print ('</body>');
           HTP.print ('</html>');    
       END;
     
       PROCEDURE TESTREADCOOKIE
        IS
            target_cookie OWA_COOKIE.cookie;
        BEGIN
            target_cookie := OWA_COOKIE.get ('city');
            -- Print message if the cookie was not found
            IF target_cookie.num_vals = 0
            THEN
                HTP.print ('<h1>Cookie not found!</h1>');
            ELSE
                HTP.print ('<h1>Values for cookie city</h1><hr>');
                HTP.print('Nombre de valeures dans le cookie: '|| target_cookie.num_vals ||':<br>');
                FOR i IN 1 .. target_cookie.num_vals
                LOOP
                    HTP.print (target_cookie.vals (i) || '<p>');
                END LOOP;
            END IF;
        END;
     
    END;
    Pour le test via mon navigateur:
    je lance la procédure d'écriture du cookie:
    http://monserveroas.ch/mondad/PACKTESTNP.TESTSENDCOOKIE
    je lance la procédure de lecture du cookie:
    http://monserveroas.ch/mondad/PACKTESTNP.TESTREADCOOKIE
    Et je constate que mon cookie ne contient qu'une seule misérable valeure:
    Values for cookie city
    --------------------------------------
    Nombre de valeures dans le cookie: 1:
    NEW YORK
    HELP !

Discussions similaires

  1. Stocker plusieurs valeurs dans une seule colonne
    Par pitav dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2014, 18h46
  2. Stocker plusieurs valeurs dans une variable Session
    Par PrinceMaster77 dans le forum Langage
    Réponses: 3
    Dernier message: 05/01/2010, 12h04
  3. Réponses: 10
    Dernier message: 03/07/2006, 15h55
  4. Réponses: 4
    Dernier message: 19/05/2006, 11h26
  5. Plusieurs valeurs dans un value
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2004, 11h58

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