Page 1 sur 1

trié les données

Posté : 19 juil. 2016, 18:41
par pipipicontrole
Bonjour,
Je m’appelle souleymane diakité technicien en programmation, en fait j’ai un souci
J’ai 3 tables qui sont :
param_energie_consommation_groupe_releve_valeur_type_agregation
param_energie_consommation_groupe_releve_valeur_type
energie_consommation_groupe_releve.
Dans la table energie_consommation_groupe_releve on a la clé primaire de param_energie_consommation_groupe_releve_valeur_type comme clé étrangère et dans la table param_energie_consommation_groupe_releve_valeur_type on a la clé primaire de param_energie_consommation_groupe_releve_valeur_type_agregation comme clé étrangère.
J’explique mon problème :
J’ai créé une boucle foreach sur la table param_energie_consommation_groupe_releve_valeur_type avec un fieldset et récupéré comme titre du fieldset et valeur du foreach param_energie_consommation_groupe_releve_valeur_type_agregation ce traitement est bon. Dans la table param_energie_consommation_groupe_releve_valeur_type chaque ligne est lier a un et un seul identifiant de la table param_energie_consommation_groupe_releve_valeur_type_agregation ; donc je veux que pour chaque param_energie_consommation_groupe_releve_valeur_type_agregation affichez tous les éléments qui ont le même param_energie_consommation_groupe_releve_valeur_type_agregation dans le même fieldset , pour effectuer ce traitement j’ai refait une boucle foreach (contenue dans la premier boucle) param_energie_consommation_groupe_releve_valeur_type avec un textfield et récupéré comme fieldLabel le champ à afficher ; et c’est là le problème ce traitement me donne tous les champs sans tenir compte de la différence entre les données param_energie_consommation_groupe_releve_valeur_type_agregation
NB : tous ce traitement est effectué dans la table energie_consommation_groupe_releve.
Voici mon code :
,
<?php
//data pour recupéré toute les donnés de param_energie_consommation_groupe_releve_valeur_type avec leurs cles et valeur
foreach ($param_energie_consommation_groupe_releve_valeur_type_data['data'] as $key => $value) {
?>

{
xtype:'fieldset',
title:<?php echo json_encode ($value['param_energie_consommation_groupe_releve_valeur_type_agregation_nom']) ;?>,
margin: '10px 0px 10px 10px',
colspan:2,
layout:{
type : 'table' ,
columns: 1 ,
columnAttrs: {
style: {
width: '50%'
}
}
},
items : [

<?php
//data pour recupéré toute les donnés de param_energie_consommation_groupe_releve_valeur_type avec leurs cles et valeur
foreach ($param_energie_consommation_groupe_releve_valeur_type_data['data'] as $key => $value) {

?>
,
{
xtype:'textfield',
//ici on affiche les valeurs du champ libelle
fieldLabel: <?php echo json_encode ($value['libelle']) ;?>,
labelAlign : 'right',
labelSeparator : '' ,
labelWidth: 120,
anchor:'80%',
msgTarget : 'side',
padding: '15px auto auto 5px',
margin: '0px 0px 5px 5px',

},

<?php
}
?>,
]
} ,



<?php
}
?>
c'est du code javascript dans la quelle je fais des injections PHP.
merci.

Re: trié les données

Posté : 19 juil. 2016, 19:14
par @rthur
Bonjour,

Je te recommande de reformuler ta question en favorisant la lisibilité parce que là ça pique les yeux tout de même...

Re: trié les données

Posté : 20 juil. 2016, 10:29
par pipipicontrole

Code : Tout sélectionner

<?php //data pour recupéré toute les donnés de param_energie_consommation_groupe_releve_valeur_type avec leurs cles et valeur foreach ($param_energie_consommation_groupe_releve_valeur_type_data['data'] as $key => $value) { ?> { xtype:'fieldset', title:<?php echo json_encode ($value['param_energie_consommation_groupe_releve_valeur_type_agregation_nom']) ;?>, margin: '10px 0px 10px 10px', colspan:2, layout:{ type : 'table' , columns: 1 , columnAttrs: { style: { width: '50%' } } }, items : [ <?php //data pour recupéré toute les donnés de param_energie_consommation_groupe_releve_valeur_type avec leurs cles et valeur foreach ($param_energie_consommation_groupe_releve_valeur_type_data['data'] as $key => $value) { ?> , { xtype:'textfield', //ici on affiche les valeurs du champ libelle fieldLabel: <?php echo json_encode ($value['libelle']) ;?>, labelAlign : 'right', labelSeparator : '' , labelWidth: 120, anchor:'80%', msgTarget : 'side', padding: '15px auto auto 5px', margin: '0px 0px 5px 5px', }, <?php } ?>, ] } , <?php } ?>

Re: trié les données

Posté : 20 juil. 2016, 10:53
par moogli
salut,

génère du JS pour un framework (ExtJs à priori) a partir de php O_o
je ne suis aps certain que celà soit meilleur façon de faire.
il faut que tu gères cela dynamiquement en JS.
tu commence par exposer tes données en api rest, ensuite tu créé des store pour récupérer les infos et tu boucles sur les stores pour afficher ce que tu souhaites.

pour le reste il faut que tu recherches les lignes dans le second tableau qui correspondent à au premier.
en clair il faut un if qui compare la PK de la première table avec la FK de chaque élément parcourue pour savoir s'il faut afficher ou pas.

Alors perso je ferais plutôt une jointure dans le select pour avoir le libellé qui va bien dans le select sur la seconde table, tu ordonnes le tout pour avoir à la suite les mêmes libellés. Pour l'affichage une variable temporaire pour stocker le libellé précédent et un if permettant de vérifier si le libellé courant est le même que le précédent. Si ce n'est pas le cas il faut fermer le fieldset courant et en commencer un nouveau.

Je me repete mais cette façon de faire est foireuse il ne faut pas générer les composant ExtJS ainsi il faut le faire en JS à partir de données récupérées sur le serveur.
Tu dois pouvoir tester ton code Js dans un fiddle : https://fiddle.sencha.com/ (avec mock des données sur les stores c'est largement jouable).
La philosophie de sencha c'est du full JS pour le font-end et pas du mélange avec le back (sinon c'est la foire ;) ).

@+

Re: trié les données

Posté : 20 juil. 2016, 12:41
par pipipicontrole
Bonjour,
Je m’appelle souleymane diakité technicien en programmation, en fait j’ai un souci
J’ai 3 tables qui sont :
energie_consommation_groupe_releve
Identifiant : clé primaire
param_energie_consommation_groupe_releve_valeur_type_identifiant : clé étrangère

param_energie_consommation_groupe_releve_valeur_type
Identifiant : clé primaire
Libelle : champ normale
param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant : clé étrangère

param_energie_consommation_groupe_releve_valeur_type_agregation
Identifiant : clé primaire
NB : les tables contienne d’autres champs spécifiques ici l’objective est de vous permettre de comprendre la logique

J’explique mon problème :

J’ai créé une boucle foreach sur la table param_energie_consommation_groupe_releve_valeur_type avec un fieldset et récupéré la valeur du param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant comme titre du fieldset . Ce traitement me répète le nom des fieldset alors que le titre du fieldset doit être unique.

Règle de gestion : Dans la table param_energie_consommation_groupe_releve_valeur_type chaque libelle est lié à un et un seul param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant ; chaque param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant peut-être lié à un ou plusieurs libelles.
Maintenant je voudrais affichez tous les libelle qui ont le même param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant dans le même fieldset ,

Pour effectuer ce traitement j’ai refait une boucle foreach (contenue dans la premier boucle) param_energie_consommation_groupe_releve_valeur_type avec un textfield et récupéré comme fieldLabel le libelle ; ce traitement me donne tous les libellés sans tenir compte de la différence entre les données du champ param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant.
L’objectif est de prendre comme titre du fieldset tous les param_energie_consommation_groupe_releve_valeur_type_agregation_identifiant et d’affichez a l’intérieur du fieldset le champ libelle correspondant de la table param_energie_consommation_groupe_releve_valeur_type

NB : tous ce traitement est effectué dans la table energie_consommation_groupe_releve.

Voici mon code :

Code : Tout sélectionner

<?php //data pour recupéré toute les donnés de param_energie_consommation_groupe_releve_valeur_type avec leurs cles et valeur foreach ($param_energie_consommation_groupe_releve_valeur_type_data['data'] as $key => $value) { ?> { xtype:'fieldset', title:<?php echo json_encode ($value['param_energie_consommation_groupe_releve_valeur_type_agregation_nom']) ;?>, margin: '10px 0px 10px 10px', colspan:2, layout:{ type : 'table' , columns: 1 , columnAttrs: { style: { width: '50%' } } }, items : [ <?php //data pour recupéré toute les donnés de param_energie_consommation_groupe_releve_valeur_type avec leurs cles et valeur foreach ($param_energie_consommation_groupe_releve_valeur_type_data['data'] as $key => $value) { ?> , { xtype:'textfield', //ici on affiche les valeurs du champ libelle fieldLabel: <?php echo json_encode ($value['libelle']) ;?>, labelAlign : 'right', labelSeparator : '' , labelWidth: 120, anchor:'80%', msgTarget : 'side', padding: '15px auto auto 5px', margin: '0px 0px 5px 5px', }, <?php } ?>, ] } , <?php } ?>
C’est du code javascript dans laquelle je fais des injections PHP.
Merci d’avance.
en faite moogli c'est possible que tu me code ce que tu a dit en te référant sur ce que j'ai fais par ce que c'est plus facile pour moi de comprendre les codes merci.

Re: trié les données

Posté : 20 juil. 2016, 12:57
par moogli
C’est du code javascript dans laquelle je fais des injections PHP.
.
ou pas c'est php qui génère du JS et pas l'inverse ça n'aurais aucun sens (le navigateur interprète pas du php.
en faite moogli c'est possible que tu me code ce que tu a dit en te référant sur ce que j'ai fais par ce que c'est plus facile pour moi de comprendre les codes merci.
Non, si tu veux que quelqu'un te le fasse il y a le forum Projets collaboratifs, Entraide.

ajouter un if( codeParent == codeDansEnfant) devrait être relativment simple.

en gros en bouclant sur energie_consommation_groupe_releve il faut que param_energie_consommation_groupe_releve_valeur_type_identifiant correspondent a la clef primaire du parent param_energie_consommation_groupe_releve_valeur_type.Identifiant

je t'invite a éviter ce genre de nom de colonne c'est illisible, opte pour des noms simple et descriptif. il est aussi possible d'ajouter des commentaires sur les tables ou colonne pour apporter des précisions si besoin est.

@+

PS : pas besoin de recoller le message complet à chaque fois :)