Problème de style sur les bordures d'un tableau

Répondre
jackbocar
le 16/07/2008 à 13:20
jackbocar
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tableau PDO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
BODY {background: #f1f1f1;}
IMG {float: left;}
BODY, P, IMG {font-family: Arial, Helvetica, sans-serif;font-size: 10pt;margin: 0.5em;text-align:justify;}
.red {color: red;}
.cellule {color: #0C034F;text-align: justify;border: solid 1px #a0522d;}
.cadre {border: solid 1px #a0522d;background-color:#ffffff;}
.Lnav {text-decoration: none;font-weight: bold;color:#23698B;font-size : 10pt;}
.Lnav:hover {text-decoration: underline;font-weight: bold;color:#990000;font-size : 10pt;}
</style>
</head>

<body>

Bonjour,

J'ai un tableau en PDO, il fonctionne parfaitement bien, mon seul problème est les STYLES du cadre et des cellules. Ils sont pour une part épais et pour une autre fin ?

Comment régler ce problème ?

Merci de votre aide

Jack Bocar


  1. <?php

  2. /*------------------------------------------------*/
  3. /*
  4. /* NE RIEN CHANGER ICI */
  5. /*
  6. /*------------------------------------------------*/
  7. class Connexion extends PDO{
  8. private $debug;
  9. /*--- constructeur ne rien changer ----*/

  10. function __construct($user,$mdp,$bdd,$host='localhost'){

  11. $this->debug=false;
  12. try{
  13. parent::__construct('mysql:host='.$host.';dbname='.$bdd,$user,$mdp);
  14. } catch(PDOEXCEPTION $e){
  15. die ('Erreur : '.$e->getMessage() );
  16. }
  17. $this->exec('SET CHARACTER SET 8859-1');
  18. }
  19. function modeDebug(){
  20. $this->debug=true;
  21. }
  22. /*--- execute une requete sql du type insert, delete ou update ---*/

  23. function exec($requete){
  24. $resultat=parent::exec($requete);
  25. if($resultat===FALSE and $this->debug){
  26. var_dump($resultat);
  27. var_dump(parent::errorInfo());
  28. }else{
  29. return $resultat;
  30. }
  31. }
  32. /*--- execute une requete du type select ---*/

  33. function query($requete){
  34. $resultat=parent::query($requete);
  35. if($resultat===FALSE and $this->debug){
  36. var_dump($this->errorInfo());
  37. var_dump(parent::errorInfo());
  38. $resultat->closeCursor();
  39. }else{
  40. return $resultat;
  41. }
  42. }
  43. /*--- return : false si aucune valeur trouvee ----*/

  44. function querySimple($select,$table,$where='',$groupBy='',$ordre='',$limit='',$defaut=false){
  45. $requete='select '.$select.
  46. ' from '.$table;
  47. if($where!=''){
  48. $requete.=' where '.$where;
  49. }
  50. if($groupBy!=''){
  51. $requete.=' group by '.$groupBy;
  52. }

  53. if($ordre!=''){
  54. $requete.=' order by '.$ordre;
  55. }
  56. if($limit!=''){
  57. $requete.=' limit '.$limit;
  58. }
  59. $resultat=$this->query($requete);
  60. $resultat=$resultat->fetchAll(PDO::FETCH_BOTH);
  61. if(isset($resultat[0][0])){
  62. return $resultat[0][0];
  63. }else{
  64. return $defaut;
  65. }
  66. }
  67. /*--- renvoie un tableau associatif contenant le résultat de la requete -----*/

  68. function requete2tableau($requete){
  69. $resultat=$this->query($requete);
  70. if($resultat===false AND $this->debug){
  71. echo $requete;
  72. };
  73. return $resultat->fetchAll(PDO::FETCH_ASSOC);
  74. }
  75. /*---renvoie un tableau html contenant le résultat de la requete---*/

  76. /*----ON PEUT MODIFFIER LA TABLE SEULEMENT ----*/

  77. function requete2html($requete,$border=0,$enteteColonne=true){
  78. $resultat=$this->query($requete);
  79. $texte='';
  80. $texte.= '<center><table width="90%" cellpadding="0" cellspacing="0" border="'.$border.'" class="cadre">';
  81. if($enteteColonne){
  82. $texte.= '<tr valign="top">';
  83. for($i=0;$i<$resultat->columnCount();$i++){
  84. $col=$resultat->getColumnMeta($i);
  85. $texte.= '<th class="red">'.$col['name'].'</th>';
  86. }
  87. $texte.= '</tr>';
  88. }
  89. $resultat->setFetchMode(PDO::FETCH_NUM);
  90. foreach($resultat as $ligne){
  91. $texte.= '<tr valign="top">';
  92. foreach($ligne as $valeur){
  93. $texte.= '<td class="cellule"><p>'.nl2br($valeur).'</p></td>';
  94. }
  95. $texte.= '</tr>';

  96. /*-- espace vide entre chaque tableau ----*/

  97. $texte.='<tr><td>&nbsp;</td></tr>';

  98. /*---ON PEUT MODIFIER LES ARGUMENTS SELECT ---*/

  99. }
  100. $resultat->closeCursor();
  101. $texte.='</table><br /><a href="#" class="Lnav">Top</a></center>';
  102. return $texte;
  103. }
  104. }
  105. $connexion=new Connexion('LOGIN','PASSWORD','BASE');
  106. $connexion->modeDebug();
  107. echo $connexion->requete2html('select id,Nouvelles as Nouvelles from tableau_1 ORDER BY id DESC',1);


  108. /*-
  109. ID, NEWS, INFO, OU TOUT AUTRE SUIVANT LA TABLE ON PEUT AUSSI AJOUTER DES ARGUMENTS
  110. -*/
  111. ?>



  112. <br />
  113. <a href="tableau_2.php" class="Lnav">Tableau 2</a> &nbsp; <a href="tableau_3.php" class="Lnav">Tableau 3</a> &nbsp; <a href="tableau_4.php" class="Lnav">Tableau 4</a>
  114. <br /><br />
  115. </body>
  116. </html>


--
-- Structure de la table `tableau_1`
--

CREATE TABLE `tableau_1` (
`id` int(11) NOT NULL auto_increment,
`Nouvelles` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
LA GLOBULE
le 16/07/2008 à 13:29
LA GLOBULE
Pourquoi ne pas avoir posté dans le forum html / css pour un tel problème ?

Sinon, tu n'aurais pas des cellules vides par moment ?
Si oui, regarde du côté de la propriété empty-cells.
jackbocar
le 16/07/2008 à 13:36
jackbocar
Bonjour,

Désolé, par habitude de poster dans le forum PHP.

Non, je n'ai pas de cellules vide, simplement elles n'ont pas la même épaisseur ?

Jack Bocar
LA GLOBULE
le 16/07/2008 à 14:08
LA GLOBULE
Tu ne pourrais pas nous donner le HTML gé néré de ta page plutot que le PHP ? Ca serait plus simple pour t'aider.
jackbocar
le 16/07/2008 à 15:57
jackbocar
J'ai supprimé les balises <TH> et les ai remplacées par <TD>.
J'ai supprimé la fonction $border et l'ai remplacé par border="0"
J'ai toujours comme un double border sur les cellules côté gauche et droit à l'intérieur du cadre

  1. <style type="text/css">
  2. BODY {
  3. background: #f1f1f1;
  4. }

  5. IMG {
  6. float: left
  7. }

  8. BODY, P, IMG {
  9. font-family: Arial, Helvetica, sans-serif;
  10. font-size: 10pt;
  11. margin: 0.5em;
  12. text-align:justify;
  13. }
  14. .red {
  15. font-family: Arial, Helvetica, sans-serif;
  16. font-size: 12pt;
  17. color: red;
  18. font-weight: bold;
  19. text-align:center;
  20. }
  21. .cellule {
  22. color: #0C034F;
  23. text-align: justify;
  24. border: solid 1px #a0522d;
  25. }
  26. .cadre {
  27. border: solid 1px #a0522d;
  28. background-color:#ffffff;
  29. }

  30. .Lnav {
  31. text-decoration: none;
  32. font-weight: bold;
  33. color:#23698B;
  34. font-size : 10pt;
  35. }

  36. .Lnav:hover {
  37. text-decoration: underline;
  38. font-weight: bold;
  39. color:#990000;
  40. font-size : 10pt;
  41. }

  42. </style>
  43. </head>

  44. <body>
  45. <center>
  46. <table width="90%" cellpadding="0" cellspacing="0" border="0" class="cadre">
  47. <tr valign="top">
  48. <td class="red">id</td>
  49. <td class="red">Nouvelles</td>
  50. </tr>
  51. <tr valign="top">
  52. <td class="cellule"><p>4</p>
  53. </td>
  54. <td class="cellule"><p>Test du tableau et des styles des cadres.</p>
  55. </td>
  56. </tr>
  57. <tr>
  58. <td>&nbsp;</td>
  59. </tr>
  60. <tr valign="top">
  61. <td class="cellule"><p>3</p>
  62. </td>
  63. <td class="cellule"><p>Test du tableau et des styles des cadres.</p></td>
  64. </tr>
  65. <tr>
  66. <td>&nbsp;</td>
  67. </tr>
  68. <tr valign="top">
  69. <td class="cellule"><p>2</p>
  70. </td>
  71. <td class="cellule"><p>Test du tableau et des styles des cadres.</p></td>
  72. </tr>
  73. <tr>
  74. <td>&nbsp;</td>
  75. </tr>
  76. <tr valign="top">
  77. <td class="cellule"><p>1</p>
  78. </td>
  79. <td class="cellule"><p>Test du tableau et des styles des cadres.</p></td>
  80. </tr>
  81. <tr>
  82. <td>&nbsp;</td>
  83. </tr>
  84. </table>
  85. <br />
  86. <a href="#" class="Lnav">Top</a>
  87. </center>
jackbocar
le 16/07/2008 à 16:08
jackbocar
J'ai trouvé une solution, en supprimant :


  1. .cellule {
  2. color: #0C034F;
  3. text-align: justify;
  4. border: solid 1px #a0522d;
  5. }



Et en remplaçant par :

  1. .cellule {
  2. color: #0C034F;
  3. text-align: justify;
  4. border-top: solid 1px #a0522d;
  5. border-bottom: solid 1px #a0522d;
  6. border-right: solid 1px #a0522d;
  7. }



Il ne me reste plus qu'un double border à l'intérieur et du côté droit du tableau
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours