Carte reactive HTML

Résolu/Fermé
chevert35 Messages postés 15 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 22 novembre 2018 - 28 août 2017 à 18:25
chevert35 Messages postés 15 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 22 novembre 2018 - 31 août 2017 à 18:58
Bonjour,
Je fais un programme qui compose et affiche un tableau à 2 dimensions du type $arr[][]. C'est fait.
Mais je voudrais déterminer la suite à donner au programme en fonction du contenu d'une case ou d'une autre de ce tableau. Je pense aux cartes réactives HTML. Mais ces contenus (des nombres) varient à chaque lancement du programme. Aussi, je ne peux les inscrire sur les zones de la carte.
J'ai cherché du côté de JS (onclick), mais je ne suis arrivé à rien, probablement pour la même raison.
Quelqu'un peut-t-il me suggérer une piste à explorer pour arriver à ce que je recherche ?
Merci.


A voir également:

2 réponses

jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
28 août 2017 à 21:16
Bonjour,

Je ne comprend pas trop ta question..... en gros tu voudrais afficher le contenu de l'array dans des éléments html ?
Il te suffit donc de faire une boucle sur ton array...

par exemple :

foreach($arr as $rownum=>$rowdata){
  echo "<div id='".$rownum."'>";
  foreach($rowdata as $colnum => $cel){
    echo "<div id='".$rownum."-".$colnum ."' class='uneclass'>".$cel."</div>";
  }
  echo "</div>";
}


0
chevert35 Messages postés 15 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 22 novembre 2018
29 août 2017 à 10:11
Merci jordane45.
Non, non, mon tableau s'affiche très bien. Ma question (mais est-ce possible ?) : peut-on faire en sorte que ce tableau se comporte comme une carte réactive HTML, c'est à dire qu'en cliquant sur une case, on soit orienté vers une suite du programme, cette suite ne dépendant pas forcément du contenu de la case, mais de la position de la case cliquée.
Exemple : si mon abscisse représente les performances des produits, les ordonnées les prix et chaque case le nombre de produits répondant à ces deux fourchettes performances/prix, je voudrais qu'en cliquant dans cette case, le visiteur affiche la liste et les références des produits de cette case, de cette sélection en quelque sorte...

Encore merci.
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > chevert35 Messages postés 15 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 22 novembre 2018
29 août 2017 à 10:27

je voudrais qu'en cliquant dans cette case, le visiteur affiche la liste et les références des produits de cette case, de cette sélection en quelque sorte...

Tu veux que ça l'affiche où ?
Dans la même page via une modal par exemple ??
Dans ce cas ce n'est que tu html/css & javascript ... nul besoin de php.... ou à la limite ... tu peux faire de l'ajax.



faire en sorte que ce tableau se comporte comme une carte réactive HTML, c'est à dire qu'en cliquant sur une case, on soit orienté vers une suite du programme, cette suite ne dépendant pas forcément du contenu de la case, mais de la position de la case cliquée

Tout dépend comment tu as construit ton tableau. Sachant que tu peux utiliser des balises "data attribute" pour y mettre, par exemple, le numéro de ligne et le numéro de colonne ...
Ces attributs étant ensuite assez facilement récupérables en javascript... et de là... faire un ajax qui ira chercher les données concernées dans ta bdd.


Mais tu comprendras qu'il est difficile de te répondre précisément ... ne sachant rien du code que tu utilises ni même sur quelle partie de ton code tu sembles réellement bloquer.
0
chevert35 Messages postés 15 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 22 novembre 2018 > jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
29 août 2017 à 18:04
A nouveau merci.
Précision (ou correction) : je souhaite qu'en cliquant sur une case, on en sorte son abscisse et son ordonnée. (Je n'ai pas vraiment besoin du nombre affiché dans la case car je peux le retrouver facilement ailleurs). On se servirait de ces deux paramètres pour préciser un lien vers une nouvelle page. La page cible serait toujours la même, mais le traitement qu'elle opérerait dépendrait uniquement des coordonnées de la case choisie.

J'ai construit et affiché le tableau de façon basique en HTML et PHP à partir de données extraites d'une MySQL.

Bien que je ne sois pas bien fort en javascript, je n'ai aucune objection pour poursuivre le code dans ce langage.

Je vais étudier comment on utilise "data attribute" et je reviendrait probablement vers le forum...

cordialement.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
30 août 2017 à 11:10
Salut,

Si tu as déjà les coordonnées pour construire tes liens lors de la génération du tableau html avec php, tu peux simplement ajouter une balise <a> dans tes cellules :
<?php
$data = array(
    array('x' => 'coord0', 'y' => 'coord1', 'content' => 'Contenu 1'),
    array('x' => 'coord2', 'y' => 'coord3', 'content' => 'Contenu 2'),
    array('x' => 'coord4', 'y' => 'coord5', 'content' => 'Contenu 3'),
);

echo '<table>';
foreach($data as $row) : ?>
    <tr>
        <td>
            <a href="nouvellePage.php?x=<?= $row['x'] ?>&y=<?= $row['y'] ?>">
                <?= htmlspecialchars($row['content']) ?>
            </a>
        </td>
    </tr>
<?php 
endforeach;
echo '</table>';


Bonne journée,
0
chevert35 Messages postés 15 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 22 novembre 2018
31 août 2017 à 18:58
Je n'ai pas utilisé ton code, mais j'ai retenu ton idée et ça marche.

Je me suis servi du nombre inscrit dans la case (en principe inerte) et je l'ai placé entre les balises <a href...> et </a> en sorte que le lien transporte les coordonnées de la case vers une nouvelle page, qui effectue la suite du traitement.

merci à tous.

Cordialement
0