Récupérer le résultat d'une requête count en php5

Signaler
-
Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
-
Bonjour,
je veux récupérer le résultat d'une requête select count dans une variable php pour ensuite l'utiliser dans un code javascript
voici le code:

{
//Obtain a database connection
$db = JFactory::getDbo();
//Retrieve the shout
$query = $db->getQuery(true)
->select($db->quoteName('count(*)'))
->from($db->quoteName('#__users'))
->where('sendEmail = '. $db->Quote('0'));
//Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
//Return the Hello
return $result;
}
ne soyez pas surpris du code de connexion à la base car c'est du développement orienté vers CMS
j'attends vos suggestions et merci d'avance

3 réponses

Messages postés
33219
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2021
351
Bonjour,


j'attends vos suggestions
Oui.. mais...
-Quelle est la question ?
-Quel est le souci rencontré ?

Messages postés
33219
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2021
351
Le code que tu as mis... n'affiche rien de toutes façons.
Peux tu nous mettre la totalité du code ?
Car là... ton code ressemble à une fonction... mais tu ne nous montres pas comment tu l'appelles ni comment tu t'en sert ensuite.
je l'appelle dans un autre fichier

<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php

echo "salut ".$result;
?>
Messages postés
33219
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2021
351
C'est quoi cette syntaxe ?
defined sert normalement à vérifier qu'une CONSTANTE existe... pas à appeller des fonctions...
Messages postés
33219
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2021
351
Quand au
echo "salut ".$result; 

$result est une variable qui se trouve DANS la fonction. Sa portée se limite donc à elle...

Par contre.. pour utiliser la valeur de retour de ta fonction tu fais un truc du genre :

function test(){
$result = " ceci est un test !!";
retourn $result;
}


$toto = test();
echo " TOTO = ". $toto;

re,
c'est parce que je travaille avec MVC que ma variable elle est porté du contrôleur vers le modele et ensuite vers la vue

<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php

echo "salut ".$hello;
?>


defined( '_JEXEC' ) or die( 'Restricted access' );

// Include the syndicate functions only once
require_once( dirname(__FILE__).DS.'helper.php' );

$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?>


class modHelloWorldHelper
{
public static function getHello( $params )
{
//Obtain a database connection
$db = JFactory::getDbo();
//Retrieve the shout
$query = $db->getQuery(true)
->select($db->quoteName('name'))
->from($db->quoteName('#__users'))
->where('sendEmail = '. $db->Quote('0'));
//Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
$result=print_r($result,true);
//Return the Hello
return $result;
}
}
?>
Donc j'ai déjà essayé de faire passer une requête avec un seul résultat et c'est bon ça marche mais quand je dois faire un count ça marche pas
Messages postés
33219
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2021
351
$db = JFactory::getDBO();
$sql = "
     SELECT COUNT(*) 
       FROM ".$db->nameQuote('#__users')."
     WHERE ".$db->nameQuote('sendEmail')."=".$db->quote('0').";";
$db->setQuery($query);
$count = $db->loadResult();


C'est le genre de choses que tu peux trouver sur du jommla par exemple.
http://docs.joomla.org/J1.5:Accessing_the_database_using_JDatabase

Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
4
Bonjour,

Essayez en remplaçant ceci:

           ->select($db->quoteName('count(*)')) 


par ça:

           ->select($db->quoteName('count(1) AS nb'))


à la récupération des infos, le résultat est dans l'alias nb

Ici, lors de la récup des infos:

$count = $db->loadResult();


faites un

var_dump($count);


juste après pour voir le type et contenu de $count....

Si comme je le suppose c'est un tableau associatif, alors il faut faire:

$resultat = $db->loadResult();
$count = $resultat[0]['nb'];


A+


Le présent est un fragment d'éternité coincé entre le passé et le futur