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

PHP & Base de données Discussion :

Pb Oracle CLOB vide


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Pb Oracle CLOB vide
    Bonjour,

    Je suis sous WAMP 2 avec Oracle XE sous XP SP3.
    J'ai du réinstallé mon systeme et depuis j'ai un problème avec les champs de type CLOB.

    Quand je récupère mes champs, je leur applique un html_entity_decode.
    Ca marche très bien, quand mes champs CLOB sont remplis, mais si ils sont vide, il me renvoi: Warning: html_entity_decode() expects parameter 1 to be string.

    Comprend pas pourquoi ca marchait bien avant ???

    Merci pour votre aide

    Marco

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    fait un var_dump() de ta variable pour voir ce qu'elle vaut exactement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Elle vaut: resource(20) of type (stream)

    J'ai avancé dans les recherches et j'ai ajouté ce test:

    if(!is_resource($value)) { $my_value = html_entity_decode($value); } else { $my_value = $value; }

    Ca semble pas mal marcher..sauf que j'ai l'impression que maintenant c'est le contraite, ca plante quand le CLOB est rempli.

    Et puis, j'ai un truc bizarre, au bout d'un certain temps (ou click ??), l'application se bloque...Et à chaque fois, c'est quand j'accède à des rubriques qui vont chercher des CLOB...

    Comprend rien...mais je continue de creuser

    Merci pour ton aide

    Marco

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 893
    Points
    1 893
    Par défaut
    Citation Envoyé par marcoxx Voir le message
    Elle vaut: resource(20) of type (stream)
    ça veut dire que tu n'obtiens pas directement le contenu de la colonne "CLOB". tu obtiens une ressource et tu dois donc extraire la chaine de caractère de cette ressource avant de l'utiliser

    regarde cette page par exemple :
    http://php.net/oci-lob-load
    GNAP !

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Merci pour ton aide..

    Ca me parait bien compliqué cette fonction load().
    Je n'ai pas l'habitude de travailler avec Oracle et j'avoue ne rien comprendre aux exemples fournis dans ton lien.

    Je vais demander de l'aide au DBA de mon client..

    Pour l'instant, j'ai trouvé cette solution qui semble marcher..Sauf que ca semble bloque mon application..mais je suis pas sur que ca vienne de se problème..galère galère.

    Voici la solution que j'ai trouvé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($v = @stream_get_contents($value))
        $my_value = html_entity_decode($v);
    else
        if(!is_resource($value)) { $my_value = html_entity_decode($value); } else {  $my_value = $value; }
    Encore merci...

    Marco

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    J'ai réussi à trouver d'ou venait exactement le problème..pas trouver pourquoi, mais je suis déjà bien content !!

    En fait, un simple Select fonctionne très bien.
    Par contre, j'utilise dans certains cas, une requete plus complexe pour afficher qu'un certains nombre d'enregistrement (le LIMIT de MySQL).

    En cherchant sur le net..j'avais trouvé une solution qui marchait très bien avant la réinstallation de mon systeme.

    Voila l'instruction qui me pose problème:
    SELECT * FROM ( SELECT ROWNUM AS rn, ma_table.* FROM ( SELECT categorie, id,titre FROM ma_table WHERE categorie = 'une_categorie' ORDER BY id ASC ) ma_table) WHERE rn >0 AND rn <=20

    Ca me permet de sélectionner qu'un certains nombre d'enregistrement (dans cet exemple du 0 au 20).
    Dans cet exemple qui marche, j'indique les champs que je veux récupérer (categorie, id, titre).
    Avant, j'utilisais * , et j'avais un autre champs qui était un CLOB..et ca plantait grave..
    Maintenant ca marche bien.

    Merci à tous

    Marco

Discussions similaires

  1. Vue Oracle champ vide
    Par bernards111 dans le forum Débuter
    Réponses: 2
    Dernier message: 12/07/2013, 15h30
  2. Mysql->Oracle - Chaine vide et valeurs nulle
    Par spidetra dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 06/09/2009, 17h41
  3. Réponses: 8
    Dernier message: 30/08/2007, 13h15
  4. [Oracle] Oracle, Clob, procédures stockées, OCI_bind_by_name...
    Par nguthans dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/03/2006, 11h20
  5. Réponses: 12
    Dernier message: 27/08/2003, 12h04

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