Calculer des largeurs de colonnes et les stocker dans un tableau associatif

michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006 - 24 juin 2004 à 11:49
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 28 juin 2004 à 10:17
Bonjour, je pose ma question tant qu'il me reste des cheveux ;-)

Le contexte:
-Je récupère une requête mysql (string).
-Avec la librairie FPDF qui permet de créer des fichiers PDF avec PHP, je veux afficher le résultat de cette requête.
-Je cherche à calculer et mémoriser les largeurs des colonnes dans un tableau associatif afin de pouvoir faire correspondre facilement les colonnes avec leur largeur respective.
Ma question est comment créer et remplir un tableau associatif "a la volée" (pendant l'exécution et pas à sa déclaration : var $tab array("truc"> 1,"bidule"=> 2) ?
Voici un bout de mon code pour illustrer:
Il faut prendre en compte que nous sommes à l'intérieur d'une classe FPDF que j'hérite. La méthode Widths est censée remplir le tableau tabWidth.
En exécutant ce code, je n'ai aucune valeur dans le tableau, que j'y accède par les noms des colonnes ou par un rang entier.

class monPDF extends FPDF
{
  var tabWidth = array();
  ...
  function Widths()
  {
    global $query;
    if($res = mysql_query($query)) {
      $this->SetFont('Arial','',8);

    for($i=0;$i < mysql_num_fields($res);$i++)
      $this->tabWidth[mysql_field_name($res, $i)] = $this->GetStringWidth(mysql_field_name($res, $i)) + 2;

    $this->SetFont('Arial','',6);
    while($enr = mysql_fetch_array($res))
      for($i=0;$i < mysql_num_fields($res);$i++) {
        if($this->GetStringWidth($enr[$i]) > $this->tabWidth[mysql_field_name($res, $i)])
    $this->tabWidth[mysql_field_name($res, $i)] = $this->GetStringWidth($enr[$i]) + 2;
      }
    }
  }
}


Biensûr, ca marche en remplacant le nom de colonne par un entier au remplissage, mais ca va me faire galérer pour la suite.
Merci d'avance.
Bonne journée.

3 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
27 juin 2004 à 21:10
Salut!
Je viens de faire un titit truc, qui marche, simplement:
$chaine1 = 'val';
$chaine2 = 'val2';

$tab[$chaine1] = 1;
$tab[$chaine2] = 2;
echo $tab['val2'];


@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

www.progforum.net: Aide en programmation!
0
michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006
28 juin 2004 à 09:51
Merci pour l'aide. J'ai utilisé la même méthode, en fait ct une petite erreur que g faite dans mon code. Maintenant ca marche nickel.
Merci encore et bonne semaine... arf c dur le lundi !
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
28 juin 2004 à 10:17
:D Je suis en vacances, --> 23.08 :D

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

www.progforum.net: Aide en programmation!
0