IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

[Problème WHERE requête SQL]


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut [Problème WHERE requête SQL]
    Bonjour à tous,

    J'utilise depuis peu le framework Zend, et j'ai une erreur que j'arrive absolument pas à résoudre. J'ai un accès à une base de donnée (qui marche) mais j'ai un problème de syntaxe dans ma clause WHERE apparement.

    Je dispose de trois tables : formation, formateur et competence_formateur et je veux récupérer toutes les formations (suivant un paramètre de type rowformation (héritant de Zend_Db_Table_Row_Abstract)) et pour chaque formation je veux les infos des formateurs qui disposent des compétences.

    J'ai effectuée la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $select = $this->select()->setIntegrityCheck(false)
    ->from(array('F' => 'formation','id_formation', 'code', 'sujet', 'categorie', 'duree'))
    ->join(array('cf' => 'competence_formateur', 'F.id_formation = cf.fk.formation','fk_formation'))
    ->join(array('f' => 'formateur', 'f.id_formateur = cf.fk_formateur',
         'id_formateur','nom','prenom', 'fonction', 'externe'))
     ->where('f.externe = false');
     
    if(isset($rowformation->categorie))
    {	
          $select->where('F.categorie LIKE %?%', $rowformation->categorie);
    }
    if(isset($rowformation->code))
    {
         $select->where('F.code = ?', $rowformation->code);
    }
    if(isset($rowformation->sujet))
    {
         $select->where('F.sujet = ?', $rowformation->sujet);
    }
     
    $select-> order('F.categorie');
    return $this->fetchAll($select)->toArray();
    rowformation est donnée par l'utilisateur dans sa recherche, et il se peut que certains paramètres n'existent pas, par exemple le code de la formation. La recherche peut se faire selon les critères code, sujet et categorie.

    Le but donc de mes isSet et de vérifier si l'objet existe et si il existe alors j'ajoute la clause WHERE correspondante. Mais je reçois l'erreur suivante:

    Message: SQLSTATE[42601]: Syntax error: 7 ERREUR: erreur de syntaxe sur ou près de « WHERE » at character 127

    Qu'est ce qui ne va pas dans mon WHERE ?

    Merci par avance pour votre réponse,

    Lamary

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut
    Autant pour moi, j'ai résolu le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $select = $this->select()->setIntegrityCheck(false)
                           ->from(array('f' => 'formation'))
                           ->join(array('cf' => 'competence_formateur'), 'f.id_formation = cf.fk_formation',
                           		array())                  
                           ->joinLeft(array('i' => 'formateur'), 'i.id_formateur = cf.fk_formateur',
                           		array('id_formateur','nom','prenom', 'fonction', 'externe'))
                           ->where('i.externe = false');	
     
            if(isset($rowformation->categorie))
            {			
    			$select->where('f.categorie LIKE "%?%"', $rowformation->categorie);
    		}
    		if(isset($rowformation->code))
    		{
    			$select->where('f.code = ?', $rowformation->code);
    		}
    		if(isset($rowformation->sujet))
    		{
    			$select->where('f.sujet = ?', $rowformation->sujet);
    		}		
    		$select->order('f.categorie');         
     
    		$result = $this->fetchAll($select)->toArray();
    Il ne faut pas mettre de majuscule... et il faut bien mettre en place la jointure, notamment avec le 3eme paramètre !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  2. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 12h21
  3. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07
  4. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo