Récuéer le nombre de lignes

Répondre
pierre3
le 30/06/2006 à 14:47
pierre3
Je cherche à récupérer le nombre de lignes suite à une requête SQL. Je souhaiterai récupérer ce nombre de ligne dans une variable.

Dans la documentation c'est "DB_result::numRows()" qui est présenté sous la forme suivante :

<?php
// On suppose que $db est un objet DB valide...
$res =& $db->query('SELECT * FROM phptest');
echo $res->numRows();
?>


Je fais donc dans mon programme ceci :

$db->setFetchMode(DB_FETCHMODE_ASSOC);
$majeurs = $db->getAssoc($req);
echo $majeurs->numRows();


Et j'ai l'erreur suivante : "Fatal error: Call to a member function on a non-object in c:\program files\easyphp1-8\www\gestelle\majeurs\recherche.php on line 87"

Si je retire la ligne "echo", mon programme fonctionne correctement avec l'affichage de 5 lignes ce qui correspont à ce que j'attends.

Merci de m'apporter quelques éclaircissements.
zebden
le 30/06/2006 à 14:51
zebden
Ca veut dire que $majeurs n'est pas une class et donc que tu cherches une méthode introuvable. ^^

Si on suit la technique du dessus il manque le &.
zebdinou pour les intimes / Blog : http://www.zebden.fr
zebden
le 30/06/2006 à 14:55
zebden
getAssoc retourne un tableau non ? query execute la requête, c'est pas logique là .. Je connais pas cette class.
zebdinou pour les intimes / Blog : http://www.zebden.fr
pierre3
le 30/06/2006 à 14:55
pierre3
Très intéressant, mais là je ne comprends pas.

Dans l'exemple de la documentation $res serait une classe ?

Pourtant mon programme fonctionne très bien sans la ligne numRow
pierre3
le 30/06/2006 à 14:57
pierre3
Oui getAssoc retourne un tableau du type
nom de variable, contenu de variable.
zebden
le 30/06/2006 à 14:59
zebden
On peut voir tout ton code ?
zebdinou pour les intimes / Blog : http://www.zebden.fr
pierre3
le 30/06/2006 à 15:05
pierre3
Le voici

include("../inc/conf.php");
include("../inc/fonctions.php");
include("../verif.php");
// Déclaration Smarty
require('gestelle/setup.php');
$smarty = new Smarty_gestelle;
// Récupération des variables de recherche
$var_rec_nom=$_SESSION["var_rec_nom"];
$var_rec_prenom=$_SESSION["var_rec_prenom"];
$var_rec_numero=$_SESSION["var_rec_numero"];
// PEAR
// La bibliothèque PEAR doit être dans le include_path
require_once 'DB.php';
// L'annuaire de base de PEAR doit être dans votre include_path
// Data Source Name: $dsn C'est le lien universel de connexion
$dsn = "mysql://$user_db:$password_db@$host_db/$bdd_db";
$options = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
);
// DB::connect renverra un objet DB de PEAR avec succès
// ou un objet d'erreur de DB PEAR sur l'erreur
// Vous pouvez également placer TRUE comme deuxième paramètre
// si vous voulez une connexion persistante :
// $db = DB::connect($dsn, true);
$db = DB::connect($dsn, $options);
// Avec DB::isError vous pouvez différencier entre une erreur ou une connection valide.
if (DB::isError($db))
{
die ($db->getMessage());
}

// Aiguillage vers la gestion du dossier ou vers sa modification
if (!empty($_POST))
{
if (isset($_POST['Choisir']))
{
$_SESSION['maj_id']=$_POST['id_maj'];
header("Location: gestion_majeur.php");
}
elseif(isset($_POST['Modifier']))
{
$_SESSION['maj_id']=$_POST['id_maj'];
header("Location: modifier_majeur.php");
}
}
// Boucle de chargement du tableau d'affichage des majeurs en fonction des critères de recherche

$nb_majeur = 2000;

if (!@$start)
{
$start=0;
}

if ($var_rec_nom != "")
{
$req = "SELECT `id_maj`, `maj_num_dos`, `maj_civilite_id`, `maj_nom`, `maj_prenom`, `maj_prenom_usage`, `maj_nom_j_fille`, `maj_situation_fam`, `maj_tel`, `maj_gsm`, `maj_email`, `maj_naissance_date`, `maj_naissance_ville`, `maj_naissance_cp`, `maj_naissance_pays_id`, `maj_naissance_nationalite_id`
FROM ".$prefixe_table."`maj_etat_civil` WHERE maj_nom like '%$var_rec_nom%' limit $start,$nb_majeur";
}
else
{
if ($var_rec_prenom != "")
{
$req = "SELECT `id_maj`, `maj_num_dos`, `maj_civilite_id`, `maj_nom`, `maj_prenom`, `maj_prenom_usage`, `maj_nom_j_fille`, `maj_situation_fam`, `maj_tel`, `maj_gsm`, `maj_email`, `maj_naissance_date`, `maj_naissance_ville`, `maj_naissance_cp`, `maj_naissance_pays_id`, `maj_naissance_nationalite_id`
FROM ".$prefixe_table."`maj_etat_civil` WHERE maj_prenom like '%$var_rec_prenom%' limit $start,$nb_majeur";
}
else
{
if ($var_rec_numero != "")
{
$req = "SELECT `id_maj`, `maj_num_dos`, `maj_civilite_id`, `maj_nom`, `maj_prenom`, `maj_prenom_usage`, `maj_nom_j_fille`, `maj_situation_fam`, `maj_tel`, `maj_gsm`, `maj_email`, `maj_naissance_date`, `maj_naissance_ville`, `maj_naissance_cp`, `maj_naissance_pays_id`, `maj_naissance_nationalite_id`
FROM ".$prefixe_table."`maj_etat_civil` WHERE maj_num_dos like '%$var_rec_numero%' limit $start,$nb_majeur";
}
else
{
$req = "SELECT `id_maj`, `maj_num_dos`, `maj_civilite_id`, `maj_nom`, `maj_prenom`, `maj_prenom_usage`, `maj_nom_j_fille`, `maj_situation_fam`, `maj_tel`, `maj_gsm`, `maj_email`, `maj_naissance_date`, `maj_naissance_ville`, `maj_naissance_cp`, `maj_naissance_pays_id`, `maj_naissance_nationalite_id`
FROM ".$prefixe_table."`maj_etat_civil` ORDER BY `maj_nom`, `maj_prenom` limit $start,$nb_majeur";
}
}
}

// Initialisation de la lecture avec génération d'un tableau ayant le nom du champ comme index
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$majeurs = $db->getAssoc($req);


if (PEAR::isError($majeurs)) {
die($majeurs->getMessage());
}

// $nbLignes = DB_result::numRows();

// Affichage
$smarty->assign ("var_rec_nom", $var_rec_nom,
"var_rec_prenom", $var_rec_prenom,
"var_rec_numero", $var_rec_numero);
$smarty->assign("majeurs", $majeurs);
$smarty->display('recherche.html');
include("../inc/footer.php");
?>
LupusMic
le 30/06/2006 à 16:32
LupusMic
La documentation de la fonction DB_common::getAssoc().

Il renvoie effectivement un tableau. Donc on ne peut pas appeler de méthode sur le tableau retourné.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
pierre3
le 30/06/2006 à 17:14
pierre3
Merci LupusMic,

Cela veux dire qu'il n'est pas possible avec cette fonction de récupérer le nombre de lignes.

Mais en PEAR (je débute) je suis bien obligé d'utiliser des fonctions comme celle-ci.

C'est donc limitatif ?
Répondre

Ecrire un message

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