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 :

Relations de tables [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maf
    maf est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 76
    Par défaut Relations de tables
    Bonjour,

    Voilà, j'essaie de faire des combinaisons entre tables ... mais je galère et débute en php ... donc merci d'ores et déjà de votre aide.

    J'ai une première table (table 1) qui contient un index (C_index), une valeur (C_1).

    J'ai une autre table (2_d_eval_sous) dans laquelle j'ai des catégories avec des valeurs supérieures et inférieures.

    Exemple :

    Table 1 :

    C_index : 900
    Valeur : 6.8

    Table 2_d_eval_sous

    Categorie : Bon
    Valeur sup : 10
    Valeur inf : 9
    ----------
    Categorie : Peu
    Valeur sup : 8
    Valeur inf : 5

    --> par exemple ici après j'aimerais que cela indique :
    C_index : 900
    Categorie : Peu

    Voilà le code que j'ai fais ... mais qui me génère une erreur de type illegal string offset ...
    Mais m'affiche tout de même tous mes index ... mais à chaque fois avec la valeur Erreur après ...


    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
    <?php 
     include "db.php"; //Fichier de connexion
     $con = new DBConnect(); //Connexion à la bdd
     
     $sql1 = "SELECT * FROM `table1`"; //Sélection de la table et des données
     $sql3 = "SELECT * FROM `2_d_eval_sous`"; //Sélection de la table et des données relatives aux catégories
     $req1 = $con->sendSql($sql1);
     
     while ($don1 = mysql_fetch_assoc($req1))
     {
    $C_index = $don1["C_index"];
     
    if ($sql1["C_1"]<$sql3["Valeur_sup"] && $sql1["C_1"]>=$sql3["Valeur_inf"]){$Categorie = $sql3["Categorie"];} else {$Categorie = "ERREUR";};
     
    ?></br>
    <?php print $C_index;?>
    <?php print $Categorie;?>
    <?php }?>
    Merci d'avance !!!!

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql1 = "SELECT C_index, Categorie FROM `table1`
    JOIN `2_d_eval_sous` ON C_1 BETWEEN Valeur_inf and Valeur_sup";
    Au passage, l'extension mysql_ est obsolète, passe à PDO ou mysqli.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    maf
    maf est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 76
    Par défaut re
    Merci pour les conseils ...

    Mais la chose que je n'ai pas compris c'est que à la base il n'y a pas de colonne catégorie dans la 1ère table ...

    Le but après c'est décrire dans une nouvelle table l'ID et la catégorie assimilée.

  4. #4
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonjour,

    Citation Envoyé par maf
    Mais la chose que je n'ai pas compris c'est que à la base il n'y a pas de colonne catégorie dans la 1ère table ...
    Oui mais tu l'as bien dans la seconde table et puisque tu effectue une jointure (avec le code proposé par sabotage) c'est tout bon

    Je t'invite à te renseigner sur les jointures si tu ne connais pas.

    Citation Envoyé par maf
    Le but après c'est décrire dans une nouvelle table l'ID et la catégorie assimilée.
    Une troisième table qui contient ces informations ?!
    Je t'arrête tout de suite, dans une base de données il ne doit pas y avoir de données redondante.
    L'utilisation de la jointure suffit amplement.

  5. #5
    maf
    maf est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 76
    Par défaut re
    Je crois effectivement que je ne comprends même plus ... les bases ... ...

    Mais lorsque l'on fait cela :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT C_index, Categorie FROM `table1`

    Cela ne signifie t'il pas que C_index et Categorie sont des "colonnes" de la table 1 ?

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Ben si, parce que là, il n'y a pas de jointure.

    Mais si tu ajoutes une jointure entre deux tables, tu peux mettre dans le select n'importe quel champ des 2 tables.

    Un exemple "pédagogique"
    Par exemple ici, tu fais remonter tous les noms des parents, et s'ils en ont, les noms des enfants...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select parent.nom as nom_parent,enfant.nom as nom_enfant
    from parent
    left outer join enfant on enfant.parent_id=parent.id
    Maintenant, si tu veux vraiment que tout ça apparaisse dans un truc intuitif d'emblée joint, tu peux faire une vue, ça ressemble à une table dans ton interface phpmyadmin, mais ça n'est pas une table, juste une requête dynamique présentée comme une table.
    Les tables bien conçues ne doivent pas répéter des informations pour rien (redondance). Mais les vues permettent de mettre tout ça en approche humaine, disons.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    create or replace view vue_famille as
    select parent.nom as nom_parent,enfant.nom as nom_enfant
    from parent
    left outer join enfant on enfant.parent_id=parent.id
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Access me change mes relations entre tables
    Par karimspace dans le forum Access
    Réponses: 14
    Dernier message: 29/03/2006, 09h57
  2. Les relations entre tables
    Par sheira dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 20/03/2006, 15h03
  3. Récupération des relations entre tables
    Par Themacleod1980 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2006, 11h34
  4. relations entre tables
    Par ilyassou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/11/2005, 07h48
  5. access2000, probleme creation relations de tables
    Par nono_60 dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 22h50

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