Bonjour,

Dans mon controller Posts, dans l'index je demande a récupéré toute les données de la table Posts et il ne me renvoie rien, il y a bien le model de présent et dans le Debug SQL je voie bien qu'il est dans la bonne table.

<?php

// Mon controller posts 
    class PostsController extends AppController{

        function index(){
          $datas = $this->Post->find('all');
          debug($datas);
        }
} 
//Model post
<?php
    class Post extends AppModel{

    }

?>

et enfin mon query

Nr  Query   Error   Affected    Num. rows   Took (ms)
1   SELECT `Post`.`id`, `Post`.`title`, `Post`.`slug`, `Post`.`content`, `Post`.`id_author`, `Post`.`id_categorie`, `Post`.`created`, `Post`.`date_edit`, `Post`.`online` FROM `1_dev`.`posts` AS `Post` WHERE 1 = 1

Donc je voulais savoir d'ou pouvais venir ce problème de ne rien afficher.

Merci

37 réponses


zenkiai
Réponse acceptée

En gros si ta meta est en UTF8 comme ceci

<?php echo $this->Html->charset('UTF-8'); ?>.

Tu dois mettre l'interclassement de ta BDD en UTF8_general_ci
sinon tu mets en ISO-8859-1 ton charset

Le debug de ton core est bien à 2 ou 1 ?

Le debug est bien a 2

Tu es sur quel version de cakephp ?

J'ai la version 2.1 de cakephp.

Je tien a ajouter que ce problème ce produit que sur certain controller, j'ai d'autre controller comme celui Users ou il n'y a pas de problème.

Je ne suis pas sur que cela soit le même cas que toi mais essaye :
Lien

C'est une methode brut je vais essayer, on verra bien :/

Cette méthode n'a rien changer :/

Après le <?php, tu n'es pas sensé mettre App::uses('AppController, 'Controller'); ?

Tu veut dire dans le Controller ? si c'est le cas même dans le controller par défaut il n'y est pas et dans mon controller qui marche il n'y est pas non plus.

Depuis la version 2, je mets systématiquement

App::uses('AppController, 'Controller')

dans mes controlleurs et

App::uses('Controller', 'Controller');

dans mon AppController.
Dans mes models, je met ceci

App::uses('AppModel', 'Model');

et

App::uses('Model', 'Model');

dans mon AppModel

Ceci étant dit si cela fonctionne avec certains, il n'y a pas de raison mais cela ne coute rien d'essayer à part du temps...

Donc, j'ai ajouter ce que tu ma dit et rien ne change toujours imposible de voir les informations

Si tu fais un debug dans ta vue et non dans le controller, cela fonctionne-t-il ?
ajoute un

die();

, on ne sait jamais. Une fois je ne voyais pas mon debug, caché derrière une div...

Rien, j'ai déjà tester dans ma vue et rien :/ commence a plus comprendre

Je séche aussi...
C'est le seul controller avec lequel tu as ce problème ?

non tout mes nouveau controller qui étais celui des categories

je ne comprends pas, tous les debug des nouveaux controller ne fonctionnent pas ? Sauf celui des catégories

en faite mon controller categories que j'avais fait après marcher bien, mais quand j'en crée d'autre comme pages, posts, ou autre rien

Tu as execute ta requête générée dans phpmyadmin pour voir si cela te renvoi bien des données?

essaye avec un

debug($datas,false);

Oui, dans phpmyadmin les résultats sont bien présent après la requête

Avec t'on debug, j'obtient mes resultats, mais sans rangement en tableau.

/app/Controller/PostsController.php (line 10) ########## DEBUG ########## array( 'Post' => array( 'id' => '1', 'title' => 'Ma premi?re news', 'slug' => 'ma_premier_new', 'content' => '
Hello
C'est ma premi?re news dans ce site. :)
Greaaat
', 'id_author' => '8', 'id_categorie' => '1', 'created' => '2012-11-01 12:02:27', 'date_edit' => '0000-00-00 00:00:00', 'online' => true ) ) ###########################

Le problème réside alors dans l'encodage html...

oui mais dans les autres controller, il n'y a pas de problème. Le debug normal tout est afficher correctement.

Tes fichiers sont bien tous encodés en UTF-8 sans BOM ?

En gros tu as très pu enregistré tes controllers qui fonctionne avec le debug en UTF-8 sans BOM et ceux qui ne fonctionne pas autrement..
c'est un piste comme une autre, mais vu que le debug($datas,false); fonctionne, c'est une piste....

Mes documents sont bien encoder en UTF8 sans BOM, un print_r donne mieux que le debug, mais une fois dans la vue il n'y a rien qui s'affiche :/ et aussi un set ne renvoie rien a la vue, ( en gros il ne voie rien comme le debug)

dsl je seche....

Merci quand même j'espere qu'il y auras des personnes avec la solution :),

ps: du nouveau je vient de crée un controller avec une base de donnée bidon pour tester et la il me renvoie bien les infos ><' et je suppose que le problème ce produit que sur le controllers posts

modifies ton enregistrement directement en base pour supprimer les accents et ainsi tu pourras tester si ton problème vient bien de la

Cela ne change rien au problème même sans accents, mais ce que je comprend moins c'est quand je fait des controllers avec des grand nom comme ctdetests ( pour essayer de trouver le bug ), il fonctionne sans problème.

Je sais de quoi vient mon problème, quand je rentre des accents dans la table de ma base de donnée, il ne le renvoie pas et affiche une erreur.

Des idées de correction ?

Tu as mis quoi comme charset dans ta meta ? et quel interclassement dans MySql ?

Pour l'interclassement c'est du "latin1_swedish_ci" et site c'est "charset=utf-8"

Le mieux entre les deux c'est l'UTF8 ?

Pour ma part oui, de plus tu as encodé tous tes fichiers en utf8 sans Bom, autant continuer dans ce sens

Oui, c'est sur, je teste et je redit sa :)

Donc après avoir mis tout en UTF-8 et avoir ajouter la ligne

'encoding' => 'utf8'

dans database.php, tout marche.

Merci