2009-07-06 1 views
0

J'utilise JQuery et CakePHP pour mon application. J'ai une table Attributes(id,form_id,label,type)Requête à utiliser dans les conditions, lorsque l'espace entre la valeur

Dans ce tableau, j'ai une entrée comme

1 1 First name Text 
2 1 Lastname Text 

J'ai écrit une requête CakePHP pour récupérer le id donné la form_id et la label

$attri = $this->Attribute->find('all', array(
    'fields'=> array('Attribute.id'), 
    'conditions' => array(
     'Attribute.form_id' => $id, 
     'Attribute.label' => $key 
    ) 
)); 

$key est mon label et $id est mon form_id. Cependant, puisque le prénom inclut l'espace entre les deux, les conditions ne fonctionnaient pas bien, mais cela fonctionne pour Lastname car il n'y avait pas d'espace entre les deux. Comment puis-je résoudre ce problème?

Éditer:

J'utilise la base de données MySQL. L'utilisateur peut conserver n'importe quel nom de champ. J'ai obtenu les paramètres clés de $ d'un formulaire en utilisant $ _POST, par exemple:

foreach ($_POST as $key => $value): 
echo $key; //displays First name correctly. 

Mais quand j'utilise $ clé dans les conditions, que si aucun espace sont entre l'étiquette qu'il accepte, retourne l'attribut id, sinon rien n'est retourné.

J'ai même essayé d'utiliser "$ key", mais ça ne marche pas non plus.

+0

Pourquoi votre colonne contient-elle un espace? quelle base de données utilisez-vous? je suggère de mettre un trait de soulignement entre first_name ou en le changeant en prénom – jimiyash

+0

Je ne vois pas pourquoi un espace dans les conditions ne fonctionnerait pas .. D'où obtenez-vous vos paramètres? Sont-ils encodés? –

+0

J'utilise la base de données MYSQl. L'utilisateur peut conserver n'importe quel nom de champ. Les paramètres clé $ i got it former un formulaire en utilisant _POST $ par exemple foreach ($ _POST as $ key => $ value): echo $ key; // affiche d'abord le nom correctement. Mais si j'ai utilisé $ key dans les conditions seulement si aucun espace entre l'étiquette qu'il accepte et retourner l'attribut id.Else rien n'est retourné .. – useranon

Répondre

0

Le bogue doit se trouver ailleurs dans votre code. Il est parfaitement acceptable d'avoir des espaces dans les valeurs que vous utilisez pour les conditions. Voir this page in the CakePHP book pour un exemple. CakePHP échappe automatiquement les valeurs pour vous afin qu'ils fonctionnent, même avec des espaces. Jetez un oeil à votre modèle d'attribut et voyez ce qui se passe dans les rappels beforeFind ou afterFind.

Questions connexes