2010-11-11 24 views
0

J'ai travaillé sur quelques exemples dans un livre utilisant de la poire pour la première fois ... jusqu'à présent, ça semble plutôt cool, mais j'ai un petit problème besoin de modifier la mise en forme d'une colonne particulière de la table générée à partir Structures_DataGrid & HTML_Table - spécifiquement je en ai besoin pour ne pas envelopper le texte dans une cellule au trait d'union - que je pense que je pourrais faire en utilisant 'nowrap' et html/css - jusqu'à présent, je ne vois pas comment passer ce genre de formatage à une colonne dans le tableau ...Mise en forme des tables générées avec PHP/PEAR Structures_DataGrid & HTML_Table

Des suggestions?

code source Ajouté ci-dessous:

<?php 
    // Include the DB access credentials 
    require 'dbcred.php'; 

    // Include the PEAR Structures_DataGrid class 
    require 'Structures/DataGrid.php'; 

    // instantiate grid for 10 records per page 
    $datagrid = new Structures_DataGrid(10); 

    // Define our Datasource options, in this case PDO MySQL 
    $options = array('dsn' => "mysql://$user:[email protected]$db_host/$db_name"); 

    // Define the Query 
    $sql = "SELECT * FROM contact_info"; 

    // Bind the Query to our Datagrid 
    $bind = $datagrid->bind($sql, $options); 
    // Test for Errors 
    if (PEAR::isError($bind)) 
    { 
    /*error_log('DataGrid Error: '. $bind->getMessage()); 
    $gridsource = 'Foo';*/ 
    echo $bind -> getMessage(); 
    } 
    else 
    { 
    // Define our Column labels, using a 'column' => 'Label' format 
    $columns = array(
     'title' => 'Title', 
     'first_name' => 'First Name', 
     'mid_init' => 'Mid. Init.', 
     'last_name' => 'Last Name', 
     'suffix' => 'Suffix', 
     'street_address' => 'Street Address', 
     'city' => 'City', 
     'state_prov' => 'State/Province', 
     'post_code' => 'Postal Code', 
     'phone_pri' => 'Phone (Pri)', 
     'phone_alt' => 'Phone (Alt)', 
     'email' => 'E-Mail', 
    ); 
    $datagrid->generateColumns($columns); 
    // Some more options, for our renderer 
    $renderer_options = array(
     'sortIconASC' => '&uArr;', 
     'sortIconDESC' => '&dArr;', 
     'headerAttributes' => array('bgcolor' => '#E3E3E3'), 
     'evenRowAttributes' => array('bgcolor' => '#A6A6A6'), 
    ); 
    $datagrid->setRendererOptions($renderer_options); 

    // Add some final attributes to our table 
    $renderer = $datagrid->getRenderer(); 
    $renderer->setTableAttribute('cellspacing', 0); 
    $renderer->setTableAttribute('cellpadding', 5); 
    $renderer->setTableAttribute('border', 1); 
    // Render the table, be sure to check for errors 
    $gridbody = $datagrid->getOutput(); 
    if (PEAR::isError($gridbody)) 
    { 
     error_log('DataGrid render error: ' . $gridbody->getMessage()); 
     $gridbody = ''; 
    } 
    // Finally, render the pager, again checking for errors 
    $gridpager = $datagrid->getOutput(DATAGRID_RENDER_PAGER); 
    if (PEAR::isError($gridpager)) 
    { 
     error_log('DataGrid render error: ' . $gridpager->getMessage()); 
     $gridpager = ''; 
    } 
    $gridsource = $gridbody . $gridpager; 
    } 
?> 
<!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>PEAR::Structures_DataGrid</title> 
    <meta http-equiv="Content-type" 
     content="text/html; charset=iso-8859-1" /> 
    <style type="text/css"> 
     body { 
     font-family: Tahoma, Arial, Helvetica, sans-serif; 
     font-size: 11px; 
     } 
     h1 { 
     font-size: 1.2em; 
     color: navy 
     } 
     th { 
      white-space: no-wrap; 
     } 
    </style> 
    </head> 
    <body> 
    <h1>PEAR::Structures_DataGrid</h1> 
    <?php echo $gridsource ?> 
    </body> 
</html> 

Répondre

0

Je ne sais pas ce que la poire est mais: Vous pouvez formater des colonnes comme celui-ci en html:

<table> 
    <col style="background: green;" /> 
    <col /> 
    <tr> 
    <td>First TD of first TR</td> 
    <td>Second TD of first TR</td> 
    </tr> 
    <tr> 
    <td>First TD of second TR</td> 
    <td>Second TD of second TR</td> 
    </tr> 
</table> 

Cela fait l'arrière-plan de la première colonne vert.

+0

Je comprends comment faire un formatage de base, merci. Le problème est que ceci utilise un framework php (sorte de) qui interroge une base de données puis la recrée dans un formulaire de table qui peut ensuite être affiché. Le contrôle du formatage des colonnes individuelles qui sont générées automatiquement est le problème ... – memilanuk

+0

Je comprends cela. Mais avec le tag col il devrait être possible je pense. Ajoutez juste pour la boucle qui ajoute les étiquettes de col et vous devriez aller bien. Pouvez-vous ajouter le code source s'il vous plaît, que je peux comprendre quel est le problème? – SCBoy

+0

k merci d'ajouter la source. Cela devrait être possible avec setColAttributes() (http://pear.php.net/manual/en/package.html.html-table.html-table.setcolattributes.php) – SCBoy