Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonjour,

J'ai un code php sql qui lit une base de données via odbc, donc provenant d'une base de données d'un autre langage (Windev).

 

Cette base de données contient plusieurs tables de structures identiques, évidemment avec des noms différents. Les noms de ces tables sont variables, concaténés du n° d'id de la table a laquelle elles sont liées.

 

ex : pour 1 table "client" contenant 5 enregistrements, j'ai 5 tables "rdv", c'est a dire une table par client. Le nom des tables "rdv" sont du type : "rdv" conccaténé avec le id de la table client, ce qui donne : rdv1, rdv2, rdv3 rdv4 et rdv5 pour chaque table rdv de mon exemple.

Je souhaiterai savoir si je peux lire ces tables en utilisant le principe des alias de table (ou autre), sachant qu'après moultes essais, je n'y suis toujours pas arrivé.

 

Merci d'avance pour vos réponses

Posté(e)

Pourquoi ne pas avoir fait une seule table rdv avec comme clé étrangère l'id client de la table client ???

 

on perd l'intérêt de la BDD

Posté(e)

Entièrement d'accord avec toi,

 

le problème est que je n'ai pas la main sur cette bdd, elle provient d'un soft développé sous windev...

Malheureusement obligé de faire avec, d'autant que la base de données est en production.

 

Toute suggestion est la bienvenue, merci d'avance...

Posté(e)

Le transport est ODBC, certes, mais la base de données derrière, c'est quoi ? Et en PHP, tu utilises quel driver pour y accéder (ou "quelles fonctions") ?

On pourrait peut-être utiliser des vues, si toutefois le SGBD derrière les supporte...

 

D'un autre côté, si tu n'as vraiment aucun contrôle sur la base de données c'est peine perdue. Tu auras sûrement aussi vite fait de te fabriquer une interface pour traduire de manière transparente tes recherches par id en requêtes adaptées à la structure pour le moins étrange de la base de données...

Posté(e)

Bonjour,

La base de données est une base Hyperfile CLient Serveur Windev. Le driver ODBC est le driver Windev livré avec la licence que m'a fourni le client.

 

Le gros probleme que je rencontre est que je ne peux meme pas lire le contenu des tables dans la mesure ou elles comportent un nom différent de celui de leur structure, ça je sais que c'est possible avec Windev, mais en sql ??? :P

 

Merci pour vos réponses...

Posté(e)

describe <nom_de_la_table>;

 

est une commande SQL permettant de récupérer la structure de la table dont le nom est donné en argument

Posté(e)

bonjour,

 

Pourquoi ne pas créer un curseur dynamique du type :

 

cselect varchar2(1000);

 

cselect := 'select champs_1,champs_2,... from rdv'||id_client||' where ...';

 

où id_client serait remonté par un select précédent.

 

Il sufffira par la suite de faire appel au curseur avec un

EXECUTE IMMEDIATE l_vc_cselect

BULK COLLECT INTO v_champ1,v_champ2,...

Posté(e)

Salut,

je ne connais pas du tout le php mais assez bien le sql, je ne sais donc pas comment l'utilisation du sql en php fonctionne, j'ai lu ton sujet en diagonal, désolé. :P

 

Mais ce dont je parlais c'était, en sql, de :

- Lancer une requête sql pour recupérer l'id_client.

- utiliser une variable texte dans laquelle tu aurais mis ta requête avec une concaténation de ta table rdv avec l'id_client (c'est ce que représentait le 'rdv'||id_client).

- Enfin de lancer ta requête en execution.

 

Ici l'utilisation d'un curseur laisser supposer que tu avais plusieurs valeurs a récupérer du select en question.

 

voila je ne sais pas si cela peut t'aider, surtout sans la partie php. :P

Ju

 

Ps : en regardant rapidement sur le net il semblerait que le php fasse déjà du dynamique puisse que tu crées ta requête dans une variable et que tu l'appelle. Elle serait donc du type : cselect = " select champ_1,... from rdv"&id_client&" where ...".

Mais je m'avance peut être et laisse quiconque de plus compétant dans ce domaine me reprendre le cas echéant.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...