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 :

Problème sous requete


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Problème sous requete
    Bonjour,

    J'ai une requete qui fonctionne et une fonction qui affiche les données comme ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* Requete sur table mec */
      $req = "SELECT * FROM mec WHERE ".$mec_fields[$param['COL_REF']]."=".$_GET['ref'].";";
     
      $result = mysql_query($req);
     
      $enregistrement = mysql_fetch_array($result);
     
     
      list_data_mec($mec_cols,$enregistrement);
    J'ai donc le résultat comme ceci à l'écran :
    id_mec information_mec id_serv id_ide id_cel id_inf
    1 carte bleue 3 1 2 8

    Donc je souhaiterais faire une deuxieme requete en fonction de la premiere,
    donc j'ai modifie comme ceci mais cela ne fonctionne pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /* Requete sur table mec */
      $req = "SELECT * FROM mec WHERE ".$mec_fields[$param['COL_REF']]."=".$_GET['ref'].";";
      $result = mysql_query($req);
      $enre = mysql_fetch_array($result);
      $sql = "select * from '.$enre.', serv, ide, cel, inf where id_serv.mec = id_ser.serv and
    id_ide.mec = id_ide.ide and id_cel.mec = id_cel.cel and id_inf.mec = id_inf.inf";
      $result2 = mysql_query($sql);
      $enregistrement = mysql_fetch_array($result2);
     
     
     
      list_data_mec($mecombine_cols,$enregistrement);
    Merci pour les éventuelles solutions !

  2. #2
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    Citation Envoyé par dorian67
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $enre = mysql_fetch_array($result);
      $sql = "select * from '.$enre.', serv, ide, cel, inf where id_serv.mec = id_ser.serv and
    id_ide.mec = id_ide.ide and id_cel.mec = id_cel.cel and id_inf.mec = id_inf.inf";
      $result2 = mysql_query($sql);
    tu veux le nom de ta table en fonction de la 1ère requête =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $maTable = $enre['monChampQuiDonneLaTable'];
    select * from `$maTable`

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci pour cet élément de réponse, j'ai donc fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* Requete sur table mec */
      $req = "SELECT * FROM mec WHERE ".$mec_fields[$param['COL_REF']]."=".$_GET['ref'].";";
      $result = mysql_query($req);
      $mec = $result['id_mec'];
      $sql = "select * from '.$mec.', serv, ide, cel, inf where id_serv.mec = id_ser.serv and
    id_ide.mec = id_ide.ide and id_cel.mec = id_cel.cel and id_inf.mec = id_inf.inf";
      $result2 = mysql_query($sql);
      $enregistrement = mysql_fetch_array($result2);
    voici l'erreur:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result

    ai-je mal fait ?

  4. #4
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    t'as fait la moitié de ce que je te proposais

    relis comment j'ai écrit le début de la requête : select * from `$mec` et pas '.$mec.'

    les apostrophes (touche 4 du clavier) c'est pour délimiter des valeurs
    pour les champs ou les tables, soit tu mets rien soit tu mets les machins de la touche 7

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    j'ai fait comme écrit mais toujours une erreur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $req = "SELECT * FROM mec WHERE ".$mec_fields[$param['COL_REF']]."=".$_GET['ref'].";";
      $result = mysql_query($req);
      $mec = $result['id_mec'];
      $sql = "select * from `$mec`";
      $result2 = mysql_query($sql);
      $enregistrement = mysql_fetch_array($result2);
    monChampQuiDonneLaTable = cle primaire de la table (mec)?

  6. #6
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    nan mais fallait pas supprimer toute ta requête ! j't'avais juste réécrit le début c'tout

    bon, allez, on la refait du début..........

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = 'SELECT * FROM `mec` WHERE `' . mysql_real_escape_string($mec_fields[($param['COL_REF'])]) . "`='" . mysql_real_escape_string($_GET['ref']) . "'";
    $result = mysql_query($req) or exit('<br/>Erreur de requête : ' . mysql_error() . '<br />Requête demandée : ' . $req);
    $mec = $result['id_mec'];
    $req2 = "SELECT * FROM `$mec`, serv, ide, cel, inf WHERE id_serv.mec = id_ser.serv and id_ide.mec = id_ide.ide and id_cel.mec = id_cel.cel and id_inf.mec = id_inf.inf";
    $result2 = mysql_query($req2) or exit('<br/>Erreur de requête : ' . mysql_error() . '<br />Requête demandée : ' . $req2);
    $enregistrement = mysql_fetch_array($result2);
    $mec pour toi c'est le nom d'une table vu où tu le places dans ta requête
    donc débrouilles toi pour que dans la première requête, tu récupères le champ contenant le nom de la table sur laquelle porte la 2ème requête

    en passant, $mec tu le mets dans la liste des tables mais tu donnes pas de condition sur ses champs donc ça sert à que dalle

    moi j'regarde juste si la syntaxe de ton code est bonne, après, j'connais pas ta BD ni l'utilisation que tu veux en faire, c'est à toi de vérifier ça

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Ok merci pour ces réponses je vais revoir ca, c'est bien la différence entre celui qui maitrise et l'autre non !

Discussions similaires

  1. [MySQL] Problème sous requete
    Par hichamdeb dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 23/08/2010, 17h18
  2. problème update avec sous requetes
    Par stoz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 16h44
  3. Problème de perfs Sous requetes IN
    Par ias83 dans le forum SQL
    Réponses: 4
    Dernier message: 15/06/2005, 12h39
  4. Problème de sous-requete.
    Par Oberown dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 16h44
  5. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36

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