Categories > Your tips & tricks >

CSV File (fr: fichier csv)

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Condutiarii
Date: 2004-11-30
Time: 21:17

CSV File (fr: fichier csv)

You can parse a csv file with custom data source / Vous pouvez traiter un fichier au format CSV avec une source de données personnalisée.

Beware ! The first line must be fields descriptor / Attention ! La première ligne doit énumérer le nom des champs.

test.csv :

player,mail,right,special,number
Condutiarii,condutiarii@game.fr,admin,,12
Renz,renz@game.fr,user,,6
Vorak,vorak@game.fr,user,inactive,45


You place your block following fields (first line) in csv file / Vous placez votre bloc selon les champs (décrits sur la première ligne) du fichier csv.

test.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" />
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250" />
    <title>
      CSV Source
    </title>
    <link rel="stylesheet" href="inc/style.css" type="text/css" />
  </head>
  <body>
    <table>
      <tr>
        <td>
          [result.player;block=tr]
        </td>
        <td>
          [result.mail]
        </td>
        <td>
          [result.right]
        </td>
        <td>
          [result.special]
        </td>
        <td>
          [result.number]
        </td>
      </tr>
    </table>
  </body>
</html>

With PHP 4

<?php
require_once('tbs_class.php');

function tbsdb_csv_open(&$Source, &$Query)
{
  if ($handle = @fopen($Query, 'r'))
  {
    if (!defined('TBS_CSV_DELIMITER'))
      define('TBS_CSV_DELIMITER', ',');
    if (!defined('TBS_CSV_LENGTH'))
      define('TBS_CSV_LENGTH', 1024);
    $field = @fgetcsv($handle, TBS_CSV_LENGTH, TBS_CSV_DELIMITER);
    return array
    (
      'handle'     => $handle,
      'name_field' => $field
    );
  }
  else
    return false;
}

function tbsdb_csv_fetch(&$Rs, $RecNum)
{
  if ($data = @fgetcsv($Rs['handle'], TBS_CSV_LENGTH, TBS_CSV_DELIMITER))
  {
    foreach ($Rs['name_field'] as $key => $val)
    {
      $data[$val] = $data[$key];
      unset($data[$key]);
    }
    return $data;
  }
  else
    return false;
}
function tbsdb_csv_close(&$Rs)
{
  @fclose($Rs);
}

$TBS = new clsTinyButStrong;
$TBS->LoadTemplate('test.htm');

$TBS->MergeBlock('result', 'csv', 'test.csv');

$TBS->Show();
?>

With PHP 5 :

<?php
require_once('../tbs2/tbs_class.php');

function tbsdb_csv_open(&$Source, &$Query)
{
  if ($handle = @fopen($Query, 'r'))
  {
    if (!defined('TBS_CSV_DELIMITER'))
      define('TBS_CSV_DELIMITER', ',');
    if (!defined('TBS_CSV_LENGTH'))
      define('TBS_CSV_LENGTH', 1024);
    $field = @fgetcsv($handle, TBS_CSV_LENGTH, TBS_CSV_DELIMITER);
    return array
    (
      'handle'     => $handle,
      'name_field' => $field
    );
  }
  else
    return false;
}

function tbsdb_csv_fetch(&$Rs, $RecNum)
{
  if ($data = @fgetcsv($Rs['handle'], TBS_CSV_LENGTH, TBS_CSV_DELIMITER))
    return array_combine($Rs['name_field'], $data) ;
  else
    return false;
}
function tbsdb_csv_close(&$Rs)
{
  @fclose($Rs);
}

$TBS = new clsTinyButStrong;
$TBS->LoadTemplate('test.htm');

$TBS->MergeBlock('result', 'csv', 'test.csv');

$TBS->Show();
?>

You can specify the CSV delimitor and length with this constant to define before MergeBlock method with csv source / Vous pouvez spécifier le délimiteur et la longueur des lignes de votre fichier csv avec les constantes suivantes, à déclarer avant toutes utilisations de la méthode MergeBlock avec cette source de données.

TBS_CSV_DELIMITER
TBS_CSV_LENGTH
By: Skrol29
Date: 2004-12-19
Time: 15:12

Re: Fichier CSV/CSV File

The functions are now available for download at the Support page.
Thank you  Condutiarii :)
Enjoy,