Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Depuis un moment je coince sur une requête Max dans une classe.
Je m'explique : j'ai une table en mysql content comme clé un id de format entier, non incrémenté (dans le but de garder un contrôle dessus). J'ai créé une classe relative à cette table. Le but est qu'il y ait des méthodes pour en manipuler les données. Et je coince sur la recherche de l'ID Max :
Voici le code de la classe
class Tavurnav extends Zend_Db_Table_Abstract
{
//protected $config= new Zend_Config_Ini('config.ini','dev');
protected $_name= 'Avurnav';
protected $_primary = 'numerotation_avurnav';
//protected $db = Zend_Db::factory($config->database);
protected function datefrenus ($datefr) {
if (!$datefr) return "";
list($jour, $mois, $annee) = split("/", $datefr);
$dateus = trim($annee)."/".trim($mois)."/".trim($jour);
return $dateus;
}
public function findByDate($date_emission) //controles à venir
{
if (!isset($date_emission)) {
die ("Il faut renseigner une date émission");
}
else {
$select = $this->select()
->from ($this)
-> where ('date_emission = ?', $date_emission);
$toto = $this->fetchAll ($select);
foreach ($toto as $avirad) {
echo "voici les messages demandés : " .$avirad->message ."<br> ".
"Référence : ". $avirad-> reference;
}
}
}
//fonction d'insertion sans controle pour le moment
public function inserer ($data) {
try{
$this->insert($data);
return true;
}
catch (Zend_Db_Exception $e) {
return false;
}
}
// retourne le dernier numero avurnav
public function dernierNumero () {
$select = $this->select()
->from ($this, 'MAX(numerotation_avurnav)');
echo "requete : ".$select .'<br>';
$max= $this->fetchOne ($select);
return $max;
}Lorsque je fais appel à la méthode dernierNumero(), je n'ai aucun retour. Le code s'arrête, sans retour d'erreur.
$table = new Tavurnav(); $last = $table->dernierNumero(); echo $last;
Je suppose qu'il y a une erreur, sinon cela marcherait. Merci de votre aide
Cordialement
Hors ligne
bonjour,
essaies d'utiliser Zend_Db_Expr pour contraindre select de Zend_Db de considerer MAX(numerotation_avurnav) comme une expression et non comme une colonne.
[lang=php]
public function dernierNumero () {
$select = $this->select()
->from ($this, new Zend_Db_Expr("max(numerotation_avurnav) ") );
echo "requete : ".$select .'<br>';
$max= $this->fetchOne ($select);
return $max;
}Dernière modification par amiss (17-09-2012 11:14:38)
Hors ligne
En fait, j'ai modifié comme suit :
// retourne le dernier numero avurnav
public function dernierNumero () {
$select = $this->_db->select();
$select->from ("Avurnav", 'MAX(numerotation_avurnav)');
echo $select ;
$max = $this->_db->fetchOne ($select);
return $max;
}et j'ai à priori bien mon ID Max
Hors ligne