Requete sql + zend framwork

Signaler
Messages postés
283
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010
-
 willimartial -
salut a tous
j'utilse le framework zend pour mon application et faire des requetes.
pour des requetes simple sur une seule table ca marche tres bien mais avec 2 tables j'ai ce message d'erreur

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'home.TypeId' in 'field list'

pourtant le champ existe bien dans ma table

voila la requete :

$select

=
$db->select()->from(

array(
'player'=>
'section_player',
'home'=>
'section_home'),

array(

'player.idx',
'home.TypeId'))->where(

'player.id = ?',
$id)->orwhere(

'home.id = ?',
$id);

$stmt =
$db->query(
$select);

$row =
$stmt->fetch();

merci de votre aide

2 réponses

Messages postés
23
Date d'inscription
dimanche 23 mars 2008
Statut
Membre
Dernière intervention
26 septembre 2011

mon ami ta requete est fausse car tu n'a pas selectionné "home.id et player.id" dans ta requete faut l'ajouter dans la selection et puis les etuliser dans la clause where

Bonjour moi c'est Willi tchatchouang je suis un etudiant en troisième année a IUT fotso victor de bandjoun Comme chaque année nous sommes appele réaliser des application
Au fait je développe en PHP5 avec le framework zend et je suis vraiment depuis je suis encore au début de mon projet
voici mon problème
J'ai un modelé appelle guichet ou je mets l'ensseble de mes requte sql j'ai egalment une vue appéle guichet et un fichier Indexcontroler (le controlleur par defaut) je voudrais qu'a caque enregistrment d'un guichet je me rassure si ce sernier n'existe pas deja
voici les code

La classe l'action enregistrementguichet
public function enregistreguichetAction()
{
// action body

$guichet = new Application_Model_DbTable_Guichet();
$this->view->guichet = $guichet->fetchAll(); // affecton a la vue ce formulaire

$formguichet = new Application_Form_Formulaireenregistrementguichet(); // Insbtance du formulaire d'enregistrement du guichet
$formguichet->submit->setLabel("Valider"); // libele du formulaie
$this->view->form = $formguichet;

if ($this->getRequest()->isPost()) // on teste si le formulaire a été soumis si la valeur retourner par la methode ispost de l'objet requestest true alor on conclus que oui
{
$DonneeFormulaire = $this->getRequest()->getPost(); // etant donné que le formulaire a été soumis nous pouvons dont récupére les information du formulaire avec la methode getpost
if ($formguichet->isValid($DonneeFormulaire)) // on verifie si ces données sont valides avec la methode isvalid();
{
$NomGuichet = $formguichet->getValue("NOM_GUICHET"); // si les donnée sont valide on récuper dont les donneé les valeurs soumis
$Requette_Guichet_Model = new Application_Model_DbTable_Guichet(); // cree un instance de la classe model relatif au requet du guichet
//$resultat = $Requette_Guichet_Model->RechercheDonneDB($NomGuichet);
//Application_Model_DbTable_Guichet(). RechercheDonneDB();
// foreach ($resultat as $valeur):
if ( empty($Requette_Guichet_Model->RechercheDonneDB($NomGuichet)))
{
$formguichet->populate($DonneeFormulaire);
}
else
{
$Requette_Guichet_Model->EnregistreGuichet($NomGuichet); // appale de la methode enregistrement_guichet pour l_ajout dans la base de donne
$this->_helper->redirector('index'); // redirection vers la page index

}
//endforeach;









/*foreach ($this->guichet as $valeur)
{
if ($valeur->NOM_GUICHET == $NomGuichet)
{
$formguichet->populate($DonneeFormulaire);
//$Requette_Guichet_Model->EnregistreGuichet($NomGuichet); // appale de la methode enregistrement_guichet pour l_ajout dans la base de donne
//$this->_helper->redirector('index'); // redirection vers la page index

}
else
{
$Requette_Guichet_Model->EnregistreGuichet($NomGuichet); // appale de la methode enregistrement_guichet pour l_ajout dans la base de donne
$this->_helper->redirector('index'); // redirection vers la page index

}
}
*/
//$tab = $Requette_Guichet_Model->RechercheDonneDB();
//$tab =0;

//$tab = $Requette_Guichet_Model->fetchAll();
$tab = Array();
//$tab = $Requette_Guichet_Model->RechercheDonneDB();
$i=0;

/*
foreach($this->guichet as $valeur)
{
$tab = array( $valeur->NOM_GUICHET);
}
$NbreData = mysql_num_rows($tab);
$num = array_count_values($tab);

//for ($i=0 ; $i< $tab->length ; $i ++)
//{
for ($j=0 ; $j< $tab->length ; $j ++)
{
if ($tab[$j] == $NomGuichet)
{
$formguichet->populate($DonneeFormulaire);
//$Requette_Guichet_Model->EnregistreGuichet($NomGuichet); // appale de la methode enregistrement_guichet pour l_ajout dans la base de donne
//$this->_helper->redirector('index'); // redirection vers la page index
}
else
{
//$formguichet->populate($DonneeFormulaire);
$Requette_Guichet_Model->EnregistreGuichet($NomGuichet); // appale de la methode enregistrement_guichet pour l_ajout dans la base de donne
$this->_helper->redirector('index'); // redirection vers la page index
}
}


*/

//}


/*
$tab = $Requette_Guichet_Model->fetchAll();
$NbreData = mysql_num_rows($tab); $i=0;

foreach($tab as $colonne)
{

if ($tab[$colonne]==$NomGuichet)
{
$formguichet->populate($DonneeFormulaire);

}

else {
$Requette_Guichet_Model->EnregistreGuichet($NomGuichet); // appale de la methode enregistrement_guichet pour l_ajout dans la base de donne
$this->_helper->redirector('index'); // redirection vers la page index

}

}*/


}
else
{
$formguichet->populate($DonneeFormulaire); // si les donné ne sous pas valide nous remplissons les donne avec les valeur remplis précedent et nous lui reaffichons
}
}



}



Le modelle

class Application_Model_DbTable_Guichet extends Zend_Db_Table_Abstract
{

protected $_name = 'guichet';

public function EnregistreGuichet($Nom_guichet)
{

$options = array(
Zend_Db::AUTO_QUOTE_IDENTIFIERS => false
);

$params = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'memoirefinetude',
'options' => $options
);

$db = Zend_Db::factory('Pdo_Mysql', $params);

$donne array('ID_GUICHET'> "", 'NOM_GUICHET' => $Nom_guichet);
$db->insert('guichet', $donne);
//echo $db->getConnection()->getAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY);

//$donne array('ID_GUICHET'> NULL, 'NOM_GUICHET' => $Nom_guichet);
//$this->insert($donne);

}
public function RechercheDonneDB($Nom_guichet)
{


$host = "localhost";
$user = "root";
$password = "";
$base = "memoirefinetude";
// connection a la base de donnée
$mysqlconnection = new mysqli($host,$user,$password );

$basedonne = $mysqlconnection->select_db($base);

$requete="SELECT NOM_GUICHET from guichet where = '$Nom_guichet'";
// $result=$mysqlconnection->query($requete);
// return $result->toArray();

// retrouve la première colonne de résultat
// $result = $mysqlconnection->fetchCol("SELECT NOM_GUICHET from guichet",
// array('NOM_GUICHET' => 'Sir')
// );

// $sql = 'SELECT bug_id, bug_description, bug_status FROM bugs';

$stmt = $mysqlconnection->query($requete);

// $NOM_GUICHET = $stmt->fetchColumn(1);
// return $NOM_GUICHET->toArray();

$NOM_GUICHET = $stmt->fetchObject();
return $NOM_GUICHET->NOM_GUICHET;

}


public function liste_guichet($id_guichet)
{
$id_guichet= (int) $id_guichet;
$colonne = $this->fetchRow('ID_GUICHET=' .$id_guichet);

return $colonne->toArray();

}


Voici le formulaire



class Application_Form_Formulaireenregistrementguichet extends Zend_Form
{

public function init()
{
/* Form Elements & Other Definitions Here ... */

$this->setName("guichet");
$id = new Zend_Form_Element_Hidden('ID_GUICHET');
$id->addFilter('Int');
$nomguichet = new Zend_Form_Element_Text('NOM_GUICHET');
$nomguichet->setLabel('Nom Guichet')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$initialise = new Zend_Form_Element_Reset("effacer");
$initialise->setName("Annuler");
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $nomguichet , $submit, $initialise));




}


}