osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Problème après passage php5.5, création de compte
nephelion
posté 22 Oct 2015, 10:04
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



bonjour,
le passage php 5.5 s'est plutôt bien passé grâce à l'aide sur le forum et en particulier @Bonbec wink.gif

la boutique est bien restitué, cependant j'ai quelques problèmes :

la création de compte se passe mal :
erreur restitué :
Citation
1062 - Duplicate entry '0' for key 'PRIMARY'

insert into customers_info (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('0', '0', now())


mais le compte s'est quand même créé


seulement on ne peut plus passer de commande, ni pour les nouveaux comptes mal créés certes, ni pour les anciens.


avez-vous rencontré ces problèmes lors du passage ?

ou j'ai du zappé une étape !

merci pour vos aides

Ce message a été modifié par nephelion - 22 Oct 2015, 10:06.


--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
Havock
posté 22 Oct 2015, 10:21
Message #2


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Bonjour nephelion,

Code
insert into customers_info (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('0', '0', now())


Visiblement à chaque création de compte tu écrases les infos clients du client précédent car tu entres dans le champs customers_info_id la valeur 0.

Dans ta page la requête doit ressembler à ça :

Code
tep_db_query("INSERT INTO " . TABLE_CUSTOMERS_INFO . " (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('" . (int)$customer_id . "', '0', now())");


Si c'est bien le cas, teste la valeur de $customer_id pour voir si elle passe à 0 (ce qu'elle ne devrait pas faire).








--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
nephelion
posté 22 Oct 2015, 10:33
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



bonjour Havock,
merci pour ta réponse

oui c'est exactement ce qu'il y a dans create_account.php (à peu près ligne 229 )

ça retourne à 0 !
mais la question aussi est de savoir pourquoi ce qui a toujours fonctionné se plante avec le passage php 5.5 ?

et où je puis y remédier ?



par hasard, je suis allé regarder dans la bdd, les nouveaux comptes sont bien créés, sans écraser les anciens
les commandes passées sont bien enregistées (mais comment ?) mais n'apparaissent pas en orders en Back Office.

une piste ?




--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
Havock
posté 22 Oct 2015, 10:58
Message #4


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Fais un test.

Crée un compte et regarde dans les tables customers et address_book la valeur du champs customers_id pour ce nouveau compte.

Vu que tu n'as pas de message d'erreur elle doit être différente de 0. Si c'est bien le cas, regarde à quel endroit (en remontant à partir de la ligne 229 et en allant jusqu'à la ligne "tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);") la valeur de $customers_id peut avoir été modifiée.


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
nephelion
posté 22 Oct 2015, 11:47
Message #5


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



re bonjour Havock,

j'ai regardé les nouveaux clients créés, customers_id est à 0 dans la table address_book alors qu'il devrait être celui de la table customers.

dans create_account.php il y a ces lignes :

Citation
tep_db_perform(TABLE_CUSTOMERS, $sql_data_array);

$customer_id = tep_db_insert_id();

$sql_data_array = array('customers_id' => $customer_id,
'entry_firstname' => $firstname,
'entry_lastname' => $lastname,
'entry_street_address' => $street_address,
'entry_postcode' => $postcode,
'entry_city' => $city,
'entry_country_id' => $country);

if (ACCOUNT_GENDER == 'true') $sql_data_array['entry_gender'] = $gender;
if (ACCOUNT_STATUT == 'true') $sql_data_array['entry_statut'] = $statut;
if (ACCOUNT_COMPANY == 'true') $sql_data_array['entry_company'] = $company;
if (ACCOUNT_SUBURB == 'true') $sql_data_array['entry_suburb'] = $suburb;
if (ACCOUNT_STATE == 'true') {
if ($zone_id > 0) {
$sql_data_array['entry_zone_id'] = $zone_id;
$sql_data_array['entry_state'] = '';
} else {
$sql_data_array['entry_zone_id'] = '0';
$sql_data_array['entry_state'] = $state;
}
}

tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);

$address_id = tep_db_insert_id();

tep_db_query("update " . TABLE_CUSTOMERS . " set customers_default_address_id = '" . (int)$address_id . "' where customers_id = '" . (int)$customer_id . "'");

tep_db_query("insert into " . TABLE_CUSTOMERS_INFO . " (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('" . (int)$customer_id . "', '0', now())");



là je "nage" wink.gif car je n'ai rien touché à ce fichier !

une piste ?


--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
Bonbec
posté 22 Oct 2015, 11:55
Message #6


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Ton message me fait penser que j'ai eu ce problème pour plusieurs fichiers et que j'avais rusé.
Pour create_account.php, j'ai remplacé $customer_id = tep_db_insert_id(); par :
Code
// $customer_id = tep_db_insert_id();
$cs_s=tep_db_query("select customers_id from " . TABLE_CUSTOMERS . "  where customers_email_address='".$email_address."' ");
$cs=tep_db_fetch_array($cs_s);
$customer_id=$cs['customers_id'];


idem pour $address_id = tep_db_insert_id(); :
Code
// $address_id = tep_db_insert_id();
$cs_s=tep_db_query("select address_book_id from " . TABLE_ADDRESS_BOOK . "  where customers_id='".$customer_id."' ");
$cs=tep_db_fetch_array($cs_s);
$address_id=$cs['address_book_id'];


C'est de la rustine, mais çà fonctionne ...


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
nephelion
posté 22 Oct 2015, 12:33
Message #7


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



Bonjour et merci @Bonbec,

Tu m'as encore une fois sauvé la vie wink.gif
J'étais en train de m'arracher le peu de cheveux qui me reste et j'attaque même ma barbe naissante après plusieurs nuits à me battre avec le passage PHP 5.5 de 4 boutiques archi bidouillées !
Pour dire que je nage complètement.

Tout est rentré dans l'ordre pour la création des comptes et les commandes.
Je vais brûler quelques cierges pour attendre la suite !

Tu disais :
Citation
Ton message me fait penser que j'ai eu ce problème pour plusieurs fichiers et que j'avais rusé.


A part create_account.php te souviens-tu de quels fichiers tu as collé ta rustine ?

Merci encore, et dès que je passe dans ton coin, je te ferai signe pour partager un verre de Vichy smile.gif

Merci encore à Havock !

Vous êtes tous formidables.


--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
Bonbec
posté 22 Oct 2015, 12:50
Message #8


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Re,

Tu es le bienvenu si tu passes dans mon coin smile.gif

Aussi bizarre que cela puisse paraître, $xxxxx = tep_db_insert_id(); est présent dans beaucoup de fichiers mais il n'y en a que peu qui posent problème.
Par contre je ne te met pas les lignes car mes fichiers sont hyper modifiés.

Dans admin/categories.php :
Code
// $categories_id = tep_db_insert_id();
$cats_s = tep_db_query("select MAX(categories_id) from " . TABLE_CATEGORIES);
$cats = tep_db_fetch_array($cats_s);
$categories_id = $cats['MAX(categories_id)'];

et
Code
// $products_id = tep_db_insert_id();
if (isset($_GET['pID'])){
       $products_id = tep_db_prepare_input($_GET['pID']);
    } else {
    $cs_query=tep_db_query("select products_id from " . TABLE_PRODUCTS . "  where products_model='".$_POST['products_model']."' ");
    $cs=tep_db_fetch_array($cs_query);
    $products_id=$cs['products_id'];
}

et
Code

// $dup_products_id = tep_db_insert_id();
$cs_query=tep_db_query("select products_id from " . TABLE_PRODUCTS . "  where products_model='".$product['products_model']."' ");
$cs=tep_db_fetch_array($cs_query);
$dup_products_id=$cs['products_id'];


Dans admin/create_account_process.php :
Code
// $customer_id = tep_db_insert_id();
$cust_s = tep_db_query("select MAX(customers_id) from " . TABLE_CUSTOMERS);
$cust = tep_db_fetch_array($cust_s);
$customer_id = $cust['MAX(customers_id)'];

et
Code
// $address_id = tep_db_insert_id();
$addr_s = tep_db_query("select MAX(address_book_id) from " . TABLE_ADDRESS_BOOK);
$addr = tep_db_fetch_array($addr_s);
$address_id = $addr['MAX(address_book_id)'];



--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
Bonbec
posté 22 Oct 2015, 13:00
Message #9


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Suite :

Dans admin/create_order_process.php :
Code
//  $insert_id = tep_db_insert_id('db_link');
$id_order = tep_db_query("SELECT orders_id from " . TABLE_ORDERS . " WHERE customers_id = ".$customer_id." ORDER BY orders_id DESC LIMIT 1");
$order_temp_actually = tep_db_fetch_array($id_order);
$insert_id = $order_temp_actually['orders_id'];


Dans mes 2 fichiers includes/functions/database.php (catalog et admin), j'ai remplacé :
Code
//  function tep_db_insert_id() {
//    return mysql_insert_id();
//  }

  function tep_db_insert_id( $link = 'db_link') {
    global $$link;
    return mysql_insert_id($$link);
  }

C'était une rustine que j'avais trouvé sur le forum mais c'est pas sûr que j'ai utilisé cela pour le changement de version Php (j'ai un trou de mémoire) wacko.gif

Voilà, je ne penses pas en avoir oublié.
Testes bien à chaque modif, ce n'est pas par ce que çà marche chez moi que tu en as forcement besoin, nos fichiers n'ont sans doute pas eu les mêmes modifs lors d'ajouts persos ou d'addons.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
Havock
posté 22 Oct 2015, 13:32
Message #10


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



@ nephelion

Avant de faire toutes les modifs des appels de la fonction tep_db_insert_id , essaye juste de modifier la fonction tep_db_insert_id dans les fichiers database.php

Code
function tep_db_insert_id( $link = 'db_link') {
    global $$link;
    return mysql_insert_id($$link);
  }



@Bonbec

Bonjour Frédéric smile.gif j'ai pris du retard sur la mise à jour de mon site, mais d'ici peu je pourrais te montrer la version responsive (elle est prête en local).


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
nephelion
posté 22 Oct 2015, 15:20
Message #11


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



Oups,
j'ai parlé trop vite,
Citation
Tout est rentré dans l'ordre pour la création des comptes et les commandes.


ben non,
les comptes sont créés, les commandes passés en front, les mails de confirmation sont bien partis,
mais les commandes ne sont pas en bdd et pas en page commande de l'admin.


@Bonbec,

je n'ai pas de fichiers :

admin/create_order_process.php
admin/create_account_process.php

c'est quelle version OsC que tu as ?
j'en suis à la 2.2

je fouille dans les fichiers à la recherche de ces codes !

@Havock

Citation (Havock @ 22 Oct 2015, 08:32) *
@ nephelion

Avant de faire toutes les modifs des appels de la fonction tep_db_insert_id , essaye juste de modifier la fonction tep_db_insert_id dans les fichiers database.php

Code
function tep_db_insert_id( $link = 'db_link') {
    global $$link;
    return mysql_insert_id($$link);
  }


en fait, ces modifs ont été faites depuis le début, mais ça n'a pas d'influence ;(



--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
Havock
posté 23 Oct 2015, 09:26
Message #12


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



nephelion si les commandes ne sont pas enregistrées dans la base c'est probablement lié au tep_db_insert_id de checkout_process.php

N'oublie pas non plus les tep_db_insert_id liés à des modules de paiement comme paypal cybermut ...

Fais une recherche dans tes fichiers sur tep_db_insert_id pour ne pas en oublier. (Le logiciel Windows Grep http://www.wingrep.com/ est très pratique pour faire ce genre de recherches)


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
Bonbec
posté 3 Nov 2015, 08:56
Message #13


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Désolé pour le temps de réponse mais j'ai pas reçu d'avis de réponse sad.gif

Citation (nephelion @ 22 Oct 2015, 15:20) *
@Bonbec,
je n'ai pas de fichiers :
admin/create_order_process.php
admin/create_account_process.php
c'est quelle version OsC que tu as ?
j'en suis à la 2.2

Sgloups ! C'est une contrib, je crois order editor ou un truc du genre.
A ne pas tenir compte ...
J'ai bien une MS2.2 aussi, mais tellement trafiquée que parfois c'est un peu compliqué pour s'y retrouver.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
Havock
posté 3 Nov 2015, 14:49
Message #14


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Un possibilité serait que la fonction tep_db_perform ne fonctionne pas correctement, ce qui expliquerait que le tep_db_insert_id soit dans les choux


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
Gnidhal
posté 3 Nov 2015, 16:19
Message #15


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9219
Inscrit : 4-March 03
Lieu : Auray
Membre no 927



Salut à tous,
perso j'ai un peu bricolé les fonctions database pour une parfaite compatibitité avec mysqli donc pous servir à qui veut :

Dans application_top.php, remplacer l'inclusion des fonctions database.php
Code
/*
quelques lignes à décommenter au cas par cas selon l'environnement
//  date_default_timezone_set('Europe/Paris');
//  define('DEFAULT_CHARSET', 'UTF-8');
//  define('DEFAULT_CHARSET', 'ISO-8859-1');
//  define('DEFAULT_DB_CHARSET', 'UTF-8');
*/
  require(DIR_WS_FUNCTIONS . 'databasei.php');
  tep_db_connect() or die('Connexion impossible à la Base de Données!');

Et le script databasei.php
CODE
<?php

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

$$link = mysqli_connect($server, $username, $password, $database);

//if (!$$link) die("Can not access database");

return $$link;
}

function tep_db_close($link = 'db_link') {
global $$link;

return mysqli_close($$link);
}

function tep_db_error($query, $errno, $error) {
$test = false;
$debug_array = debug_backtrace();
var_dump($debug_array);
$lines = '<li>';
$txt_lines = '';
for($i=1; $i<count($debug_array);$i++){
$lines .= ''.basename($debug_array[$i]['file']).' ('.$debug_array[$i]['line'].')<br>';
$txt_lines .= ' - '.basename($debug_array[$i]['file']).' ('.$debug_array[$i]['line'].')'."\n";
}
$lines .= '</li>';
if(isset($_GET)){
$params = '';
foreach ($_GET as $key => $value) {
$params .= "$key=$value&";
}
$params = trim($params,'&');
$lines .= '<li>params get : '.$params.'</li>';
$txt_lines .= 'Params get : '.$params."\n";
}
$ip_a = tep_get_ip_address();
$out = '<fieldset class="ErrDatabase"><legend>Erreur '.$errno.'</legend><ul><li>'.$error.'</li><li>'.$query.'</li>'.$lines.'</ul></fieldset>';
if ($ip_a != 'mon_ip_quand_elle_fixe' && $ip_a != '127.0.0.1' || $test){
$infos_err = '- '.date("d/m/Y H:i:s")." ---\n";
$infos_err .= "Erreur N° : $errno \nInfo : $error \nRequête : $query \nDans : \n$txt_lines------------------------------\n";
file_put_contents("db_errors.txt", $infos_err, FILE_APPEND);
$out = '<fieldset class="ErrDatabase"><legend>Erreur '.$errno.'</legend>Veuillez Contacter l\'administrateur</fieldset>';
}
echo $out;
}

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

if (!$$link) return;

if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
$debugs = debug_backtrace();
$debug = isset($debugs[1]) ? $debugs[1] : null;
if ($debug) {
if (tep_not_null($debug['function'])) {
error_log('CALLEE ' . $debug['file'] . ' (line: '.$debug['line'].' function: '.$debug['function'].') ' . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
} else {
error_log('CALLEE ' . $debug['file'] . ' (line: '.$debug['line'].') ' . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
}
}
error_log('QUERY ' . $query . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
}

$result = mysqli_query($$link, $query) or tep_db_error($query, mysqli_errno($$link), mysqli_error($$link));

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

return $result;
}

function tep_db_multi_query($query, $link = 'db_link') {
global $$link;

if (!$$link) return;
if (!is_array($query)) return tep_db_query($query, $link);

$query_text = is_array($query)? implode(";", $query) : $query;

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

$results = array();
if (mysqli_multi_query($$link, $query_text)) {
do {
/* store first result set */
if ($result = mysqli_store_result($$link)) {
$results[] = $result;
}
} while (mysqli_more_results($$link) && mysqli_next_result($$link));
} else {
tep_db_error($query_text, mysqli_errno(), mysqli_error());
}

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

return $results;
}

function tep_db_perform($table, $data, $action = 'insert', $parameters = '', $link = 'db_link') {
reset($data);
if ($action == 'insert') {
$query = 'insert into ' . $table . ' (';
while (list($columns, ) = each($data)) {
$query .= $columns . ', ';
}
$query = substr($query, 0, -2) . ') values (';
reset($data);
while (list(, $value) = each($data)) {
switch ((string)$value) {
case 'now()':
$query .= 'now(), ';
break;
case 'null':
$query .= 'null, ';
break;
default:
$query .= '\'' . tep_db_input($value) . '\', ';
break;
}
}
$query = substr($query, 0, -2) . ')';
} elseif ($action == 'update') {
$query = 'update ' . $table . ' set ';
while (list($columns, $value) = each($data)) {
switch ((string)$value) {
case 'now()':
$query .= $columns . ' = now(), ';
break;
case 'null':
$query .= $columns .= ' = null, ';
break;
default:
$query .= $columns . ' = \'' . tep_db_input($value) . '\', ';
break;
}
}
$query = substr($query, 0, -2) . ' where ' . $parameters;
}

return tep_db_query($query, $link);
}

function tep_db_fetch_array($db_query, $type=MYSQLI_ASSOC) {
if($db_query == NULL) return;
if ($type == 'N') $type = MYSQLI_NUM;
return mysqli_fetch_array($db_query, $type);
}

function tep_db_num_rows($db_query) {
return mysqli_num_rows($db_query);
}

function tep_db_data_seek($db_query, $row_number) {
return mysqli_data_seek($db_query, $row_number);
}

function tep_db_insert_id($link = 'db_link') {
global $$link;

return mysqli_insert_id($$link);
}

function tep_db_free_result($db_query) {
return @mysqli_free_result($db_query);
}

function tep_db_fetch_fields($db_query) {
return mysqli_fetch_field($db_query);
}

function tep_db_output($string) {
return htmlspecialchars($string);
}

function tep_db_input($string, $link = 'db_link') {
global $$link;
if (!$$link) return tep_db_prepare_input($string);
if(DEFAULT_CHARSET == 'UTF-8'){
$string = utf8_decode($string);
}

if (function_exists('mysqli_real_escape_string')) {
return mysqli_real_escape_string($$link, $string);
} elseif (function_exists('mysqli_escape_string')) {
return mysqli_escape_string($$link, $string);
}

return addslashes($string);
}

function tep_db_prepare_input($string) {
if (is_string($string)) {
return trim(stripslashes($string));
} elseif (is_array($string)) {
reset($string);
while (list($key, $value) = each($string)) {
$string[$key] = tep_db_prepare_input($value);
}
return $string;
} else {
return $string;
}
}
function tep_db_num_fields($string ){
return mysqli_num_fields($string);
}
function tep_db_field_name($string, $offset ){
$name = array();
while ($finfo = mysqli_fetch_field($string)) {
$name[] = $finfo->name;
}
return $name[$offset];
}
function tep_db_field_type($string, $offset ){
$type = array();
while ($finfo = mysqli_fetch_field($string)) {
$type[] = $finfo->type;
}
return $type[$offset];
}

define ('MY_DB_FUNC','mysqli');

function tep_db_table_exists($table){
$qry = tep_db_query("SHOW TABLES");
$tables = array();
while($row = mysqli_fetch_row($qry)){
$tables[] = $row[0];
}
if(in_array($table, $tables)){
return TRUE;
}
return false;
}


si vous regardez de plus près, vous verrez que la gestion d'erreur envoie les erreurs vers un fichier text au lieu d'afficher en ligne à moins que vous ayez inséré votre adresse IP en dur.

Bon c'est une base à bricoler hein ?
car pour que les erreurs s'affichent correctement il faudra ajouter les bonnes classes dans la css.
il y a aussi une conversion utf8 optionnelle dans certains cas avec d'anciennes données ou des pages en ISO... aussi à bricoler.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
Bonbec
posté 3 Nov 2015, 18:37
Message #16


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour Gnidhal,

On peut aussi reprendre carrément les fichiers database.php de la version 2.3.1 sans soucis, mais il n'y a pas les modifs "made by Gnidhal" tongue.gif
Merci pour tes petits plus !

Dans la catégories des fichiers à piquer à la 2.3.1, il y a aussi les fichiers sessions.php



--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
Gnidhal
posté 4 Nov 2015, 08:16
Message #17


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9219
Inscrit : 4-March 03
Lieu : Auray
Membre no 927



Absolument, d'ailleurs mon script est adapté depuis cette version mais à l'usage j'ai du fixer certains problèmes rencontrés.
A chacun de faire sa cuisine avec tout ça.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
nephelion
posté 13 Nov 2015, 13:31
Message #18


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



Bonjour à tous,
Merci à @Bonbec @Havock @Gnidhal

Désolé pour la réponse tardive, avec des problèmes perso divers je suis [un peu] à la bourre.

Entre autre, j'ai à peu près réussi à me dépatouiller avec vos conseils.

Mais j'ai quand même passé mon temps à jouer à la poupée russe.
Après 4 ou 5 ans, avec des sites déjà très très retouchés, dans tous les sens, quand on soulève la première "poupée" on est jamais à l'abri d'une surprise.
( On dit qu'une poupée gigogne peut en abriter jusqu'à 10 wink.gif

Je rafistole mais pas à l'abri des surprises à répétition :

- une modif marche sur un site et pas un autre !
- la même modif va très bien chez OVH mais pas chez 1&1 (d'accord c'est une daube) !
- même chez OVH ça marche en domaine principal mais pas en multi-domaine !

Je continue mais lorgne de plus en plus vers une migration en 2.3.4 (est-ce une bonne idée ? vu le chantier qui m'attend !)

Désolé, mais je laisse ouvert le sujet, car tout n'est pas résolu.

Merci encore à votre aide.

A bientôt



--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
SaphyraK
posté 4 Feb 2016, 12:28
Message #19


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Hello !

Si le sujet n'est pas résolu, pourrais-tu résumer les problèmes qui subsistent ??


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 22nd November 2017 - 17:33
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)