Une petite pause histoire d'être rassurée sur un point.
Le framework fonctionne avec des vues (en .php) qui sont appellée dans un template (en .php). C'est ce ensemble qui forme la page HTML ?
Une petite pause histoire d'être rassurée sur un point.
Le framework fonctionne avec des vues (en .php) qui sont appellée dans un template (en .php). C'est ce ensemble qui forme la page HTML ?
Pour expliquer globalement: l'html est un meta language d'affichage
On peut l'utiliser dans plusieurs langages dont le php pour l'envoyer au navigateur qui saura comment l'afficher
Pour revenir au framework
partie model (répertoire model)
- on fait les requetes en base de données
partie module
fichier main.php
- ici c'est le controlleur/chef d'orchestre : où l'on fait appel à la couche model pour interagir avec les données, et l'on invoque des objets vues auquelles ont assigne des variables pour enrichir la sortie
répertoire view
- ici on stoque les "vues" qui sont des pages mixtes: contenant html et php qui servent à afficher à l'écran
le repertoire layout
- contient le/les templates généraux du site permettant d'organiser plus facilement ses sites web
Oui c'est la même page.
En local j'ai créé un nouvel enregistrement (postes/view/new.php) en renseignant les champs avec les caractères accentués. C'est parti en base en remplaçant les 'é' par 'é'. Juste juste ce qu'il me faut.
Chez l'hébergeur je prend le même formulaire, je rentre les même infos, je valide et les champs contenant les accents de se retrouvent pas dans ma table. Les champs qui n'en comportent pas sont bien remplis.
Ca me rend dingue tout ca!
L'hébergeur me fait comprendre que le serveur est sous ISO. Ça a une incidence?
oui si le serveur est en iso et le site en utf-8 ça peut gener
vous n'avez pas répondu à mes questions concernant l'affichage des erreurs :_
Vous pouvez poster la méthode processSave du formulaire en question, on va ajouter des elements pour debuger
note: vous avez bien passé votre site en mode dev : on va utiliser la barre de debug
Non je n'ai pas d'erreur qui apparait. Concernant l'installation linux je ne peux pas dire car moi je n'ai rien installé. sur mon PC c'est windows, et c'est l'hébergeur qui est sous linux.vous n'avez pas répondu à mes questions concernant l'affichage des erreurs :_
Bonjour bonjour à tous,
Nouvelle journée, puisse t-elle être fructueuse!
Voici la méthode procesSave() de mon module 'postes'. Le site est en mode 'dev' et la barre de debug présente.
J'ai encore fais un test ce matin(en création:new.php, en modification:edit.php) et c'est le même comportement. Lorsqu'il y a un caractère spécial dans les champs du formulaire, les données ne vont pas en BD.
Code php : 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
24
25
26
27
28
29
30
31
32
33
34 private function processSave(){ if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas return null; } $oPluginXsrf=new plugin_xsrf(); if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide return array('token'=>$oPluginXsrf->getMessage() ); } $iId=_root::getParam('id',null); if($iId==null){ $oPostes=new row_postes; }else{ $oPostes=model_postes::getInstance()->findById( _root::getParam('id',null) ); } $tColumn=array('reference','intitule','type_contrat','situation','dimension','activite','finalite','profil_requis','statut_poste_id','direction_id'); foreach($tColumn as $sColumn){ $oPostes->$sColumn=_root::getParam($sColumn,null) ; } //$oPostes->date_publication = date("Y-m-d"); if($oPostes->date_publication==null){ $oPostes->date_publication = date("Y-m-d"); } if($oPostes->save()){ //une fois enregistre on redirige (vers la page liste) _root::redirect('postes::list'); }else{ return $oPostes->getListError(); } }
Essayez: sur le serveur linux de passer l'encodage en ISO au lieu d'utf8 pour voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [encodage] ;default charset, used by plugin_html::encode($text) charset=ISO-8859-1
AUtre question: quand vous allez sur le site: dans votre navigateur, quel encodage est détecté ?
Dans chrome: menu > plus d'outils > encodage
1- j'ai remis le charset en iso dans le fichier site.ini.php
2-l'encodage qui est détecté dans mon navigateur est 'Occident (windows 1252)'
3- Voici la réponse que j'ai reçu ce matin du support de l'hébergeur:Le serveur est en iso. ça signifie que l'encodage des pages de même que le système est en iso.
Vos pages sont en ascii, donc en iso, mais vous avez indiqué dans l'en-tête des pages utf-8.
Si vous voulez tout passer en utf-8, il vous faut convertir vos pages ascii en utf-8, via votre éditeur de texte. Puis ensuite mettre si ce n'est pas déjà fait, le fichier .htaccess.
Pour la base de données, elle est indépendante de vos pages, mais pour ne pas avoir de problème doit avoir le même encodage que vos pages. Cela se fait lors de la création. De notre côté il n'y a rien. Vous choisissez utf-8 lorsque vous créez une table.
Et donc en testant en ISO ? et en modifiant également le layout
idem pour le fichier conf/connexion.ini.php
Ici donc le problème n'est pas lié à linux/windows mais à votre hebergeur
Je Je crois qu'il y a un problème à l'initialisation de la connexion avec la BD quand c'est iso:
En mettent UTF8 dans connexion.ini.php l'erreur a disparu. J'effectue des test pour voir si les problèmes persistentSQLSTATE[HY000] [2019] Can't initialize character set ISO-8859-1 (path: /usr/share/mysql/charsets/)
#0 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/sgbd/pdo/sgbd_pdo_mysql.php(57): PDO->__construct('mysql:dbname=tm...', 'tmgrecrutement', 'xxx')
#1 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/abstract/abstract_sgbd_pdo.php(245): sgbd_pdo_mysql->connect()
#2 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/abstract/abstract_sgbd_pdo.php(150): abstract_sgbd_pdo->query('SELECT * FROM d...', Array)
#3 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/abstract/abstract_model.php(134): abstract_sgbd_pdo->findMany(Array, 'row_directions')
#4 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/model/model_directions.php(25): abstract_model->findMany('SELECT * FROM d...')
#5 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/model/model_directions.php(30): model_directions->findAll()
#6 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/module/postes/main.php(55): model_directions->getSelect()
#7 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/class_root.php(263): module_postes->_list()
#8 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/public/index.php(47): _root->run()
#9 {main}
Detail:
#0 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/sgbd/pdo/sgbd_pdo_mysql.php (57)
PDO -> __construct( 'mysql:dbname=tmgrecrutement0;host=localhost;charset=ISO-8859-1;' , 'tmgrecrutement' , 'xxxxx' )
#1 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/abstract/abstract_sgbd_pdo.php (245)
sgbd_pdo_mysql -> connect( )
#2 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/abstract/abstract_sgbd_pdo.php (150)
abstract_sgbd_pdo -> query( 'SELECT * FROM directions' , Array ( ) )
#3 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/abstract/abstract_model.php (134)
abstract_sgbd_pdo -> findMany( Array ( [0] => SELECT * FROM directions ) , 'row_directions' )
#4 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/model/model_directions.php (25)
abstract_model -> findMany( 'SELECT * FROM directions' )
#5 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/model/model_directions.php (30)
model_directions -> findAll( )
#6 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/module/postes/main.php (55)
model_directions -> getSelect( )
#7 /home/sites/hebfree.org/tmgrecrutement/public_html/framework/class_root.php (263)
module_postes -> _list( )
#8 /home/sites/hebfree.org/tmgrecrutement/public_html/e-cand/public/index.php (47)
_root -> run( )
#9 {main}
Fichier : /home/sites/hebfree.org/tmgrecrutement/public_html/framework/sgbd/pdo/sgbd_pdo_mysql.php ligne 57
Message : SQLSTATE[HY000] [2019] Can't initialize character set ISO-8859-1 (path: /usr/share/mysql/charsets/)
Et en supprimant la partie charset ?
Apparemment plus de souci pour afficher les données qui sont dans la base. Si j'écris un 'é' dans le formulaire il se retrouve transformé en 'é' dans la BD.
Note: Même en enlevant le charset du fichier de connexion c'est pareil.
Donc la c'est bon ?
Hmmm, oui je crois bien que c'est bon.
Merci pour tout ce temps consacré à mes blocages.
A bientôt.
C'est normal, ça fait parti du pack mkframework
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager