首先,感谢您阅读我的问题,希望您能对我有所帮助。昨天我整天都走过去,发现问题,但我不明白。
我的问题:我必须根据一个id显示一个数据表,我的id存在,但是服务器说不,我不知道为什么。某些ID可以正常工作,就像旧ID一样,但新ID无法工作。
如果您听不懂,那就问我。
我认为问题出在控制器试图获取ID时。
让我们看看代码
我的表单:
private function searchIdDepotVal()
{
$libelleIdDepotVal = $this
->_config
->admin
->libelle
->idDepot;
$idDepotVal = new Zend_Form_Element_Text('idDepot');
$idDepotVal->setLabel($libelleIdDepotVal)
->setAttrib('id', 'idDepot');
return $this->removeIdDecorator($idDepotVal);
}
/**
* Création de l'élément bouton Rechercher de la fiche dépét
*
* @return $rechercher
*/
private function createRechercherDepot()
{
$rechercher = new Zend_Form_Element_Submit(
$this
->_config
->admin
->button
->rechercherdepot
);
$rechercher->setAttrib('id', 'rechercherdepot');
$rechercher->setAttrib('name', 'rechercherdepot');
$rechercher->setDecorators(array('ViewHelper'));
return $rechercher;
}
我的查询:
public function getsuiviflutech($idDepot){
$this->executeQueries("
Select evt_id, evt_dt, evt_nomfic, evt_statut, evt_texte from depot_evt
where id_depot = ".$idDepot."
order by evt_dt desc"
);
return $this->getAllRows();
}
}
我的控制器:
public function suivifluxtechniqueAction(){
// Arguments passés dans l'URL
$session = Zend_Registry::get('session');
$params = $this->_getAllParams();
// Init du formulaire
$this->_logger->info('recherche de dépôt : ' . date('H:i:s'));
$this->view->userName = Zend_Registry::get('session')->identifiant;
$form = new Forms_Admin();
$this->view->lib = $this->_labelsFile;
$this->view->etatLancement = "vide";
$aFiltersData = array();
// Définir le n° de dépôt au choix dans l'URL ou dans le formulaire
$this->view->listdepotdrpadmin=array();
$idDepot = "";
$init=true;
if ($this->getRequest()->isPost()) {
$init=false; // Pour détecter le clic sur bouton recherche
$aFiltersData = $this->getRequest()->getPost();
if ( isset($aFiltersData['idDepot']) ) {
if (is_numeric( trim($aFiltersData['idDepot']) )) {
$idDepot = trim($aFiltersData['idDepot']);
}
}
if ( isset($aFiltersData['nbJours']) ) {
if (is_numeric( trim($aFiltersData['nbJours']) )) {
$nbJours = str_replace('\'', '',trim($aFiltersData['nbJours']));
}
}
} else {
if ( isset($params['idDepot']) )
$idDepot = $params['idDepot'];
if ( isset($params['idSite']) )
$idSite = $params['idSite'];
}
// Vérifier si le dépôt existe
$depotMapper = new Supervision_Model_DepotMapper();
$depotExist = $depotMapper->isDepotExist($idDepot);
// Si oui : aller chercher les infos à afficher
if ($depotExist) {
$this->view->idDepot = $idDepot;
$oDepotAdmin = new Services_DepotAdmin();
$listDepotAdmin = $oDepotAdmin->getsuiviflutech($idDepot);
if (count($listDepotAdmin) == 1) {
$this->view->listdepotdrpadmin = $listDepotAdmin[0];
//if ($this->view->statutdepot == '51101')
// $this->view->etatLancement = "MESS001";
$this->view->isValidAnnulerValidationSupervision = $oDepotAdmin->isValidAnnulerValidationSupervision($idDepot);
$aFiltersData['idDepot'] = $idDepot;
// Positionner le filtre qui permet d'effacer le champ idDepot avec le bouton annuler
$session->filtresAdminForm = $aFiltersData;
// Afficher les résultats via la div displayResults
$this->view->displayResults = 1;
if (!isset($params['lancer']) )
$this->view->flagOngletAdmin = "depot";
$form->populate($aFiltersData);
}
else $depotExist = false;
}
// Si la n° de dépôt saisi ne correspond à rien, afficher 1 message d'erreur
if ( (!$depotExist) && ( ($idDepot != "") || (!$init) ) )
{
if ( ( !isset($aFiltersData['idSite']) ) && ( !isset($params['lancer']) ) && ( !isset($params['errLancer']) ) ) {
$this->view->etatLancement = "ERR001";
$aFiltersData['idDepot'] = $idDepot;
$this->view->flagOngletAdmin = "depot";
$form->idDepot->class = "errorField";
}
}
if ( isset($params['reouvrir']) ) {
$this->view->etatLancement = "MESS001";
$this->view->flagOngletAdmin = "depot";
}
if ( isset($params['annuler']) ) {
$this->view->etatLancement = "MESS002";
$this->view->flagOngletAdmin = "depot";
}
$session->filtresAdminForm = $aFiltersData;
$form->populate($aFiltersData);
$this->view->form = $form;
}
我的html:
<h3><a href="#"><?php echo $this->lib->onglet->ongletAdmin->tab1 ?></a></h3>
<div>
<!------------------------------------->
<!-- 1er cadre : Filtre de recherche -->
<!------------------------------------->
<fieldset id="filtresRecherche">
<legend>
<?php
echo $this->lib->admin->libelle->fieldsetFiltresRecherche;
?>
</legend>
<form action="/supervision/admin/suivifluxtechnique"
method="POST" name="formAdmin" id="searchForm">
<div id="adminRecherche">
<div id="champDepot">
<?php echo $this->form->idDepot; ?>
</div>
<div id="bouton">
<?php
$valueRechercheDepot = $this->lib->admin->button->rechercherdepot;
echo $this->form->$valueRechercheDepot;
/* Finalement il n'est pas nécessaire d'avoir 1 bouton "Réinitialiser"
$valueAnnuler = $this->lib->admin->button->annuler;
echo $this->form->$valueAnnuler;
*/
?>
</div>
<div class="clear"></div>
</div>
</form>
</fieldset>
<br>
<!----------------------------------------->
<!-- 2ème cadre : Résultats de recherche -->
<!----------------------------------------->
<div id="adminResults">
<fieldset id="resultatsRecherche">
<legend>
<?php
echo $this->lib->admin->libelle->fieldsetResultatsRecherche;
?>
</legend>
<div id="result">
<?php if ( !is_null($this->listdepotdrpadmin) ) { ?>
<table id="supervisionResDepotDrp">
<thead>
<tr>
<th class="center">EVT_ID</th>
<th class="center">EVT_DT</th>
<th class="center">EVT_NOMFIC</th>
<th class="center">EVT_STATUT</th>
<th class="center">EVT_TEXTE</th>
</tr>
</thead>
<tbody>
<tr>
<?php
// Le 7ème champ statut_depot n'est pas affiché, car il sert uniquement pour les RG
// Il est redondantt avec le 6ème qui est sa traduction en langage humain
$i=0;
foreach ($this->listdepotdrpadmin as $elem) { ?>
<td class="center"><?php if ($i++ < 7) echo utf8_encode($elem); ?></td>
<?php } ?>
</tr>
</tbody>
</table>
<?php } ?>
</div>
</fieldset>
</div>
</div>