TinyButStrong - the PHP Template Engine
Categories > TinyButStrong general (FR) >

Champ non visible

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs

By: nico69
Date: 2014-08-18
Time: 10:26

Champ non visible

Bonjour,

J'ai un petit problème lié à UTF8:

- Ma BDD est en UTF8
- Les champs textes de ma table sont en UTF8
- Mon fichier PHP est en UTF8
- Mon template html est en utf8 et il contient bien <meta http-equiv="content-type" content="text/html; charset=utf-8" />

Je débute mon fichier php ainsi:

include_once('biblio/tbs_class.php');
include_once('biblio/plugins/tbs_plugin_html.php'); // Plug-in for selecting HTML items.
include_once('biblio/sql.php');
$link = mysqli_connect($host,$user,$password,$bdd) or die("Error " . mysqli_error($link));
$mysqli = new mysqli($host,$user,$password,$bdd);
if (mysqli_connect_errno()) {
    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    exit();
}
$mysqli->query("SET NAMES 'utf8'");

Puis:

    $TBS = new clsTinyButStrong;
    $TBS->LoadTemplate('template/mapage.html');
    $TBS->MergeBlock('blk',$link,'SELECT * FROM `ma_table`');
    $TBS->MergeBlock('blk2',$link,'SELECT * FROM `ma_table`');
    $TBS->Show();

Ma table contient:
id_table    nom         adresse
1             dupond     rue de la gare
2             durand      la rue à coté de "là bas"

mon fichier mapage.html

<table>
<tr>
<td>[blk.nom;block=tr]</td><td>[blk.adresse]</td>
</tr>
</table>
<table>
<tr>
<td>nom</td><td><input type="text" name="nom" value="[blk2.nom;block=table]</td>
</tr>
<tr>
<td>adresse</td><td><input type="text" name="adresse" value="[blk2.adresse]</td>
</tr>
</table>

Le premier enregistrement va s'afficher sans problème dans mon td et dans l'input...
Par contre mon deuxième ne s'affiche pas du tout dans les deux cas.
Si j'ajoute strconv=utf8 les deux s'affiches bien dans le td mais dans l'input il s’arrête à la guillemet (non converti en html...)

Je vois pas comment faire.

Merci de m'aider...

PS: Le code HTML est juste pour faire part du problème lié au UTF8..
By: Skrol29
Date: 2014-08-18
Time: 11:11

Re: Champ non visible

Salut,

As-tu essayé
$TBS->LoadTemplate('template/mapage.html', 'UTF-8');

Doc : http://www.tinybutstrong.com/manual.php#php_loadtemplate
By: nico69
Date: 2014-08-18
Time: 11:43

Re: Champ non visible

Oui, et ça ne fonctionne pas mieux.

J'ai aussi fait:

    $resultat = $TBS->MergeBlock('blk',$link,'SELECT * FROM `ma_table`');
    var_export($resultat);
    exit;

Et tous les caractères accentués ou "ç" apparaissent "Derri�re"
By: Skrol29
Date: 2014-08-18
Time: 12:49

Re: Champ non visible

Ta conf UTF-8 est complètement traditionnelle (Bdd + script PHP + template), c'est même le cas de ce forum.
Mais il semble que ta page HTML finale contient des caractère Latin2 au lieu d'UTF-8.

Vérifie ton chaînage UTF-8.
En particulier vérifie en appliquant un $mysqli->set_charset("utf8");

Voir explications :
http://www.gaudry.be/ast-rf-431.html
et là:
http://php.net/manual/fr/mysqli.set-charset.php
By: nico69
Date: 2014-08-18
Time: 16:49

Re: Champ non visible

Bon, des fois je me sens très bête...

Au début de mon script, je fais deux connexion:
- Une en procédurale $link
- Une en poo $mysqli

J'ai bien fait: $mysqli->query("SET NAMES 'utf8'");
mais pas pour le $link.... et comme mon merge se servait du procédural... ben forcément ça marche pô...

Donc pourquoi faire simple quand on peut faire compliqué?????

J'ai viré le procédural, et mon merge je le fait avec le $mysqli et la miracle... mes accents apparaissent!!!

Désolé pour le dérangement

Bonne continuation...

PS: les videos mise en ligne sur Youtube (Skrol29) sont d'un bon intérêt délirant ;-) Bravo!!!
By: Skrol29
Date: 2014-08-18
Time: 18:20

Re: Champ non visible

> PS: les videos mise en ligne sur Youtube (Skrol29) sont d'un bon intérêt délirant ;-) Bravo!!!

Merci, tout le monde n'avais pas capté leur humour à l'époque.