Parcourir Tableau dynamiquement
alex
-
alex -
alex -
Bonjour,
Je me permets de vous demander votre aide pour un projet que j'essais de réaliser dans mon stage,
J'ai en fait un grand tableau de 60 cellulles (départagé en 12 parties) et il faut que chaque cellulle soit généré par des données dans une BDD
Pour moi comme ça c'est invivable 60requetes SQL (ce que souhaite faire mon tuteur) je me pose la question de la performance.
Sachant que dans la table ou on récupere la valeur on a aussi le nom de la colonne et le nom de la ligne, J'ai réfléchis à un autre Algo dites moi ce que vous en pensez, si c'est comme ça qu'il faut faire ? avec quel langage le faire au mieux (JS , php , html ?) et si quelqu'un pouvait me guider car je n'ai jamais fait de web jusqu'a hier ^^ ( je viens du C,C++,VBA)
Mon idée 2 boucles imbriquées
Pour chaque cellulle dans colonne
Pour chaque cellulle dans ligne
Si nom ligne = nom_ligne_dans la BDD && nom colonne = nom de la colonne dans BDD
Copier Valeur
Fin si
Fin pour
Fin pour
Par contre je ne visualise pas comment en profiter pour créer mes TD et TR dynamiquement avec la boucle .
J'espere que j'aurais un peu d'aide :)
Alex
Je me permets de vous demander votre aide pour un projet que j'essais de réaliser dans mon stage,
J'ai en fait un grand tableau de 60 cellulles (départagé en 12 parties) et il faut que chaque cellulle soit généré par des données dans une BDD
<table width="200" border="1"> <tr> <td>select blablablabla</td> <td>select blablablabla</td> <td>select blablablabla</td> <td>select blablablabla</td> <td>select blablablabla</td> </tr>
Pour moi comme ça c'est invivable 60requetes SQL (ce que souhaite faire mon tuteur) je me pose la question de la performance.
Sachant que dans la table ou on récupere la valeur on a aussi le nom de la colonne et le nom de la ligne, J'ai réfléchis à un autre Algo dites moi ce que vous en pensez, si c'est comme ça qu'il faut faire ? avec quel langage le faire au mieux (JS , php , html ?) et si quelqu'un pouvait me guider car je n'ai jamais fait de web jusqu'a hier ^^ ( je viens du C,C++,VBA)
Mon idée 2 boucles imbriquées
Pour chaque cellulle dans colonne
Pour chaque cellulle dans ligne
Si nom ligne = nom_ligne_dans la BDD && nom colonne = nom de la colonne dans BDD
Copier Valeur
Fin si
Fin pour
Fin pour
Par contre je ne visualise pas comment en profiter pour créer mes TD et TR dynamiquement avec la boucle .
J'espere que j'aurais un peu d'aide :)
Alex
A voir également:
- Parcourir Tableau dynamiquement
- Tableau word - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
9 réponses
En php tu peux faire ça normalement sans trop de soucis si j'ai bien compris ton problème.
Avec une boucle While ou un foreach sur ton tableau de résultat de ta requête.
Tu as quoi comme base de données? Mysql?
quand tu dis 60 cellules en 12 parties c'est 12 colonnes ou 12 ligne?
Enjoy!
Avec une boucle While ou un foreach sur ton tableau de résultat de ta requête.
Tu as quoi comme base de données? Mysql?
quand tu dis 60 cellules en 12 parties c'est 12 colonnes ou 12 ligne?
Enjoy!
ah ok, j'avais pas compris qu'il y avait plusieurs tableaux ^^
hum tu as un indicateur pour savoir quand changer de tableau? tu pourrais mettre ici un résultat d'une de tes requêtes histoire que je comprenne bien tout?
hum tu as un indicateur pour savoir quand changer de tableau? tu pourrais mettre ici un résultat d'une de tes requêtes histoire que je comprenne bien tout?
salut,
j'ai toujours pas compris ce que tu veux faire -_-' excuse moi je suis un peu lent du bulbe ^^.
Je comprends pas quand tu dis vérifier si la valeur existe ou pas.
Si elle est dans ta base c'est qu'elle existe non?
j'ai toujours pas compris ce que tu veux faire -_-' excuse moi je suis un peu lent du bulbe ^^.
Je comprends pas quand tu dis vérifier si la valeur existe ou pas.
Si elle est dans ta base c'est qu'elle existe non?
Merci pour ta réponse,
Alors c'est une BDD Oracle,
Et je me suis mal exprimé c'est encore pire car jviens de compter et c'est 12 tableau ( 12 DIV) mais ensuite dans chaque tableau minimum 12*5 cellulle à chaque fois .
Donc la on est d'accord 150 Cellulles je ne ferais pas 150 Select ^^ .
J'aime bien cette méthode , par contre je ne visualise pas comment crée ces TD et TR dynamiquement ( les tableaux ne sont pas les mêmes ... )
Merci en tout cas , et super que tu ai compris mon idée
Alors c'est une BDD Oracle,
Et je me suis mal exprimé c'est encore pire car jviens de compter et c'est 12 tableau ( 12 DIV) mais ensuite dans chaque tableau minimum 12*5 cellulle à chaque fois .
Donc la on est d'accord 150 Cellulles je ne ferais pas 150 Select ^^ .
J'aime bien cette méthode , par contre je ne visualise pas comment crée ces TD et TR dynamiquement ( les tableaux ne sont pas les mêmes ... )
Merci en tout cas , et super que tu ai compris mon idée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Id , numéro d'indice , nom_colomne, nom_row, (et dautre chose inutiles )
où numéro indice = chaque cellulle a un indice pour pointer plus vite (il pensait faire mille requetes ^^)
Le résultat serait apres cette requete :
soit 1,2,3,4,5 et une image, ( chaque chiffre à sa signification)
1 = OK ....
Pour moi L'indicateur serait le groupe a chaque fois :
exemple :
Busines , equipe It , la compta , les Rh
où numéro indice = chaque cellulle a un indice pour pointer plus vite (il pensait faire mille requetes ^^)
Le résultat serait apres cette requete :
soit 1,2,3,4,5 et une image, ( chaque chiffre à sa signification)
1 = OK ....
Pour moi L'indicateur serait le groupe a chaque fois :
exemple :
Busines , equipe It , la compta , les Rh
avant :
"select valeur, numéro d'indice where date"
Maintenant moi je voudrais faire
"Select numéro d'indice,valeur , nom_colomne, nom_ligne"
dans mes boucles je compare avec les nom qu'on a deja dans le tableau par exemple .
Le résultat :
"4","3","business_team","profit and lost"
explication:
l'indice 4 = le numero de la cellule (car cela provient d'un truc en VBA qui génère les données)
3 : correspond à l'information "Pas opérationnel"
"nom_colonne" = le groupe
"nom_ligne" = la spécialisation
"select valeur, numéro d'indice where date"
Maintenant moi je voudrais faire
"Select numéro d'indice,valeur , nom_colomne, nom_ligne"
dans mes boucles je compare avec les nom qu'on a deja dans le tableau par exemple .
Le résultat :
"4","3","business_team","profit and lost"
explication:
l'indice 4 = le numero de la cellule (car cela provient d'un truc en VBA qui génère les données)
3 : correspond à l'information "Pas opérationnel"
"nom_colonne" = le groupe
"nom_ligne" = la spécialisation
<?php $tab1 = "<table>"; $tab2 = "<table>"; $tab3 = "<table>"; $tab4 = "<table>"; $result = // resultat de la requête SQL for($i=0;$i<sizeof($result);$i++) { if($result[$i]['nom_colomne'] == "Business") { $tab1 .= "<tr>"; $tab1 .= "<td>".$result[$i]['numéro d indice']."</td>"; $tab1 .= "<td>".$result[$i]['valeur']."</td>"; $tab1 .= "<td>".$result[$i]['nom_row']."</td>"; $tab1 .= "</tr>"; } else if($result[$i]['nom_colomne'] == " equipe It") { $tab2 .= "<tr>"; $tab2 .= "<td>".$result[$i]['numéro d indice']."</td>"; $tab2 .= "<td>".$result[$i]['valeur']."</td>"; $tab2 .= "<td>".$result[$i]['nom_row']."</td>"; $tab2 .= "</tr>"; } else if($result[$i]['nom_colomne'] == "compta") { $tab3 .= "<tr>"; $tab3 .= "<td>".$result[$i]['numéro d indice']."</td>"; $tab3 .= "<td>".$result[$i]['valeur']."</td>"; $tab3 .= "<td>".$result[$i]['nom_row']."</td>"; $tab3 .= "</tr>"; } else { $tab4 .= "<tr>"; $tab4 .= "<td>".$result[$i]['numéro d indice']."</td>"; $tab4 .= "<td>".$result[$i]['valeur']."</td>"; $tab4 .= "<td>".$result[$i]['nom_row']."</td>"; $tab4 .= "</tr>"; } for($y=0;$y<5;$y++) { echo $tab.$y; echo "</table>"; } } ?>
Eh bah c'est pas si mal que ça , c'est même bien , j'ai changé les if en switch
et ça me fait encore moins de ligne (bon c'etait pas compliqué ce que j'ai fait^^ )
switch :
case 0 : "business"
case 1 : "equipe IT"
case 2
case 3
et le remplissage .
Par contre c'est le contenu qui varit (des cellule où il y a de l'info et d'autres yen a pas ce mois) ... le tableau qu'il faut parcourir pour stocker garde le même nombre de cellule. La par contre il faudra utiliser du JS n'est ce pas ? un truc qui compte les colonnes du type .getElement ou on pourrait faire ça en php ?
et ça me fait encore moins de ligne (bon c'etait pas compliqué ce que j'ai fait^^ )
switch :
case 0 : "business"
case 1 : "equipe IT"
case 2
case 3
et le remplissage .
Par contre c'est le contenu qui varit (des cellule où il y a de l'info et d'autres yen a pas ce mois) ... le tableau qu'il faut parcourir pour stocker garde le même nombre de cellule. La par contre il faudra utiliser du JS n'est ce pas ? un truc qui compte les colonnes du type .getElement ou on pourrait faire ça en php ?
non il faudra le faire en js je pense, par contre je n'ai pas bien compris ton soucis, si tu peux ré-expliquer ^^
Bonjour depuis ^^,
Alors j'ai bien avancé, en fait j'ai choisis de faire un truc de ce type :
Donc une boucle imbriquée dans une autre qui me crée le nombre voulu de colonne et ligne ( le chiffre sera remplacé par un "count($i)" des que la requête sera finalisée .
Maintenant ce que je disais la derniere fois c'est que j'aimerais en créant ma cellule directement chercher si la valeur existe et la coller directement (pour éviter de refaire un "for each" de 150 cellule)
Mais le "in_array" ne me donne rien de bon car il veut que je lui renseigne une valeur de recherche or moi je ne la connais pas d'avance ... je pense devoir faire une 3e boucle ... mais ça fait beaucoup ... :(
Ton avis ?
Merci
Alors j'ai bien avancé, en fait j'ai choisis de faire un truc de ce type :
<?php for ($i = 0; $i <= 3; $i++) { ?> <tr> <?php for ($j = 0; $j <= 7; $j++) { ?> <td> <?php if (in_array($Legende[0],$tableau)){// && in_array($legende[1],$tableau[$i][1])) { ($Legende[0].$tableau[$i][1]); echo"ok"; } ?> </td> <?php } ?> </tr> <?php } ?>
Donc une boucle imbriquée dans une autre qui me crée le nombre voulu de colonne et ligne ( le chiffre sera remplacé par un "count($i)" des que la requête sera finalisée .
Maintenant ce que je disais la derniere fois c'est que j'aimerais en créant ma cellule directement chercher si la valeur existe et la coller directement (pour éviter de refaire un "for each" de 150 cellule)
Mais le "in_array" ne me donne rien de bon car il veut que je lui renseigne une valeur de recherche or moi je ne la connais pas d'avance ... je pense devoir faire une 3e boucle ... mais ça fait beaucoup ... :(
Ton avis ?
Merci
Salut,
Ne te prends pas la tête j'ai trouvé comment faire j'avais un probleme de "casse" la honte :( .
Du coup j'ai fais un truc pas mal
2 boucle imbriqué et un TR et un TD a chaque occurence.
Pour ceux que ça interesse ça permet meme de couper sa cellule en 3 partie
<?php } ?>
N'hésites pas si quelqu'un veut une explication .
Par hasard tu aurais des connaissances en JS ?
Car j'aimerais pour une de mes colonne faire passer une image qui se raffraichit , en faisant sa avec ajax le but est de ne raffraichir que l'icone :) et non toute la template.
je n'arrive pas à le faire transmettre
Ne te prends pas la tête j'ai trouvé comment faire j'avais un probleme de "casse" la honte :( .
Du coup j'ai fais un truc pas mal
2 boucle imbriqué et un TR et un TD a chaque occurence.
Pour ceux que ça interesse ça permet meme de couper sa cellule en 3 partie
<?php for ($i = 1; $i < sizeof($aaaa); $i++){ ?> <tr colspan="3"> <?php for ($j = 0; $j < sizeof($aaaa); $j++){ ?> <td class="left"><div id=<?php echo '"'.$bdd[$i].'_'.$Bdd[$j].'"' ?>></div></td> <td class="center"> </td> <td class="right"> </td> <?php }?> </tr>
<?php } ?>
N'hésites pas si quelqu'un veut une explication .
Par hasard tu aurais des connaissances en JS ?
Car j'aimerais pour une de mes colonne faire passer une image qui se raffraichit , en faisant sa avec ajax le but est de ne raffraichir que l'icone :) et non toute la template.
je n'arrive pas à le faire transmettre
$.ajax({ url: 'index.php?ctl=global&act=accueil', type: 'post', data:'month='+month, dataType: 'json', success: function(data) { for(i=0;i<data.length;i++){ if (data[i][4]== "4"){ Ici j'aimerais mettre l'image qui est dans la colonne 4 a chaque fois du tablea } $("#"+data[i][1]+"_"+data[i][2]).html(data[i][4]); } } }); };
salut,
Tout d'abord content que tu es trouvé une solution à ton soucis.
Pour js oui j'ai quelques connaissances,
il faut que tu utilises le .append() de jquery pour mettre ton image dans la colonne.
Sinon il faut que tu identifies la colonne, ce que tu peux faire c'est mettre à ta colonne un attribut quand tu génères ton tableau
(ce que tu as fais avec ton $("#"+data[i][1]+"_"+data[i][2]) )
il faut que tu utilises la fonction .append()
du style
$("#ma_colonne").append("<img src="...." />");
Tout d'abord content que tu es trouvé une solution à ton soucis.
Pour js oui j'ai quelques connaissances,
il faut que tu utilises le .append() de jquery pour mettre ton image dans la colonne.
Sinon il faut que tu identifies la colonne, ce que tu peux faire c'est mettre à ta colonne un attribut quand tu génères ton tableau
(ce que tu as fais avec ton $("#"+data[i][1]+"_"+data[i][2]) )
il faut que tu utilises la fonction .append()
du style
$("#ma_colonne").append("<img src="...." />");
Ah je me trompe peut être en utilisant L'ajax c'est possible ,
En fait, j'ai un tableau de données et suivant la sélection du mois , licone dans la cellule change de couleur suivant les indicateurs fournis .
et ces icones correspondent à des chiffres (qui sont stocké en Base)
1 sera mon icone rouge
2 mon icone vert
3 mon icone noir
Ces 3 icones sont stockées dans mon projet en format png :)
En fait, j'ai un tableau de données et suivant la sélection du mois , licone dans la cellule change de couleur suivant les indicateurs fournis .
et ces icones correspondent à des chiffres (qui sont stocké en Base)
1 sera mon icone rouge
2 mon icone vert
3 mon icone noir
Ces 3 icones sont stockées dans mon projet en format png :)
prenons mon tableau $query qui contient le résultat d'une requête à ma base.