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

JavaScript Discussion :

Fusion de deux tableaux


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut Fusion de deux tableaux
    Bonjour à tous,

    j'ai un petit problème en PHP/HTML que je ne vois pas comment résoudre... Voilà le principe :

    Je possède une requête SQL qui s'exécute et s'affiche à l'écran sous forme de tableau!
    Le total des résultats est divisé en <div id=$i></div> contenant chacun un tableau de 100 résultats (donc pour une requête me retournant 1000 lignes, j'aurais 10 tableaux de 100 lignes). Le principe est d'afficher ces tableaux un par un en cliquant sur le bouton associé (si on clique sur "page 2", ça nous affiche le tableau du <div id="2"> à l'écran).

    Le soucis c'est que le premier tableau qui s'affiche contient les entêtes de colonne des résultats, mais lorsque je clique sur les bouton "pageX", cela m'affiche les 100 résultats suivants, mais sans les entêtes!

    Je récupère donc les entêtes dans un tableau, et je voudrais faire quelque chose de la sorte :

    "quand on clique sur le bouton 2 (par exemple) ==> afichage du tableau d'entêtes, suivi du tableau de résultats".

    Le problème est que les entêtes ne sont pas fusionnées avec les résultats.. (donc parfois les entêtes sont en décalage avec les résultats, ce qui n'est pas pratique..). Je connais "rowspan", mais ça c'est dans 1 tableau.. Là j'ai 2 tableaux bien distincts.. Comment les fusionner?

    J'espère que vous m'avez compris, merci beaucoup de m'avoir lu et de m'aider

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    bonsoir,
    faites voir votre code.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Citation Envoyé par notar Voir le message
    bonsoir,
    faites voir votre code.
    Bonjour
    Voici donc le code PHP de récupération des résultats dans des div séparés.

    Il n'y a le premier (de numéro 1) qui s'affiche. Les autres sont masqués, et donc si l'on clique par exemple sur le bouton n°2 de la page, le code du div1 est remplacé (javascript) par le code du div2 (mais je ne vois donc plus les entêtes de colonne) :

    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
     
    $compteur=0;  // le compteur indique le nombre d'enregistrements des résultats pour chaque div
    $enrtotal=0; // nombre d'enregistrements total de la requête
    $boo=0;
    $numdiv=2;
     
     
    		echo "<div id=\"1\">"; // premier div affiché
    		echo "<table border='1'>"; // on ouvre un premier tableau
     
    		$nbcols=oci_num_fields($stid); // on récupère le nombre de champs
    				for($i=1;$i<=$nbcols;$i++){ // on affiche en titre de tableau des noms de champs du résultat
    					echo "<th>".oci_field_name($stid,$i)."</th>";
    				}
     
    		while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
     
    			if($compteur==100){ // si on arrive à la fin d'un div
    				echo "</table>"; // on ferme le tableau en cours
    				echo "</div>"; // on ferme le div en cours
    				echo "<div id=\"".$numdiv."\" style=\"display:none\">"; // on ouvre un nouveau div caché de numéro X
    				echo "<table border='1'>"; // nouveau tableau
    				$numdiv++;					
    			}
     
    			if($compteur<100){
    				echo "<tr>";
    				foreach ($row as $item) {					
    					echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "") . "</td>";
    				}	
    				echo "</tr>";
    				$compteur++;			
    			}else{
    				$compteur=0; // on réinitialise le compteur
    			}
    			$enrtotal++;	
    		}
     
    	echo "</table>";	
    	echo "</div>"; // fin div X
    Voici maintenant le code me permettant de récupérer les entêtes dans un tableau dans un <div id="champs">. Ce div est masqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo "<div id=\"champs\" style=\"display:none\">";
    echo "<table border='1'>"; // on ouvre un tableau
     
    $nbcols=oci_num_fields($stid); // on récupère le nombre de champs
    	for($i=1;$i<=$nbcols;$i++){ // on affiche en titre de tableau des noms de champs du résultat
    		echo "<th>".oci_field_name($stid,$i)."</th>";
    	}
     
    echo "</table>";
    echo "</div>"; // fin div champs

    L'idée est donc de fusionner le tableau de mon <div id="champs"> avec celui de mes <div id="X">

    Merci beaucoup

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    pourquoi ne pas inclure le code des entêtes dans le même div que les résultats?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Bonjour,

    je ne peux pas inclure les entêtes dans le div des résultats car les autres div que celui affiché (donc à partir du n°2) n'ont pas d'entêtes à avoir! En effet lorsque je clique sur le bouton d'export des résultats en Excel, je dois obtenir un tableau contenant une et une seule fois les entêtes!
    Etant donné que le fichier excel est une concaténation du contenu de tous mes div, je ne peux leur donner les entêtes directement, sinon j'aurai ceci :

    entete
    div1
    entete
    div2
    entete
    div3

    etc...

    Merci pour l'aide en tout cas

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    Notar a raison, tu peux le faire.. simplement il faudra modifier ton script de création du fichier XLS afin qu'il supprime ces en-têtes en trop..

Discussions similaires

  1. Ordonner la fusion de deux tableaux ordonnés
    Par KnightofEmpire dans le forum Pascal
    Réponses: 5
    Dernier message: 18/11/2013, 09h38
  2. Fusion de deux tableaux triés en un tableau trié
    Par adri010 dans le forum Débuter
    Réponses: 8
    Dernier message: 10/06/2010, 19h50
  3. [BO 5.1.8]fusion de deux tableaux (excel et bo)
    Par ninou58 dans le forum Deski
    Réponses: 4
    Dernier message: 24/06/2008, 08h21
  4. Réponses: 4
    Dernier message: 19/03/2008, 19h49
  5. Fusion de deux tableaux
    Par valefor dans le forum VHDL
    Réponses: 0
    Dernier message: 06/10/2007, 15h59

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