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 :

Comment récuperer la valeur d'un champs d'une table jointe (JOIN) [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut Comment récuperer la valeur d'un champs d'une table jointe (JOIN)
    Bonjour à tous,

    Je suis complètement largué sur ce point et je ne vois absolument pas comment faire.
    Je vais essayé d'être plus précis possible,

    J'ai plusieurs tables dont voici celle qui intéresse cette problématique:

    Nom : color.png
Affichages : 654
Taille : 284,7 Ko

    Celles qui nous intéresses se sont les tables
    sensors
    chart_backgroundColor
    chart_borderColor
    colors
    Je fais actuellement cette jointures, ou on va dire, des jointures, et ca marche très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $sql_select = 'SELECT se.sensor_longname, se.chart_pointStyle_id_chart_pointStyle, se.chart_pointRadius, se.chart_fill, se.chart_showLine, se.chart_borderWidth, se.chart_pointHoverRadius, se.id_sensor, fi.field_name, st.station_name, st.station_longname, sfam.sensor_family_name, stype.measure_unit, stype.id_sensor_type, m.value, c.id_collection,c.ttn_m_time FROM fields AS fi 
    	INNER JOIN stations AS st ON fi.id_field = st.fields_id_field
    	INNER JOIN sensors AS se ON st.id_station = se.stations_id_station
    	INNER JOIN sensor_types AS stype ON se.sensor_types_id_sensor_type = stype.id_sensor_type
    	INNER JOIN sensor_families AS sfam ON stype.sensor_families_id_sensor_family = sfam.id_sensor_family
    	INNER JOIN measures AS m ON se.id_sensor = m.sensors_id_sensor
    	INNER JOIN collections AS c ON m.collections_id_collection = c.id_collection
    	WHERE st.station_name = "st-'.$station.'" AND se.sensor_active = 1
    	'.$clauseAND.'	
    	'.$clauseAND2.'
    	ORDER BY c.ttn_m_time, c.id_collection , se.id_sensor ASC';
     
    	$sql_result = $connect->query($sql_select);
    et plus bas, je récupère les valeurs
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    $color=array(
    		'255, 99, 132', //red.
    		'255, 159, 64',	//orange.
    		'255, 205, 86',	//yellow.
    		'75, 192, 192',	// green
    		'54, 162, 235',	//blue.
    		'153, 102, 255',//purple.
    		'201, 203, 207', //grey.
    		'15, 37, 172', 	//darkBlue
    		'15, 109, 169',	//lightblue
    		'103, 22, 9',	//darkred
    		'251, 49, 22',	//lightred
    		'13, 45, 4', 	//darkgreen
    		'15, 37, 172',	//darkgreen
    		'45, 188, 16', 	//lightgreen
    		'20, 237, 133' //light2green
    	);
    while($row = $sql_result->fetch_assoc())
    			{
     
     
     
    				/*
    				foreach($row as $r => $rr){
    					echo $row['id_sensor']."=> ".$r.": ".$rr."<br>";
    				}
     
    				$j++;
    				*/
     
     
    				$data[$row['id_sensor']]['unit'] = $row['measure_unit'];
    				//$data[$row['id_sensor_type']]['name'] = $row['sensor_type_name'];
    				$data[$row['id_sensor']]['station'] = $row['station_longname']." [".$row['station_name']."]";
    				$data[$row['id_sensor']]['time'][] = $row['ttn_m_time'];
    				//$data[$row['id_collection']][$row['id_sensor_type']]['collection_id'][] = $row['id_collection'];
    				$data[$row['id_sensor']]['datasets']['label'] = $row['sensor_longname']." [".$row['measure_unit']."]";
    				$data[$row['id_sensor']]['datasets']['fill'] = $row['chart_fill'];
    				$data[$row['id_sensor']]['datasets']['data'][] = $row['value'];
    				$data[$row['id_sensor']]['datasets']['type'] = "line";
    				$data[$row['id_sensor']]['datasets']['borderWidth'] = $row['chart_borderWidth'];
    				$data[$row['id_sensor']]['datasets']['pointRadius'] = $row['chart_pointRadius'];
    				$data[$row['id_sensor']]['datasets']['pointHoverRadius'] = $row['chart_pointHoverRadius'];
     
    				//$data[$row['id_sensor']]['datasets']['pointStyle'] = $row['chart_pointStyle_id_chart_pointStyle'];
    				$data[$row['id_sensor']]['datasets']['pointStyle'] = "rectRot";
    				$data[$row['id_sensor']]['datasets']['showLine'] = $row['chart_showLine'];
    				//$data[$row['id_sensor_type']]['datasets']['borderColor'] = $color[$row['id_sensor_type']];
    				$data[$row['id_sensor']]['datasets']['borderColor'] = 'rgba('.$color[$row['id_sensor']].', 1)';
    				//$data[$row['id_sensor_type']]['datasets']['backgroundColor'] = $color[$row['id_sensor_type']];
    				$data[$row['id_sensor']]['datasets']['backgroundColor'] = 'rgba('.$color[$row['id_sensor']].', 1)';
    			} // End while
    Jusqu'à là tout fonction bien car les valeurs des couleurs sont "prises" dans l'array $color. Ca fonction jusqu'à ce que je découvre qu'en réalité les valeurs de couleurs ne sont pas "prises" depuis la DB, mais depuis un array "bébile". Évidemment, il n'y a pas de sense de garder cette array $color, puisque j'utilise une base de données où sont informés les couleurs, dans la tables sensors.

    En d'autres mots, la tables 'sensors' contient des informations sur des capteurs, dont la couleur de fond et du bord, qui varie pour chaque capteurs.

    Ce que je ne sais pas faire, est comment ajouter une nouvelles jointures de sensors à colors

    Jursqu'à maintenant, j'ai fais des jointures d'une table à une autre, mais la, je dois faire une jointures de sensors en passant par chart_backgroundColor et/ou char_borderColor pour récupérer la valeur du champ color_value de la table colors.

    En fait, je devrais ajouter deux jointures????
    Une de sensors à chart_backgroundColor
    et une autre de sensors $ chart_borderColor?
    et après, de ces deux dernières table à colors???

    Avez-vous besoin de plus de précisions?
    Merci beaucoup pour vos lumières!!!!

  2. #2
    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
    Salut.
    Teste ceci dans ton phpmyadmin

    Code SQL : 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
    SELECT se.sensor_longname, se.chart_pointStyle_id_chart_pointStyle, se.chart_pointRadius, se.chart_fill, se.chart_showLine, se.chart_borderWidth, se.chart_pointHoverRadius, se.id_sensor, 
    fi.field_name, 
    st.station_name, st.station_longname, 
    sfam.sensor_family_name, 
    stype.measure_unit, stype.id_sensor_type, 
    m.value, 
    c.id_collection,c.ttn_m_time,
    col_bg.color_name as bg_color,col_bg.color_value as bg_color_value,
    col_bd.color_name as bd_color,col_bd.color_value as bd_color_value
    FROM fields AS fi 
    INNER JOIN stations AS st ON fi.id_field = st.fields_id_field
    INNER JOIN sensors AS se ON st.id_station = se.stations_id_station
    INNER JOIN sensor_types AS stype ON se.sensor_types_id_sensor_type = stype.id_sensor_type
    INNER JOIN sensor_families AS sfam ON stype.sensor_families_id_sensor_family = sfam.id_sensor_family
    INNER JOIN measures AS m ON se.id_sensor = m.sensors_id_sensor
    INNER JOIN collections AS c ON m.collections_id_collection = c.id_collection
    INNER JOIN chart_backgroundColor cbgc on cbgc.id_chart_backgroundColor=se.chart_backgroundColor_id_chart_backgroundColor
    INNER JOIN colors col_bg on cbgc.colors_id_colors=col_bg.id_colors
    INNER JOIN chart_borderColor cbdc on cbdc.id_chart_borderColor=se.chart_borderColor_id_chart_borderColor
    INNER JOIN colors col_bd on cbdc.colors_id_colors=col_bd.id_colors
     
    ORDER BY c.ttn_m_time, c.id_collection , se.id_sensor ASC
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    Ouha, je suis impressionné!
    Mais c'est un gros changement de ma reqete.

    J'ai collé le code dans mon phpadmin et j'ai un résultat très intéressant. Va falloir que j'étudie tout ca demain, et voir comment adapter mon code initial.

    Merci, je te tiens au courrant

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    Salut Dentrite

    Merci beaucoup, ca marche bien maintenant!!!
    Et tu m'as bien aidé!!

    Merci!

    Bonne soirée

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

Discussions similaires

  1. Comment récupérer la valeur d'un champ d'une fenêtre modale
    Par lodan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2011, 18h02
  2. Réponses: 1
    Dernier message: 31/08/2009, 22h48
  3. Comment récuperer la valeur d'un champ select ?
    Par krikete13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/05/2007, 00h29
  4. Réponses: 7
    Dernier message: 06/07/2006, 15h32
  5. Réponses: 1
    Dernier message: 19/03/2006, 20h52

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