Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-10-2010 09:43:33

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

[RESOLU]Erreur lors d'une requete

Bonjour,
je n'arrive pas a effectuer cette requête zend affiche un application error sans plus de détails alors que les erreurs sont affichées

Code:

SELECT *
      FROM tickets
      LEFT JOIN users_has_tickets
      ON tickets.id = users_has_tickets.tickets_id
      WHERE (users_has_tickets.users_login = "admin" AND tickets.type = "Ticket"||"ADM")
      OR (tickets.users_login = "admin" AND tickets.type = "Ticket")
      ORDER BY tickets.date ASC

voila a quoi ressemble mon code actuellement

Code:

$result = $this->fetchAll($this
                                ->select()
                                ->from('tickets')
                                ->joinLeft('users_has_tickets', 'tickets.id = users_has_tickets.tickets_id')
                                ->where('tickets.type = "Ticket"||"ADM"')
                                ->where('users_has_tickets.users_login = ?', $login)
                                ->orWhere('tickets.users_login = ?', $login)
                                ->where('tickets.type = "Ticket"')
                                ->order($order . " " . $met)
        );

le problème viens du de la ligne orWhere et du left join (quand je met les ligne en commentaire ma requête marche)

Je ne trouve pas mon erreur
Merci d'avance

EDIT: Solution pour ceux qui auraient le meme probleme:
$result = $this->fetchAll($this
                                ->select()->setIntegrityCheck(false) //methode a appeler
                                ->from('tickets')
                                ->joinLeft('users_has_tickets', 'tickets.id = users_has_tickets.tickets_id')
                                ->where('tickets.type = "Ticket"||"ADM"')
                                ->where('users_has_tickets.users_login = ?', $login)
                                ->orWhere('tickets.users_login = ?', $login)
                                ->where('tickets.type = "Ticket"')
                                ->order($order . " " . $met)
        );

Dernière modification par Massou (02-11-2010 10:24:23)

Hors ligne

 

#2 29-10-2010 10:18:01

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [RESOLU]Erreur lors d'une requete

Salut,

ta requête semble correcte sauf au niveau de la dernière clause where où j'enlèverai le AND.
Il se met automatiquement donc tu dois avoir un doublon.

Peux-tu mettre des parenthèses dans ta requête pour bien voir ce que tu veux faire avec ton OR.

Affiche ta requête pour voir.

Dernière modification par Godzinho (29-10-2010 10:19:08)

Hors ligne

 

#3 29-10-2010 10:25:21

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

Re: [RESOLU]Erreur lors d'une requete

En effet erreur inattention de ma part.
Cependant ma requête ne marche toujours pas.
pas j’édite mon premier post affin de la corriger (dans mon code aussi)

Dernière modification par Massou (29-10-2010 10:28:00)

Hors ligne

 

#4 29-10-2010 10:36:28

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

Re: [RESOLU]Erreur lors d'une requete

Ma requette dans phpmyadmin:

Code:

SELECT *
FROM tickets
LEFT JOIN users_has_tickets ON tickets.id = users_has_tickets.tickets_id
WHERE (
users_has_tickets.users_login = "admin"
AND tickets.type = "Ticket" || "ADM"
)
OR (
tickets.users_login = "admin"
AND tickets.type = "Ticket"
)
ORDER BY tickets.date ASC

avec ou sans parenthèses le résultat est le même

un screenshot :
http://img844.imageshack.us/img844/9931/sanstitre1er.jpg

Hors ligne

 

#5 29-10-2010 11:18:19

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [RESOLU]Erreur lors d'une requete

Je ne peux voir l'image que tu as mise.

Sinon, pour la requête, je pense qu'il faut que tu fasses comme sa :

Code:

$this
                                ->select()
                                ->from('tickets')
                                ->joinLeft('users_has_tickets', 'tickets.id = users_has_tickets.tickets_id')
                                ->where('tickets.type = "Ticket"||"ADM" AND 'users_has_tickets.users_login = $login')
                                ->orWhere('tickets.users_login = $login AND 'tickets.type = "Ticket"')
                                ->order($order . " " . $met)

Hors ligne

 

#6 29-10-2010 11:41:47

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

Re: [RESOLU]Erreur lors d'une requete

merci mais y'a des erreurs de parsing dans ce que tu m'a envoyé.
et même en concaténant les chaines toujours la même erreur.

Hors ligne

 

#7 29-10-2010 12:06:05

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [RESOLU]Erreur lors d'une requete

Fais un affichage de ta requête pour voir ce qui est généré.
Il doit manquer des guillemets ou autres dans ce que je t'ai mis.

Hors ligne

 

#8 29-10-2010 12:14:50

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

Re: [RESOLU]Erreur lors d'une requete

en fait je peut même pas afficher la requête.
Zend plante dans une des méthodes lors de la génération de la requête.

Hors ligne

 

#9 29-10-2010 12:20:54

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [RESOLU]Erreur lors d'une requete

Si tu as repris exactement ce que je t'ai mis c'est normal que sa plante.
Il y a des guillemets mal placés ou manquant.

Tu les as enlevés ou ajoutés ?

Hors ligne

 

#10 29-10-2010 13:37:05

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

Re: [RESOLU]Erreur lors d'une requete

ben j'ai modifie avec de la concatenation ca ne marche toujours pas

Code:

$this
                                ->select()
                                ->from('tickets')
                                ->joinLeft('users_has_tickets', 'tickets.id = users_has_tickets.tickets_id')
                                ->where('tickets.type = "Ticket"||"ADM" AND users_has_tickets.users_login =' . $login)
                                ->orWhere('tickets.users_login =' . $login . 'AND tickets.type = "Ticket"')
                                ->order($order . ' ' . $met)

Hors ligne

 

#11 02-11-2010 10:09:26

Massou
Nouveau membre
Date d'inscription: 29-10-2010
Messages: 7

Re: [RESOLU]Erreur lors d'une requete

personne n'aurait une solution svp?

Edit apres multiple debugs j'ai le message d'erreut suivant :

Code:

Warning: Select query cannot join with another table in C:\Program Files (x86)\wamp\www\test\library\Zend\Db\Select.php on line 1345

Edit 2: probleme resolu par contre je ne sais aps pourquoi si quelqu'un sait a quoi sert cette methode: setIntegrityCheck(false)

je suis prenneur

Dernière modification par Massou (02-11-2010 10:25:29)

Hors ligne

 

#12 02-11-2010 11:09:19

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [RESOLU]Erreur lors d'une requete

D'où venait l'erreur alors.
Qu'as-tu changé ?

Hors ligne

 

#13 02-11-2010 17:30:37

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [RESOLU]Erreur lors d'une requete

L'objet Zend_Db_Table_Select est destiné à sélectionner des données sur une table précise. Des jointures peuvent être faites, mais il n'est pas possible de sélectionner des colonnes ne faisant pas partie de la table sous-jacente. Cependant, ceci aurait pu être utile dans certains cas, et l'objet Zend_Db_Table_Select possède une clause spéciale déverrouillant cette limitation. Passez la valeur FALSE à sa méthode setIntegrityCheck. Il est alors possible de sélectionner des colonnes hors table. Attention toutefois, l'objet row/rowset résultant sera verrouillé. Impossible d'y appeler save(), delete() ou même d'affecter une valeur à certains de ses champs. Une exception sera systématiquement levée.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages