Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PEAR > DB & MDB2
DB & MDB2 Forum d'entraide pour les bibliothèques DB et MDB2 du framework PEAR, permettant de manipuler les bases de données en PHP. Avant de poster -> tutoriels DB et MDB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2007, 16h11   #1
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 15
Points : 8
Points : 8
Par défaut bug : Unsupported operand types in Renderer.php

Bonjour,

Je genere des tableaux avec Pear à partir d'une base de données mysql.

config
php 4
Version du serveur: 5.0.27-community-nt
phpMyAdmin - 2.9.2

Pour cela j'utilise le code qui suit :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
$requete = "SELECT  id_offre_materiel, COUNT(id_offre_materiel) AS nb_demande FROM correspondance_potentielle GROUP BY id_offre_materiel";
 
$champs = array("id_offre_materiel"=>"OFFRE", "nb_demande"=>"Nombre de demande");
 
$DSN = "mysql://root:root@localhost/maBase";
$database =& MDB2::connect($DSN,array('debug' => 8,'result_buffering' => false)); 
$datagrid =& new Structures_DataGrid_Extension($n); /* n enregistrements par page */
 
/* Couplage */
$datagrid->bind($requete, array('dbc' => &$database));
$database->disconnect();
$table = new HTML_Table();
 
/* Génération des colonnes (on omet "id") : ( a faire avant la pagination ) */
$datagrid->generateColumns($champs);
/* On utilise fill() à la place de render() pour remplir le tableau avec les données : */
$datagrid->fill($table);
/* Affichage des liens de pagination */
$pagination = $datagrid->render("Pager");
$table ->display();
J'obtiens l'erreur suivante :
Fatal error: Unsupported operand types in C:\wamp\php\PEAR\Structures\DataGrid\Renderer.php on line 500

J'ai testé la requete directement sur la base, elle fonctionne.
Mon objet datagrid comprend bien les reponses à la requete.
A la ligne 500 de Renderer.php j'ai un attribut de renderer : _totalRecordsNum de type
object(mdb2_error) : ["message"]=> string(25) "MDB2 Error: not supported" au lieu d'être un nombre.

PS : Les requetes plus simple du type "SELECT id_offre_materiel FROM correspondance_potentielle" ne generent pas d'erreur (je sais pas si ça peut aider)

Merci d'avance pour votre aide
brissou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2007, 23h07   #2
Membre chevronné
 
Avatar de nathieb
 
Homme olivier Thiébaut
Chef de projet/Architecte
Inscription : mai 2004
Messages : 627
Détails du profil
Informations personnelles :
Nom : Homme olivier Thiébaut
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Chef de projet/Architecte
Secteur : Service public

Informations forums :
Inscription : mai 2004
Messages : 627
Points : 706
Points : 706
Par défaut oubli?

$datagrid =& new Structures_DataGrid_Extension($n);


ton $n sauf erreur de ma part, n'est défini null part ?

olivier
nathieb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 09h41   #3
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 15
Points : 8
Points : 8
C'est un oubli
$n =10
( le bout de code est à l'interieur d'une fonction par exemple $requete est un parametre qui peut changer)
Tout marche bien avec des requetes simples
mais le pb ce produit lorsque j'utilise des requetes contenant
GROUP BY ou/et DISTINCT
Encore un indice : j'ai pas ce bug lorsque je test sur un serveur linux...
brissou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 11h15   #4
Membre chevronné
 
Avatar de nathieb
 
Homme olivier Thiébaut
Chef de projet/Architecte
Inscription : mai 2004
Messages : 627
Détails du profil
Informations personnelles :
Nom : Homme olivier Thiébaut
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Chef de projet/Architecte
Secteur : Service public

Informations forums :
Inscription : mai 2004
Messages : 627
Points : 706
Points : 706
Bonjour,

D'après ce que tu dis si cela tourne sous linux, cela doit venir d'une fin de fichier chez wido.. . J'ai eu le mème pb avec spreadsheet_excel, ou j'ai fait l'install sous linux et rappatrié le projet sous windows/wamp .

j'ai pris tous les fichiers de la bibli pear qui me posait un pb et j'ai enlevé les fin de fichier genre ?> espace caché ....

et tout est rentré dans l'ordre, le message était aussi bizarre.

ce qui m'a mis la puce à l'oreille c'est un header already send ... dans le message d'erreur.

Essai , sinon si j'ai le temps je vais pomper ton source et l'adapter pour voir.

olivier
nathieb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 13h50   #5
En attente de confirmation mail
 
Inscription : avril 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 15
Points : 8
Points : 8
Apparrement ce n'est pas un probleme d'espaces cachés.

J'ai testé sur linux en local ça ne marche pas alors que ça marche sur un serveur.
Puis apres un debug intensif à la main je suis arrivé à trouver une options différentes de MDB2 entre local et serveur distant:
'result_buffering' qui est à false lorsque ca ne fonctionne pas, et à vrai lorsque ça fonctionne au momment de compter le nombre de lignes de réponses à afficher ( voir méthode &_wrapResult (ligne 2541) dans PEAR/MDB2.php)
Mais mettre cette option à vrai enleve l'erreur fatal mais enleve l'affichage des resultat ( ce qui n'arrange pas mon affaire)
brissou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h26.


 
 
 
 
Partenaires

Hébergement Web