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

Langage PHP Discussion :

Avis sur une méthode


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut Avis sur une méthode
    Bonjour,

    Je suis en train de développez une appli PHP. A un moment, je reprend des informations d'une table. Evidemment, je fais un select sur un champ, mais je ne sais pas combien d'enregistrement il y a. Cela signifie que je ne connais pas à l'avance la longueur du tableau que je vais rapatrier (intéractivité BDD => PDO pour moi).
    Donc j'ai été "obligé" de coder une fonction qui me créer un tableau HTML à partir du PHP (bien sur en précisant le nombre de colonnes). Je l'ai fais, mais je trouve cela cracra, pas très "propre" qsi vous voyez ce que je veux dire.
    Voici ma fonction, elle se situe dans la classe HTML (le principe est qu'on fasse [dans un script php]
    HTML :: table($array,4,'Tableau magique',array(array ('markup'=> array ('p' => 'class=toto'),true)
    ce qui écrira un tableau HTML dont le titre est 'Tableau magique' de 4 colonnes où chaque cellule sera un <p class="toto"></p>. Ce tableau aura des bordures HTML. Le contenu viendra du tableau dynamique (idéalement contenu dans une table SQL) $array. Perso, je trouve cela pratique, mais je devrais peut être m'appuyer sur des bibliothèque existant (XML) :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    /** Static function to display an HTML table
    	 * @param [Array] HTML Table we want to display
    	 * @param [Integer] The number of colmns 
    	 * @param [String] The caption (if there is, else put false)
    	 * @param [Array] What to display in the HTML table
    	 * @param [Boolean] If there is a border 
    	 * @param [Boolean] If cell width should be calculated proportionaly as screen.with (js needed)*/
    	public static function table($array,$columns,$uncaption=true,$display,$border=false,$adjust=false)
    	{
    		$i = 0 ; // a pointer 
    		$open=true; // do we have to open a <tr>
    		$close=false; // do we have to close the <tr>
    		if($border)
    			echo '<table border="1">';
    		else
    			echo '<table>';
    		if($uncaption)
    		{
    			echo '<caption>'.$uncaption.'</caption>';
    		}
    		echo '<tbody>';
    		foreach($array as $key => $value)
    		{
    			//THINK
    			$rest=$i%$columns;
    			if($i == 0) // first element to display
    			{
    				$open=true;
    				$close=false;
    			}
    			else if($i == count($array)) // last element to display
    			{
    				$close=true;
    				$open=false;
    			}
    			else if($rest == 0) // open an other <tr>
    			{
     
    				$close=true;
    				$open=true;
    			}
    			else
    			{
    				$open=false;
    				$close=false;
    			}
    			$i++;
    			// WRITE
    			// -- COLUMN
    			if($open && !$close)
    			{
    				echo '<tr>';
    			}
    			else if($open && $close)
    			{
    				echo '</tr>';
    				echo '<tr>';
    			}
    			else if(!$open && $close)
    			{
    				echo '</tr>';
    			}
    			// -- CELL
    			if((isset($_SESSION['width']) && $_SESSION['width'] > 0) && $adjust) // to arrange td width if javascript is enable
    			{
    				echo '<td style="width: '.(70/100*$_SESSION['width']/$columns).'px;">';
    			}
    			else
    			{
    				echo '<td>';
    			}
    			for($k = count($display) - 1 ; $k >=0; $k--)
    			{
    				foreach($display[$k] as $p => $v)
    				{
    					if($p=='markup')
    					{
    						if(is_array($v))
    						{
    							foreach($v as $z=>$e)
    							{
    								echo '<'.$z; // START MARKUP
    								if(is_array($e))
    								{
    									for($l = count($e) -1 ; $l >= 0 ; $l--)
    									{
    										echo ' '.substr($e[$l],0,strpos($e[$l],"=")+1);
    										// ATTRIBUTE VALUE
    										echo '"'.substr($e[$l],strpos($e[$l],"=")+1).$key.'"'; 
    									}
    								}
    								echo '>'; // END MARKUP
    								echo $value;
    								echo '</'.$z.'>'; // CLOSE MARKUP
    							}
    						}
    					}
    				}
    			}
     
    			echo '</td>';
    		}
    		echo '</tbody>';
    		echo '</table>';
    	}
    Je voudrais savoir ce que vous en pensez ? (bien / pas bien, pratique / pas pratique ...)
    et pourquoi

    --Merci de vos réponses--
    http://aldorande.miniville.fr/ind
    Fedora 8, eclipse 3.3 sur x86_64
    --------------
    Colorer votre code php

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 92
    Points : 102
    Points
    102
    Par défaut
    regarde du côte de PEAR

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/04/2015, 14h43
  2. Avis sur une méthode de rappel ?
    Par Shypster dans le forum C#
    Réponses: 18
    Dernier message: 25/03/2010, 15h38
  3. Besoin d'avis sur une méthode
    Par g_barthe dans le forum PyQt
    Réponses: 1
    Dernier message: 12/10/2007, 17h54
  4. Avis sur une méthode de gestion d'erreur
    Par mikedavem dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/08/2007, 19h26
  5. [Conception] Votre avis sur une méthode
    Par AIexis dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/04/2007, 18h08

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