Categories > TinyButStrong general (FR) >

unsupported object type

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: oio
Date: 2005-08-18
Time: 16:19

unsupported object type

Salut,

Je bloque sur cette erreur, la connexion se fait bien a ma base mais :

TinyButStrong Error (MergeBlock [res]): The data source Id 'DB_mysql' is an unsupported object type. And the corresponding custom function 'tbsdb_DB_mysql_close' is not found.


ma fonction de connexion :

function connex($dsn, $options)
{
    $db =& DB::connect($dsn, $options);
    if (PEAR::isError($db))
    {
      die($db->getMessage());
    }
    else
        return $db;
}

mon fichier :

$idcom=connex($dsn, $options);
$sql = // ma requete sql
$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate('templates/resultats.tpl') ;
$TBS->MergeBlock('res',$idcom,$sql) ;
deconnex($idcom);
$TBS->Show() ;
By: Skrol29
Date: 2005-08-18
Time: 17:34

Re: unsupported object type

Salut,

C'est parce que PEAR::DB n'est pas supporté en natif par TBS.
Tu dois utiliser un plug-in TBS d'accès au données.
Il s'agit de 3 fonctions que voici :
function tbsdb_peardb_open(&$Source,&$Query) {
  global $db;
  return $db->query($Query);
}
function tbsdb_peardb_fetch(&$Rs) {
  $Row = $Rs->fetchRow(DB_FETCHMODE_ASSOC);
  if (is_null($Row)) $Row = false;
  return $Row;
}
function tbsdb_peardb_close(&$Rs) {
  $Rs->free();
}

Ces fonctions correspondent au mot-clé 'peardb' pour la fonction MergeBlock().
Ton code sous TBS devient donc :
$TBS->MergeBlock('blk','peardb','select * from matable');
By: Skrol29
Date: 2005-08-18
Time: 17:36

Re: unsupported object type

Ces fonctions seront bientôt dispo dans la page support.
By: oio
Date: 2005-08-19
Time: 10:27

Re: unsupported object type

merci bien une fois de plus :)
By: oio
Date: 2005-08-19
Time: 11:05

Re: unsupported object type

hum j'include 'tbsdb_peardb.php' dans mon fichier
ensuite je remplace

$TBS->MergeBlock('res',$idcom,$sql) ;
par
$TBS->MergeBlock('res','peardb',$sql);

ma fonction de connexion restant inchangé.
Ca ne merge pas bien apparement :

TinyButStrong Error (Array value): Can't merge [res.Ville] because sub-item 'Ville' is not an existing key in the array. This message can be cancelled using parameter 'noerr'.
By: Skrol29
Date: 2005-08-19
Time: 11:58

Re: unsupported object type

Ca marchait bien pour moi.
Je viens de mettre un correctif sur ces fonctions afin que le message d'erreur PearDB soit affiché à l'ouverture de la requête. Le correctif est disponible dans la page Support.

Essau avec ça, sinon vérifie aussi la casse de tes nom de champ.
By: Skrol29
Date: 2005-08-19
Time: 12:03

Re: unsupported object type

Ha mais y' un autre truc.
dans le code des fonction, la variable de connexion s'appele $db.
Il faut la renommer en $idcom
By: oio
Date: 2005-08-19
Time: 12:06

Re: unsupported object type

Je n'ai pas d'erreur PEAR et la casse est bonne vu qu'avant que j'utilise PEAR::DB ca fonctionnait bien.

Vais chercher un petit peu parceque je comprend pas si ca marche pour toi ..
By: oio
Date: 2005-08-19
Time: 12:07

Re: unsupported object type

oui j'avais vu mais ca ne change pas le probleme
By: Skrol29
Date: 2005-08-19
Time: 12:21

Re: unsupported object type

J'ai utilisé PearDB 1.7.6, Pear 1.4.0a12
By: oio
Date: 2005-08-19
Time: 13:16

Re: unsupported object type

J'utilise la meme vers de PEAR::DB que toi.
Pour résumer le probleme :

<?php
include_once("includes/tbs_class_php5.php");
include_once("includes/tbsdb_peardb.php");
require_once 'DB.php';

$idcom = mysql_connect("localhost", "root", "xrfm3mjL");
$idbase=mysql_select_db("solidarites");

$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate('templates/resultats.tpl') ;
$TBS->MergeBlock('res',$idcom,'SELECT * FROM donateur WHERE donateur.Ville="paris"');
mysql_close($idcom);
$TBS->Show() ;
?>

Sans utiliser PEAR::DB ca fonctionne bien, j'ai bien mes resultats dans ma tpl.

Mais :

<?php
include_once("includes/tbs_class_php5.php");
include_once("includes/tbsdb_peardb.php");
require_once 'DB.php';

$dsn = array(
    'phptype'  => 'mysql',
    'username' => 'root',
    'password' => 'xxxxxxxxx',
    'hostspec' => 'localhost',
    'database' => 'xxxxxx',
);

$options = array(
    'debug'       => 2,
    'portability' => DB_PORTABILITY_ALL,
);
   
$idcom = DB::connect($dsn, $options);

f (PEAR::isError($idcom))
{
   die($idcom->getMessage());
}

$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate('templates/resultats.tpl') ;
$TBS->MergeBlock('res','peardb','SELECT * FROM donateur WHERE donateur.Ville="paris"');
$idcom->disconnect();
$TBS->Show() ;
?>

ne merge pas.
By: oio
Date: 2005-08-19
Time: 13:32

Re: unsupported object type

Voila j'ai trouvé ca foire si dans les options de connect y a :

'portability' => DB_PORTABILITY_ALL

Je l'ai enlevé ca fonctionne bien, je te remercie de ton aide Skrol29 !
By: Skrol29
Date: 2005-08-19
Time: 14:47

Re: unsupported object type

As-tu essayé
  $db = DB::connect($dsn, $options);
au lieu de
  $idcom = DB::connect($dsn, $options);
?

Je viens de tester les fonctions sous PHP5, et ça marche toujours correctement pour moi.

Sinon il faut faire du debuging et malheusement je ne peux pas le faire à distance. Essaye d'insérer un :
  echo input_r($Row).'<br><br>';
dans la fonction tbsdb_peardb_fetch(), juste avant le return, afin de voir s'il récupère correctement les données.

By: oio
Date: 2005-08-19
Time: 15:17

Re: unsupported object type

C'est bon c'est réglé voir post ci dessous merci ;)