Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Fonctionnement _ probleme charset latin 1 et utf8

Écrit par : taiko 20 Jan 2018, 14:59

salut

je rencontre un problème suite à la mise a jour de php 5.6 par un developpeur qui m'a laissé tombé et laissé le site en plan car il ne voulait pas terminé la mise a jour soit disant que c'était trop long, donc je me retrouve avec des modifs faites a moitié et des problèmes d'accent dans l'admin alors j'en ai réglé quelques uns dans le fichier french en remplaçant les é, è ect... apr leur valeur html ça fonctionne par contre ce qui est en base de donnée pour les fiches produits j'ai essayé de modifié le fichier de la base et l'importer a nouveau pour modifié tous les accents d'un coup et la beau message d'erreur suivant :

une idée d'ou chercher y a un conflit, toutes les tables de la bases sont en iso, le charset des fichiers toujours en iso aussi je pense.


1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

SELECT cat.categories_id FROM categories as cat, categories_description as des WHERE cat.categories_id = des.categories_id AND des.language_id = 1 AND cat.parent_id = 405 AND des.categories_name like 'Sauna ext�rieur infrarouge'

j'ai modifié l'interclassement de la base mais ça change rien

merci


Écrit par : Bonbec 22 Jan 2018, 15:51

Toucher aux BDD n'est pas mon fort wacko.gif
Alors j'ai laissé la BDD comme elle était et j'ai modifié les scripts pour transformer en utf-8 et les pages d'affichages sont sauvegardées en UTF-8 sans BOM.
Cela fonctionne, mais c'est pas très propre comme solution.

Écrit par : Havock 29 Jan 2018, 09:09

Hello gentlemen,

Les questions de charset sont assez pénibles quand on doit switcher de l'un à l'autre et c'est encore plus galère quand on a des mix de charset (entre la connexion à la base, les structures des tables et les données présentes dans les tables blink.gif blink.gif blink.gif ).

Regarde ici https://stackoverflow.com/questions/3029321/troubleshooting-illegal-mix-of-collations-error-in-mysql ça pourra peut-être t'aider.


Écrit par : taiko 30 Jan 2018, 20:43

Salut

Merci a vous deux.
Je viens de voir vos messages.
Cet après midi j ai passe l aprem a essayer de retablir la base donnee avec les accents.
J ai efface les tables products et toutes celles qui y sont rattachés et j ai reimporte la base avec les accents et j ai toujours le même problème sur le site avec des lettres a la place des accents.
Je sais pas exactement ce qu il a modifié mais c est la mierda.
Il y a aussi un probleme de language si je clique sur le drapeau anglais ca passe en anglais et apres des que je clic sur un lien tius les liens renvois en français, une misère.

Une idée d ou chercher ?

Que veut tu dires fred pour sauvegarde en utf8 sans bom ?

Merci



Écrit par : Bonbec 31 Jan 2018, 01:37

Ton site actuel est déclaré en iso-8859-1 et l'affichage des accents foire. Par contre si je passe l'affichage de mon navigateur en unicode, c'est tout bon. Donc on va reprendre à zéro car à mon avis il y a un mélange d'encodage :

1) ta base de donnée est en latin1_swedish_ci ou en utf8_general_ci ?

2) ton charset dans le fichier de langue catalog/includes/languages/french est define('CHARSET', 'utf-8'); ou define('CHARSET', 'iso-8859-1'); ?



Écrit par : taiko 1 Mar 2018, 18:46

salut bonbec


réponse tardive très occupé et je viens de récupérer le site car j'attendais de régler le problème avec le développeur.
donc mon french est comme ça

@setlocale(LC_TIME, 'fr_FR.ISO_8859-1');

ma base doit être en latin1 swedish

et par contre je pense qu'il a ajouté dans le application top ça qui me plante mes produits si je le retire

<?php
header('Content-Type: text/html; charset=ISO-8859-1'); // écrase l'entête utf-8 envoyé par php
ini_set( 'default_charset', 'ISO-8859-1' );

et aussi j'ai la perte de la langue si je clique sur le drapeau anglais c'est en anglais et des que je reclique un lien c'est redirigé en français

merci



Écrit par : Bonbec 2 Mar 2018, 08:41

Bonjour,
On va d'abord s'occuper de tes problèmes d'accents qui ne semblent figurer en masse que dans l'affichage via la page product_info.php
Peux-tu me copier les lignes qui servent à afficher le contenu de $product_info['products_description'] ?

Écrit par : taiko 7 Mar 2018, 17:35

salut

alors j'ai regardé la base de donnée, toutes les tables sont en latin swedish ci mais; la structure en latin 1 swedish ci aussi, interclassement aussi mais si je clique sur base de donnée j'ai utf8 et pas de privilège pour modifier, bizarre non.

ci joint capture écran.

<a href="http://www.casimages.com/i/180307053845619508.jpg.html" title="base de donnee latin1_swedish_ci">Lien vers mon image</a>

<a href="http://www.casimages.com/i/180307053845677525.jpg.html" title="interclassement">Lien vers mon image</a>

<a href="http://www.casimages.com/i/180307053845930929.jpg.html" title="interclassement utf8">Lien vers mon image</a>

et voici le product info :


Code
<?php

  } else {

    $product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");

    $product_info = tep_db_fetch_array($product_info_query);



    tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$_GET['products_id'] . "' and language_id = '" . (int)$languages_id . "'");



    if ($new_price = tep_get_products_special_price($product_info['products_id'])) {

      $products_price = '<s>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>';

      $img_promotion_product = tep_image_button('icon_promotion.gif', TEXT_ICON_SPECIAL_PRODUCT);

      $percent = - (number_format(100 - (($new_price / $product_info['products_price']) * 100))) . ' %';

      $percent_text = TEXT_PERCENT;

      } else {

      $products_price = $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id']));

    }



    if (tep_not_null($product_info['products_model'])) {

      $products_name = $product_info['products_name'] . '<br><span class="smallText">[' . $product_info['products_model'] . ']</span>';

    } else {

      $products_name = $product_info['products_name'];

    }

?>

      <tr>

       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

          <td valign="top"><h1 class="pageHeading" ><?php echo $products_name; ?></h1></td>

            <td width="25%" align="right" valign="top" class="pageHeading"><table width="100%"  border="0" cellspacing="0" cellpadding="0">

              <tr>

                <td><div align="center"><?php echo $img_promotion_product; ?></div></td>

              </tr>

              <tr>

                <td><div align="center"><span class="productSpecialPercent"><?php echo $percent_text; ?><?php echo $percent; ?></span></div></td>

              </tr>

            </table></td>

            <td width="20%" align="right" valign="top" class="pageHeading"><h1><?php echo $products_price; ?></h1></td></tr>

       </table></td>

     </tr>

    <tr>

      <td><table border="0" width="100%" cellspacing="0" cellpadding="0">

        <tr>

          <td class="main" valign="top"><b>Quantité disponible : <?php echo $product_info['products_quantity']; ?></b></td>

        </tr>

      </table></td>

    </tr>

      <tr>

        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

      </tr>

      <tr>

        <td class="main">

<?php

    if (tep_not_null($product_info['products_image'])) {

?>

          <table border="0" cellspacing="0" cellpadding="0" align="right">

            <tr>

              <td align="center" class="smallText">

<!-- // Modif de popup image //-->

<script language="javascript" type="text/javascript"><!--



function popupWindow(url) {



window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,res
izable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,le
ft=150')

}



function popupXL2(of) {



var xlContStyle = document.getElementById('xlCont').style

xlContStyle.display='block';

if (of && document.getElementById('xlImg').height > 400) {

with (xlContStyle) {

  height='400px';

  width=(parseInt(document.getElementById('xlImg').width) + 20) + 'px';

  overflow='auto'

}

}

}



//--></script>

<style type="text/css">

<!--

#xlCont {

display:none;

top:120px;

right:170px;

position:absolute;

background:white;  

border:1px solid #B9BAC1;

z-index:200

}

-->

</style>



<?php

echo '<a href="java script:popupXL2(false);">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], addslashes($product_info['products_name']), SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>

<div id="xlCont" style="display:none"><a href="java script:void(0)" onClick="document.getElementById('xlCont').style.display='none'">

<?php  

    echo tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], $width, $height, 'class="infoBox_image" id="xlImg"');

?>

</a></div>

<?php /* <script language="javascript"><!--

document.write('<?php echo '<a href="java script:popupWindow(\\\'' . tep_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $product_info['products_id']) . '\\\')">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], addslashes($product_info['products_name']), SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>');

//--></script> */  ?>

<!-- // Fin Modif de popup image //-->

<noscript>

<?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>

</noscript>

<br><br>

  <?php

//affiliate build a link begin

        if (tep_session_is_registered('affiliate_id')) {

            ?>

         <?php echo '<a href="' . tep_href_link(FILENAME_AFFILIATE_BANNERS_BUILD, 'individual_banner_id=' . $product_info['products_id']) .'" target="_self">' . tep_image('includes/languages/english/images/buttons/button_affiliate_build_a_link.gif', 'Make a link') . ' </a>'; ?><?php

        }

//affiliate build a link begin

         ?>

              </td>

            </tr>

          </table>

<?php

    }

?>

          <p><?php echo stripslashes($product_info['products_description']); ?></p>

<?php

    $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$_GET['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'");

    $products_attributes = tep_db_fetch_array($products_attributes_query);

    if ($products_attributes['total'] > 0) {

?>

          <table border="0" cellspacing="0" cellpadding="0">

            <tr>

              <td class="main" colspan="2"><?php echo TEXT_PRODUCT_OPTIONS; ?></td>

            </tr>

<?php

      $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$_GET['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");

      while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {

        $products_options_array = array();

        $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$_GET['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");

        while ($products_options = tep_db_fetch_array($products_options_query)) {

          $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);

          if ($products_options['options_values_price'] != '0' && tep_session_is_registered('customer_id')) {



            $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';

          }

        }



        if (isset($cart->contents[$_GET['products_id']]['attributes'][$products_options_name['products_options_id']])) {

          $selected_attribute = $cart->contents[$_GET['products_id']]['attributes'][$products_options_name['products_options_id']];

        } else {

          $selected_attribute = false;

        }

?>

            <tr>

              <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>

              <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></td>

            </tr>

<?php

      }

?>

          </table>

<?php

    }

?>

        </td>

      </tr>

      <tr>

        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

      </tr>



Écrit par : taiko 7 Mar 2018, 18:21

re

en fait c'est tous ce qui est en base de donnée ou les accents ne fonctionnent pas.

dans l'admin si j'édite un produit avec les accents qui sont bien présent quand je clique sur mise a jour j'ai une page blanche mais la mise a jour est faite je pense car si je met pas d'accent alors j'ai le mot sans accent qui apparaît.

dur dur... je pense que si j'ai l'update qui fonctionne bien avec le renvoit vers la page du produit mis ajour comme d'habitude ça marchera mais je sais pas pourquoi l'update ne fonctionne pas bien.

certainement une fonction dépréciée avec la version php 5.6 maintenant non ?

merci en tout cas

a++

Écrit par : Bonbec 8 Mar 2018, 01:36

Re,

Essaye de modifier ta ligne :

Code
<p><?php echo stripslashes($product_info['products_description']); ?></p>

en :
Code
<p><?php echo stripslashes(utf8_decode($product_info['products_description'])); ?></p>



Écrit par : taiko 8 Mar 2018, 14:09

Salut

Merci je vais tester mais pour le moment a faire la modif en base de donnees hier j ai pas fais gaffe mais je me retrouve avec une page blanche maintenant et je ne sais pas d ou ça vient.

J ai modifier côté admin le chemin des sessions et chemin du cache car ca ne correspondait plus a mon chemin actuel du configure.
Puis modifier aussi le fichier header tag ou il y avait des apostrophes.
Toys fonctionnait avant ces modif alors j ai tous remis comme avant renvoyé les fichiers header tag et remis les chemins cotes admin a l identique d avant mais ca ne fonctionne plus et biensur je voulais remettre la base en sauvegarde un jour avant et aucune sauvegarde sur ovh bizarre tout de même.

Je vais voir ce que je peux faire cet aprem et je te dis ce qu il en est.

Merci

Écrit par : taiko 8 Mar 2018, 14:13

J ai vu aussi que ovh faisait des transferts hier et c est bizarre tout de meme que mon site fonctionnait alors que le chemin du configure est pas celui du realpath, franchement avec tout les changements de filer de ovh et leur redirection je pense que y en a marre...

Écrit par : Bonbec 8 Mar 2018, 16:40

Re,
Oui, ton site est en carafe ...
Pour éviter cela, tu peux :
- soit bosser en local sur ton ordi pour faire les essais. Mais c'est très rarement la même config que le serveur final
- soit dupliquer ton site dans un sous répertoire et faire tes essais sur ce site dupliqué ...

Pour ta page "blanche" :
- soit c'est un mauvais chemin pour ton define('DIR_FS_CATALOG', ...
- soit une erreur de syntaxe et ton serveur n'affiche pas les messages d'erreur
Je penche plus pour l'erreur de syntaxe vu le code source de ta page "blanche" générée :

Code
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="LTR" lang="fr"<head>



Écrit par : taiko 8 Mar 2018, 17:40

salut

oui penses aussi a une erreur de syntaxe ou peut etre un fichier envoyé qui n'est pas a sa place, aussi en connexion ftp, j'ai ce message a la connexion.

Statut : Séquence de caractères reçus invalide, désactivation de UTF-8. Sélectionnez l'option UTF-8 dans le Gestionnaire de Sites pour forcer l'utilisation de l'UTF-8.

???

je cherche je cherche .

merci

Écrit par : taiko 8 Mar 2018, 18:01

re

bon alors la page blanche c'est réglé c'était mon fichier header tag du french en erreur j'ai envoyé celui de la racine a la place.

bon je vais changer donc l'utf8 comme tu m'a dis dans le product info pour voir maintenant.

a tte

merci

Écrit par : Bonbec 8 Mar 2018, 18:20

Re,

On dirait que çà fonctionne, tu as bien les accents dans la description maintenant smile.gif

Reste plus que la perte de la langue anglaise, non ?

Écrit par : taiko 8 Mar 2018, 18:55

re

alors nickel bonbec merci les accents sont désormais présent dans le product info, apparemment donc maintenant il faut faire la même chose pour le fichier catégorie je suppose car les accent sont pas présent dans les catégories et dans les description des catégories non plus.



Écrit par : taiko 8 Mar 2018, 18:58

re

et puis langue anglaise oui et je sais pas d'ou sa sort ça non plus j'ai des string'''''' dans la boxe notification et j'ai regardé la boxe elle a l'air ok. ça doit se trouver en base de donnée quelque part.

mais bon y a encore plein d'autre truc lol !!!! entre les sessions l'ajout au panier vide etc... ça me paraît compliqué tout ça.


Écrit par : Bonbec 9 Mar 2018, 08:53

Re,

Avant de poursuivre plus loin, je t'informe que sur mon ordinateur portable, toutes tes mentions en jaune sont quasi illisibles.
Je pense que je ne dois pas être le seul dans ce cas.

Écrit par : taiko 9 Mar 2018, 11:27

salut

oui merci du conseil j'avais remarqué je comptais le faire mais avant comme tu le sais y a pas mal de choses plus importantes a régler. je vais m'en occuper tout à l'heure dès que j'ai un moment.

j'ai trouvé pas mal de chose sur les paniers et le utf8 etc... mais y a tellement de choses qui se disent que je sais plus si je dois modifier ou pas car ça parle pas mal du passage en php 5.4 et moi je suis en 5.6 ceci dit ovh passe au php 7 d'ici fin d'année donc rebelotte àprès.

quelle couleur tu metterais toi pour que ce soit bien visible, le noir c'est pas terrible, le rouge un peu agressif non.





Écrit par : taiko 9 Mar 2018, 11:35

Re

Penses tu que si je mets ces deux lignes ça règle le problème d accents sur les categories et autres pages html ? J ai trouvé ça sur openclassroom et ça avait l air de fonctionné en php 5.6 avec ovh.

A tester donc.

CODE
nce

header('Content-Type: text/html; charset=ISO-8859-1'); // écrase l'entête utf-8 envoyé par php
ini_set( 'default_charset', 'ISO-8859-1' );

Écrit par : Bonbec 9 Mar 2018, 13:53

Re,

Citation (taiko @ 9 Mar 2018, 11:27) *
... quelle couleur tu metterais toi pour que ce soit bien visible, le noir c'est pas terrible, le rouge un peu agressif non.

Vu la couleur de tes boutons, il semble que le marron tranche bien sur le fond gris. A tester ?

Citation (taiko @ 9 Mar 2018, 11:35) *
... Penses tu que si je mets ces deux lignes ça règle le problème d accents sur les categories et autres pages html ? J ai trouvé ça sur openclassroom et ça avait l air de fonctionné en php 5.6 avec ovh.
A tester donc.
CODE
nce
header('Content-Type: text/html; charset=ISO-8859-1'); // écrase l'entête utf-8 envoyé par php
ini_set( 'default_charset', 'ISO-8859-1' );

Sauf erreur de ma part, c'est juste pour le texte codé en dur dans une page.
Pour la BDD, est-ce que tu as des instructions de charset dans le code du fichier catalog/includes/functions/database.php ?

Écrit par : taiko 9 Mar 2018, 14:38

salut

alors j'avais regardé ça la dernière fois je sais qu'il y a avait touché je crois si je me souviens bien que c'était en iso je regarde ça et te dis.

merci

Écrit par : taiko 9 Mar 2018, 15:06

re

bon ben il n' y a pas de déclaration de charset dans le database, maintenant je sais plus en quel charset je suis sur le site.

la base est en latin1 swedish ci, le product info on a forcer donc le utf8 c'est ça ?

et donc tous les fichiers au début il y a un appel de html_param définit dans le fichier french qui inclut cette ligne meta au début du fichier:

CODE
<meta http-equiv="Content-Type" content="text/html; charset=CHARSET">


apparement ça devrait être ça plutôt non

CODE
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">


ou
CODE
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">


Je sais plus maintenant si je dois être en utf8 ou en iso...




Écrit par : Bonbec 9 Mar 2018, 15:21

Re,

Citation
<meta http-equiv="Content-Type" content="text/html; charset=CHARSET">

Le CHARSET (en majuscule) ne doit pas apparaître comme cela.
Cela veut dire qu'il n'est pas défini dans un DEFINE que tu dois trouver dans catalog/languages/french.php et catalog/languages/english.php
Sur mon site j'ai çà pour french.php (je suis en UTF8) :
Code
// charset for web pages and emails
define('CHARSET', 'utf-8'); // iso-8859-1');
define('CHARSET_MAIL', 'utf-8'); // iso-8859-15');


Écrit par : taiko 9 Mar 2018, 15:43

re

dans mon french j'avais ça :

CODE
// Global entries for the <html> tag
define('HTML_PARAMS','dir="LTR" lang="fr"');

// charset for web pages and emails
//define('CHARSET', 'iso-8859-1');


que j'ai remplacé par ça :

CODE
// Global entries for the <html> tag
define('HTML_PARAMS','dir="LTR" lang="fr"');

// charset for web pages and emails
define('CHARSET', 'iso-8859-1');


mais bon tous les problèmes d'accents sont en base de donnée j'ai vu, c'est les noms des catégories et aussi les attributs, du côté admin on voit bien les accents mais sur le site ils n'y sont pas.

par exemple j'ai en attributs dans les produits de cuisine pour l'installation dans la fiche produit " cuisine 1 mur linéaire" je l'ai remplacé par "cuisine 1 mur lineaire en suprimant l'accent alors ça fonctionne mais le problème c'est qu'il faudrait les modifier tous et apparement pas possible de changer de page le lien de page ne fonctionne pas non plus je reste toujours sur la première page des attributs si je clique sur le "2" "3" ou autre.

au fur et mesure je trouve des tas de choses qui ne fonctionne plus c'est dingue.
tous ça c'est dû au passage de php 5.6 donc.

Écrit par : Bonbec 9 Mar 2018, 15:50

Bon cela avance petit à petit.
Cela ne sert à rien de supprimer tes accents en BDD ... Perte de temps et travail inutile.
Il vaut mieux regarder dans le fichier catalog/includes/functions/database.php
Est-ce que tu as des lignes de ce style ? :

Code
mysql_set_charset('utf8', $$link);

Écrit par : taiko 9 Mar 2018, 16:02

re

non rien de tout ça.


Écrit par : Bonbec 9 Mar 2018, 16:23

Re,

De mémoire ta BDD est en utf8 et tes pages en iso

Essaye de modifier ces deux fonctions comme ceci (mais c'est vraiment très dangereux de travailler sur le site en live) :

Code
  function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
    global $$link;

    if (USE_PCONNECT == 'true') {
      $$link = mysql_pconnect($server, $username, $password);
      mysql_set_charset('iso-8859-1', $$link);
    } else {
      $$link = mysql_connect($server, $username, $password) or die("Travaux en cours, merci de votre compréhension.");
      mysql_set_charset('iso-8859-1', $$link);
    }

    if ($$link) mysql_select_db($database);

    return $$link;
  }


et
Code
  function tep_db_query($query, $link = 'db_link') {
    global $$link;

    if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
      error_log('QUERY ' . $query . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
    }

    $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());

    @mysql_query("SET NAMES 'iso-8859-1'");
    @mysql_query("SET CHARACTER SET 'iso-8859-1'");

    if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
       $result_error = mysql_error();
       error_log('RESULT ' . $result . ' ' . $result_error . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
    }

    return $result;
  }



Écrit par : taiko 9 Mar 2018, 16:31

re

sur quel fichier ?

database.php


Écrit par : taiko 9 Mar 2018, 16:37

bon ben erreur internal server error 500

Écrit par : Bonbec 9 Mar 2018, 17:03

Re,

J'en avais un peu peur ... çà fonctionne pour utf8 mais pas pour iso-8859-1

Donc on va partir sur autre chose.
Dans catalog/includes/boxes/ tu as un fichier qui correspond à ton menu de la colonne de gauche.
Moi c'est pas le fichier d'origine, donc pas facile de guider ...
Tu dois avoir des lignes avec $categories['categories_name']
C'est le cas ?

Écrit par : taiko 9 Mar 2018, 17:23

oui

CODE
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
while ($categories = tep_db_fetch_array($categories_query)) {
$tree[$categories['categories_id']] = array('name' => $categories['categories_name'],
'parent' => $categories['parent_id'],
'level' => 0,
'path' => $categories['categories_id'],
'next_id' => false);

Écrit par : Bonbec 9 Mar 2018, 17:27

Re,

Citation (taiko @ 9 Mar 2018, 11:27) *
... ça parle pas mal du passage en php 5.4 et moi je suis en 5.6 ceci dit ovh passe au php 7 d'ici fin d'année donc rebelotte àprès.

Tu es en php 5.6.33 exactement.
Quand on monte en versions de Php, il est important de faire les modifications par version de Php sans en sauter aucune.
voir ici : http://php.net/manual/fr/migration5.php
Puis dans le menu de droite tu remontes progressivement ligne par ligne.

Honnêtement tu devrais prendre une version d'OsCommerce qui supporte Php7 et te construire un nouveau site en parallèle (c'est ce que je fais actuellement pour moi).
Cela te corrigera pas mal de bugs et tu auras moins de travail à faire ensuite ...

Écrit par : Bonbec 9 Mar 2018, 17:30

Re
Alors transforme cette ligne :

Code
    $tree[$categories['categories_id']] = array('name' => $categories['categories_name'],

en
Code
    $tree[$categories['categories_id']] = array('name' => utf8_decode($categories['categories_name']),


Écrit par : taiko 9 Mar 2018, 17:35

oui je suis e php 5.6.33

j'ai testé de mettre les fichiers de session de la 2.3 comme dit dans un post et ça ne fonctionne pas non plus pour les sessions, c'était juste un test pour voir mais apparemment j'ai lu qu'il fallait modifié pas mal de chose avant de faire ça donc les eregi, les mysqli etc...

je vais regarder ton lien, je bosse aussi sur un presta en même temps et oui php 7 pointe son nez chez ovh, version php 5.6 obsolète fin d'année.

en tous cas merci.

penses tu que je doive faire tous ce qui est dit ici les 3 liens de ton post :

http://www.oscommerce-fr.info/forum/index.php?showtopic=71409&hl=session

faut il que je fasse la modif de la fonction _sess_write comme dit havock etc..

merci

Écrit par : taiko 9 Mar 2018, 17:38

re

la modif de la catégorie ne fait rien et pas d'erreur

Écrit par : taiko 9 Mar 2018, 18:09

bon

et niveau session, la session est bien enregistrée en base de donnée car j'ai les paniers abandonnés qui apparaissent côté admin.

et côté whosonline ça rame et apparaît après.

le fait est que je ne sais pas ce qu'il a modifer exactement pour le passage au php 5.6.33 si tous a été modifié mais en faite je crois que rien du tout vraiment.
car s'il faut modifier les ereg etc.. je ne pense pas que ça a été fait.

comment je peux savoir les fichiers a modifier et ou je vais trouver les fonctions dépréciées à remplacer ?

merci

Écrit par : Bonbec 10 Mar 2018, 09:08

Re,

J'insiste : travaille sur une copie de ton site, surtout pas sur ton serveur de production !!!

Pour les ereg / eregi : https://github.com/osCommerce/oscommerce2/commit/784144ad78c6d358da6b76570def4f2c9f94b0b7

Regarde aussi ce fil, il y a pas mal d'infos aussi : http://www.oscommerce-fr.info/forum/index.php?showtopic=71065

Sinon pour tes catégories, il y a des accents ou pas ?

Écrit par : taiko 10 Mar 2018, 10:52

Salut

Non pas d accent.

J ai remarque quelque chose aussi pour les reviews apparemment il doit y avoir un fichier quelque part ou un lien qui renvoit sur l admin d un de mes autres sites précédent ( erreur d envoie de fichier quelque part.
Je vais regarder tout ca aujourd hui.

J ai fais un export complet de la base hier avec easy populate pour voir et quand je veux l ouvrir avec open office je vois qu elle est en utf8 sans bom et apres si j essaie de l enregistrer en iso 88591 ça plante.

Donc bizarre niveau ovh j ai toutes les tables en iso et interclassement aussi et en export de base sur le site avec easypopulate suis en utf8.

Je vais regarder tes liens.

J ai regarder sur php net les migrations mais c est compliqué pour moi car je suis pas dev.
J ai vu qu il y avait les array modifier sur me site aussi.

C est complique De bosser en local car il faudrait que j installe un serveur apache (pas complique encore ca va) mais apres faut il encore que le php.ini soit identique a ovh pour que les erreurs soit les mêmes.

Bon apres je peux regarder avec le php info les fonctions qui sont sur on et off sur l hebergement je pense.

Bon enfin je vais essayer d avancer en modifiant tout d un coup.
Et on verra bien si ca fonctionne ou pas ou si ca progresse.
Le mieux serait de bosser la nuit lol !!! Comme ca moins de clients.

Si tu as des liens pour modifier les sessions, les fonctions depreciees et autres hesite pas.

Merci beaucoup en tout cas de t occuper de mon cas c est sympa.



Écrit par : taiko 10 Mar 2018, 18:47

ben ton premier lien effectuer changer tous les ereg déjà et pas de message d'erreur c'est que ça doit aller.
on continue la suite pour voir.

a+++

bon ben finalement je me rends compte que ça crée des string partout dans les sous categories entre autre.


CODE
<td colspan="2"><h2>Baignoires Angle
hydromassantes</h2></td>

</tr>






</table></td>

</tr>

<tr>

<td><img src="images/pixel_trans.gif" border="0" alt="cuisine équipée" title=" cuisine équipée " width="10" height="10"></td>

</tr>

<tr>

<td>string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
string(19) "-------------------"
<table border="0" width="100%" cellspacing="0" cellpadding="2" class="productListing">
<tr>
<td align="center" class="productListing-data">&nbsp;<a href="http://www.cuisine-design-deluxe.fr/baignoire-salle-de-bain-angle-hydromassante-bathtub315lr-p-3817.html"><img src="images/Baignoire salle de bain angle hydro-massante BATHTUB315LR.jpg" border="0" alt="Baignoire salle de bain angle hydro-massante BATHTUB315LR" title=" Baignoire salle de bain angle hydro-massante BATHTUB315LR " width="125" height="116.5"></a>&nbsp;<br>&nbsp;BATHTUB315LR&nbsp;<br>&nbsp;<a href="http://www.cuisine-design-deluxe.fr/baignoire-salle-de-bain-angle-hydromassante-bathtub315lr-p-3817.html">Baignoire salle de bain angle hydro-massante BATHTUB315LR</a>&nbsp;<br>&nbsp;<a href="http://www.cuisine-design-deluxe.fr/login.php">AFFICHE LE PRIX</a>&nbsp;<br><a href="http://www.cuisine-design-deluxe.fr/?cPath=415_417&amp;action=buy_now&amp;products_id=3817"><img src="includes/languages/french/images/buttons/button_buy_now.gif" border="0" alt="Acheter maintenant" title=" Acheter maintenant " width="150" height="30"></a>&nbsp;<br>&nbsp;100.00&nbsp;Kg</td>
bon



Écrit par : Bonbec 12 Mar 2018, 14:48

En local (je suis sous Windows 8.1) j'utilise uWamp qui est très facile d'utilisation et de paramétrage (en plus c'est en français).
Comme logiciel de recherche dans les fichiers, remplacement etc..., j'utilise grepWin qui est en allemand et en anglais. Je l'ai un peu francisé.

Avec ces 2 logiciels, la mise à jour du site est très facilitée.

Pour tes strings, logiquement çà ne le fait pas, sans doute un code chez toi qui a été modifié.
Pour les ereg/eregi et cie ... le lien te donne uniquement les scripts d'OsCommerce. Si tu as installé des contribs, il faut que tu regardes aussi le code des contribs.

Écrit par : taiko 12 Mar 2018, 22:20

re

bon j'ai convertis quelques fichiers en utf8 côté admin ce qui m'a réglé pas mal de problème d'accents dans mon administration pour tous les modules déjà et côté header tag aussi dans les fichiers french.

il me reste à modifier la fonction split de easy populate.

il me reste que ces catégories ou j'ai toujours le problème, à mon avis il va falloir peut être réimporté non.car ce qui est bizarre c'est que dans l'admin il y a les accents et dans le navigateur j'ai é à la place.

comprends plus là.

bon et toujours ces string j'avais trouvé un truc je sais plus ou sur un forum qui en parlait.

Écrit par : taiko 13 Mar 2018, 13:08

salut

bon alrs j'ai retiré le utf_8 decode du product info, j'ai envoyé le header en utf8, j'ai récupérer les catégories avec les accents et j'ai donc convertis le product info en utf8 et c'est rentré dans l'ordre je dois donc convertir tous les fichiers de langues conditions, sécurité des paiements etc.... en utf8 pour que ça fonctionne, restera à voir pour les liens des boxes qui doivent être dans le french donc celui là à convertir aussi je suppose pour récupérer un site complet je pense que je devrais m'en sortir maintenant et passer ce sujet en résolu donc bientôt.

merci en tout cas.

a++

Écrit par : Bonbec 13 Mar 2018, 13:58

Enregistre tes fichiers de langues en utf8 sans BOM smile.gif

Écrit par : taiko 13 Mar 2018, 14:29

salut

oui c'est ce que j'ai fais j'ai tout réglé excepté un seul dans product info qui doit se trouver en base de donnée je pense c'est celui de

quantité disponible j'ai quantit? à la place et je ne sais pas ou le trouver en fait pour le modifier.

sinon j'ai ce message maintenant j'ai cherché si j'avais pas un fichier en double mais non.

CODE
Fatal error: Cannot redeclare unionSplit::$page_number in /home/cuisinedn/www/includes/classes/union_split_page_results.php on line 34


la ligne 34 c'est le premier var donc la deuxième ligne de ce code là : c'est déprécié aussi les split non ?


CODE
class unionSplit{
var $query, $num_rows, $page_number, $number_of_pages, $page_number, $page_name;
var $offset, $limit;
var $explain, $execution_time;

function unionSplit($query, $max_rows, $page_number, $page_name = 'page', $do_explain = false){
$this->page_name = $page_name;
$this->page_number = ( !tep_not_null($page_number) || empty($page_number) || !is_numeric($page_number) ? 1 : $page_number );
$replace = "SELECT SQL_CALC_FOUND_ROWS ";
$explain_query = "EXPLAIN " . $query;
$union_query = substr_replace($query, $replace, 0, 7);
$this->limit = $max_rows;
$this->offset = ($this->page_number - 1) * $this->limit;
$union_query .= " LIMIT " . $this->offset . ", " . $this->limit;
$this->start($start);
$this->query = tep_db_query($union_query);
$this->stop($start, $this->execution_time);
if ($do_explain) $this->explain = tep_db_fetch_array(tep_db_query($explain_query));
$rows = tep_db_fetch_array(tep_db_query('SELECT FOUND_ROWS() as count'));
$this->num_rows = (int)$rows['count'];
$this->number_of_pages = ceil($this->num_rows / $this->limit);
}

Écrit par : Bonbec 14 Mar 2018, 08:58

Re,

Fatal error: Cannot redeclare unionSplit veut dire que le fichier /home/cuisinedn/www/includes/classes/union_split_page_results.php est appelé 2 fois.
Hors il ne doit être appelé qu'une seule fois.
Regarde dans tes fichiers si il n'y a pas ce fameux fichier union_split_page_results.php à des endroits différents.
Sa place normale est dans catalog/includes/classes/

Écrit par : taiko 14 Mar 2018, 09:10

Salut


Je vais regarder ça merci.
Quelle galère serieux en plus je suis en mysql 5.5 aussi, ils ont upgrade mysql.

Pour les sessions j ai fais tout ce qu il y avait a faire je pense normalement et ce problème de language qui fonctionne pas aussi est certainement lié aux sessions aussi car si je place les fichiers sessions et database de la version 2.3 alors j ai une erreur dans application top concernant le language que j ai mis dans un autre post.

Et probleme concernant les clients avec array merge dans l admin

Écrit par : Bonbec 14 Mar 2018, 09:21

Re,

Pour ton erreur dans application_top.php :
Chercher :

Code
// set the language
  if (!tep_session_is_registered('language') || isset($_GET['language'])) {

Remplacer par :
Code
// set the language
  if (!tep_session_is_registered('language') || isset($_GET['language']) || empty($language)) {

Écrit par : taiko 14 Mar 2018, 09:43

Salut


J avais trouve ça aussi hier je l ai remplacé et ça ne fonctionnait pas alors je sais plus l erreur que ça faisait je reteste et te dis mais je pourrai pas faire de modif avant 13h00 car j ai un rdv ce matin.
Merci en tout cas.

A+

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)