Tableau html

Résolu
Bonjour,

est il possible faire une boucle en html afin de crée des colonne dans un tableau...car g besoin de 48 colonne et c'est trés galere de les remplir toutes une par une donc si quelqu'un pouvait me renseigner....merci
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. Oky docky

    Alors essai :

    <html> 
    <head> 
    <title>Untitled</title> 
    
    </head> 
    
    <body bgcolor="darksalmon"> 
    <form name="form1" method="post" action="compteur.php"> 
    <center><table border="2"> 
    <?php 
    $nbJoursMois = date('t'); 
    
    $jour = date('d'); 
    $mois = date('m'); 
    $annee = date('Y'); 
    
    
    $users=array();
    $users[]="Agnes";
    $users[]="Brigitte";
    ?> 
    <tr> 
    <td><b>Date/Heure</b></td> 
    <td COLSPAN=4><b>8h</b></td> 
    <td COLSPAN=4><b>9h</b></td> 
    <td COLSPAN=4><b>10h</b></td> 
    <td COLSPAN=4><b>11h</b></td> 
    <td COLSPAN=4><b>12h</b></td> 
    <td COLSPAN=4><b>13h</b></td> 
    <td COLSPAN=4><b>14h</b></td> 
    <td COLSPAN=4><b>15h</b></td> 
    <td COLSPAN=4><b>16h</b></td> 
    <td COLSPAN=4><b>17h</b></td> 
    <td COLSPAN=4><b>18h15</b></td> 
    <td><b>Compteur</b></td> 
    </tr> 
    <?php
    for( $jour = 1; $jour < $nbJoursMois+1; $jour++) 
    { // Là on s'occupe de la 1ère ligne du cycle de 3 
        $datejour=sprintf("%02s/%02s/%02s",$jour,$mois,$annee); // On affiche la date 
    	printf('<tr><td><b>%s</b></td></tr>',$datejour); // On affiche la date 
    	for ($u=0; $u < count($users); $u++)
    	{
    		printf("<tr><td><b>%s</b></td>\n",$users[$u]); // On affiche le prénom 
    		for($i = 0; $i<=43; $i++) 
    		{ 
    			$id="users[".$users[$u]."][".$datejour."][".$i."]";
    			printf("<td><input type=\"checkbox\" id=\"%s\" name=\"%s\"></td>\n",$id,$id); // + les 11 checkbox pour arriver jusqu'au compteur 
    		} 
    		echo "<td><input type=\"submit\" name=\"envoyer\" value=\"envoyer\"></td>\n"; // Tu remplace aAa par ce que tu souhaite afficher :) 
    		echo "</tr>\n"; 
    	}	
    } 
    ?> 
    </table></center></form> 
    </body> 
    </html>


    compteur.php

    <?php 
    if (isset($_POST["users"]))
    {
    	echo "<table border=\"1\">\n";
    	$users=$_POST["users"];
    	foreach ($users as $user=>$dates)
    	{
    		foreach ($dates as $jour=>$pointages)
    		{	
    			echo "<tr>\n";
    			printf("<td>%s</td>\n",$user);
    			printf("<td>%s</td>\n",$jour);
    			printf("<td>%s minute(s)</td>\n",count($pointages)*15);		
    			echo "</tr>\n";
    		}
    	}	
    	echo "</table>\n";
    }	
    ?>


    La page compteur.php est ultra basique : à toi d'adapter--

    PhP  
    Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
    1. merci php ms ya une erreur a la ligne 48 avk le < et >
  2. Est-ce que tu veux compter le nbr de cases cochées pour chaque ligne pour chaque utilisateur pour chaque jour ?
    1. en fait pour chaque jour elle doivent faire un nombre dheure donc elle coche les case pour dire quelles sont presente. donc je pens que c pour chaque jour.
  3. Ha ben fallait commencer par là ! T'Oh !

    Quand tu postes ta page (bouton Envoyer) tu veux récupérer toutes les cases pour tout le planning dans ta page compteur.php ? c'est bien ca ?
    1. wai jveux savoir le nombre de case qui ont été coché
  4. si sii j'utilise php....par contre la je ne compren pas tro ton script :s je v te montrer le mien tu me dira ske ten pens...

    voici le script de ma page html avec mon tableau et ms checkbox :

    <html>
    <head>
    <title>Untitled</title>

    </head>

    <body bgcolor="darksalmon">
    <form name="form1" method="post" action="compteur.php">
    <center><table border="2">
    <?php
    $nbJoursMois = date('t');

    $jour = date('d');
    $mois = date('m');
    $annee = date('Y');
    ?>
    <tr>
    <td><b>Date/Heure</b></td>
    <td COLSPAN=4><b>8h</b></td>
    <td COLSPAN=4><b>9h</b></td>
    <td COLSPAN=4><b>10h</b></td>
    <td COLSPAN=4><b>11h</b></td>
    <td COLSPAN=4><b>12h</b></td>
    <td COLSPAN=4><b>13h</b></td>
    <td COLSPAN=4><b>14h</b></td>
    <td COLSPAN=4><b>15h</b></td>
    <td COLSPAN=4><b>16h</b></td>
    <td COLSPAN=4><b>17h</b></td>
    <td COLSPAN=4><b>18h15</b></td>
    <td COLSPAN=4><b>Compteur</b></td>
    </tr>
    <?php
    for( $jour = 1; $jour < $nbJoursMois+1; $jour++)
    { // Là on s'occupe de la 1ère ligne du cycle de 3
    echo ' <tr>
    <td><b>'.$jour.'/'.$mois.'/'.$annee.'</b></td> '; // On affiche la date
    echo ' </tr> ';
    echo '
    <tr>
    <td><b>Agnes</b></td> '; // On affiche le prénom
    for($i = 0; $i<=43; $i++)
    {
    echo '<td><input type="checkbox" name="presente1" value=1/></td>'; // + les 11 checkbox pour arriver jusqu'au compteur
    }
    echo ' <td><input type="submit" name="envoyer" value="envoyer"></td> '; // Tu remplace aAa par ce que tu souhaite afficher :)
    echo ' </tr> ';
    echo ' <tr>
    <td><b>Brigitte</b></td> '; // On affiche le prénom
    for($i = 0; $i<=43; $i++)
    {
    echo '<td><input type="checkbox" name="presente2" value=1/></td>'; // + les 11 checkboxes pour arriver jusqu'au compteur
    }
    echo ' <td><input type="submit" name="envoyer" value="envoyer"></td> '; // Tu remplace aAa par ce que tu souhaite afficher :)
    echo ' </tr> ';
    }
    ?>

    </table></center></form>
    </body>
    </html>

    maintenant jessaye de trouver un script qui me permetrai de trouver le nombre de case cocher...
    1. bjr

      Comme tu ne dis tjrs pas si tu utilises PHP ou pas voici un ex en Javascript

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html  xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> 
      <head> 
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      <style>
      *
      {
      	font-family : arial;
      	font-size : 10pt;
      }
      
      td
      {
      	padding-left : 2px;
      	padding-right : 2px;
      }
      
      pre
      {
      	margin : 0px;
      	padding : 1px;
      }
      
      .rowA
      {
      	background-color : #F0F0FF;
      	width: 50px;
      	white-space: nowrap;
      }
      
      .rowB
      {
      	background-color : #F9F9F9;
      	width: 50px;
      	white-space: nowrap;
      }
      
      input
      {
      	display : inline;
      }
      </style>
      
      <script type="text/javascript">
      <!--
      	// Objet pour construire et manipuler les grilles (table HTML) avec DOM
      	function Grid()
      	{		
      		this.colCount = 0;
      		this.rowCount = 0;	
      		this.table = null;
      		this.tableBody = null;
      		this.tableId = "";
      	}
      
      	// Efface la ligne spécifiée par rowIndex
      	Grid.prototype.deleteRow = function(rowIndex)
      	{
      		if (rowIndex < this.rowCount)
      		{
      			// recherche la ligne de tableau
      			var row = this.tableBody.getElementsByTagName("tr")[rowIndex];	
              	
      			// Supprime la ligne
      			this.tableBody.removeChild(row);
      			this.rowCount--;
      		}	
      	}
      	
      	// Ajoute une ligne à la position rowIndex dans la table HTML
      	Grid.prototype.createRow = function(rowIndex)
      	{
      		var row = document.createElement("tr");		
      	
      		for(var colIndex = 0; colIndex < this.colCount; colIndex++) 
      		{
      			// Crée un élément <td> 
      			var cell = document.createElement("td");
      			cell.className=this.getCellClass(rowIndex,colIndex);
      			// Demande au DataProvider de fournir le contenu à afficher dans la cellule
      			cell.innerHTML = this.getCellData(rowIndex,colIndex);
      			row.appendChild(cell);
      		}
      					
      		if (rowIndex == this.rowCount)
      		{
      			// ajoute la ligne à la fin du corps du tableau
      			this.tableBody.appendChild(row);
      		}
      		else
      		{	
      			// recherche la ligne de tableau
      			var rowNode = this.tableBody.getElementsByTagName("tr")[rowIndex];					
      			this.tableBody.insertBefore(row,rowNode);
      		}
      		this.rowCount++;	
      	}	
      	
      	// Ajouter une ligne à la fin
      	Grid.prototype.addRow = function()
      	{
      		this.createRow(this.rowCount);
      	}	
      	
      	// Insère à la position rowIndex
      	Grid.prototype.insertRow = function(rowIndex)
      	{
      		this.createRow(rowIndex);
      	}		
      	
      	// Création dynamique des lignes dans la table et chargement de chaque cellule
      	Grid.prototype.setRowCount = function(rowCount)
      	{
      		if (rowCount > this.rowCount)
      		{	
      			var startRowIndex = this.rowCount;
      			for( var rowIndex = startRowIndex; rowIndex < rowCount; rowIndex++) 
      			{
      				this.createRow(rowIndex);
      			}
      		}
      	}	
      		
      	// retourne l'élément TD html corrrepondant à la cellule qui se trouve en [rowIndex,colIndex]
      	Grid.prototype.getCell = function(rowIndex,colIndex)
      	{		
      		var row = this.tableBody.getElementsByTagName("tr")[rowIndex];
      		return row.getElementsByTagName("td")[colIndex];
      	}
      
      	// Initialise la grille puis la charge en demandant au dataProvider de fournir le contenu de chaque cellule
      	Grid.prototype.init = function(tableId,rowCount,colCount)
      	{	
      		this.tableId = tableId;
      		this.table = document.getElementById(tableId);	
      		this.colCount = colCount;
      
      		this.tableBody = document.createElement("tbody");
      		// place <tbody> dans l'élément <table>	
      		this.table.appendChild(this.tableBody);
      		this.setRowCount(rowCount);	
      	}
      	
      	Grid.prototype.getCellData = function(rowIndex, colIndex)
      	{	
      		if (typeof(this.onGetCellData) == "function") 
      		{
      			return this.onGetCellData(rowIndex, colIndex);
      		}
      		else
      		{
      			return "&nbsp;";
      		}
      	}
      
      	Grid.prototype.getCellClass = function(rowIndex, colIndex)
      	{	
      		if (typeof(this.onGetCellClass) == "function") 
      		{
      			return this.onGetCellClass(rowIndex, colIndex);
      		}
      		else
      		{
      			return "";
      		}
      	}	
      // -->
      </script>
      
      
      <script type="text/javascript">
      <!--	
      
      // création d 'un objet de type Grid (en fait une table HTML)	
      var grille=new Grid();
      
      // Gestionnaires d'événements
      // Lorsque la grille demande le contenu de la cellule
      grille.onGetCellData =function(rowIndex, colIndex)
      {
      	var id="cb_"+rowIndex+"_"+colIndex;
      	return colIndex+'<input type="checkbox" id="'+id+'" onclick="grille.onClickCheckbox(\''+rowIndex+'\',\''+colIndex+'\')">';
      }
      
      // Lorsque la grille demande le style css a utilisé pour la cellule
      grille.onGetCellClass =function(rowIndex, colIndex)
      {
      	return (rowIndex % 2) ? "rowA" : "rowB";
      }
      
      grille.onClickCheckbox = function(rowIndex, colIndex)
      {
      	var cb = document.getElementById("cb_"+rowIndex+"_"+colIndex);
      	var input_total = document.getElementById("total");
      	
      	var total = 0;
      	total = parseInt(input_total.value);
      	if (isNaN(total))
      	{
      		total = 0;
      	}
      	
      	if (cb.checked)
      	{ 
      		total = total + 15;
      	}
      	else
      	{
      		total = total - 15;	
      	}
      	input_total.value =  total;
      } 
      
      function go()
      {
      	// Initialise la grille 
      	grille.init('ma_grille',1,48);	
      }
      // -->
      </script>
      
      </head>
      <body onload="go()">
      <form>
      <div><table id="ma_grille" border="1" cellspacing="0"></table></div>
      <br />
      Total <input type="text" id="total">
      </form>
      </body>
      </html
      >
      1. Oui ok mais tu veux coder en Javascript ou en PHP ?
        1. je veux cocher les case, chaque case symbolise 15minute, il faudrait que j'arrive a compter le nombre de case a cocher me permetan d'afficher le nombre total de minute passer.
        2. je veux cocher les case, chaque case symbolise 15minute, il faudrait que j'arrive a compter le nombre de case a cocher me permetan d'afficher le nombre total de minute passer.
      2. Bjr

        Tu peux le faire en PHP ou en Javascript

        Mais tes colonnes tu y mets quoi dedans ?
        1. je ve i metre d chekbox