ma BDD
Pardon je dis des bêtises :( je suis dessus depuis 3 jours et je dors pas beaucoup ^^
la variable $boutique correspond à une page classe_boutique.php dont voici le code :
[php]<?php
require_once('configuration.php');
class Boutique {
// --- variables
// --- langue utilisée
var $langue = "fr";
// --- préfixe pour les tables
var $tablestart = 'bt_';
// --- extension pour les images
var $extension_images = '.jpg';
// --- mode pour afficher les messages de mise au point
var $debug_mode = 0;
// --- lien MySQL
var $db_link;
// --- adresse email du gestionnaire de la boutique
var $email_admin = '
[email protected]';
// --- utilisation de l'Url Rewriting
var $url_rewriting = 0;
// --- fonction d'initialisation lancée automatiquement
// --- à l'appel de la classe
function Boutique() {
// --- initialisation
$this->db = $GLOBALS['db'];
$this->db_host = $GLOBALS['db_host'];
$this->db_user = $GLOBALS['db_user'];
$this->db_pass = $GLOBALS['db_pass'];
// --- connexion à la base
$this->db_link = mysql_connect(
$this->db_host, $this->db_user, $this->db_pass);
if ($this->debug_mode && !$this->db_link) {
echo '<b>connexion_sql</b>';
echo ' erreur:' . mysql_error() ."<br>\n";
}
}
// --- fonction pour faire une requête SQL
function requete_sql($db, $cde) {
if (!$this->db_selected) {
$this->db_selected = mysql_select_db($db, $this->db_link);
if (!$this->db_selected) echo "<b>mysql_select_db</b>(db:$db)(erreur:" . mysql_error() .")<br>\n";
}
$result = mysql_query($cde, $this->db_link);
if (!$result && $this->debug_mode) {
echo "<b>requete_sql</b>(db:$db)(cde:$cde)";
echo '(erreur:' . mysql_error() .")<br>\n";
}
return($result);
}
// --- fonction retournant le nom d'une table
// --- avec son préfixe
function nom_table($nom) {
$nom_complet = $this->tablestart . $nom;
return($nom_complet);
}
// --- création du tableau des blocs à partir du contenu
// --- d'une page ou d'un texte
function get_tb_blocs($page_content) {
$tb_blocs = array();
if (!$page_content) return($tb_blocs);
$tmp_blocs = explode('<', $page_content);
for($i=0; $i<count($tmp_blocs); $i++) {
if (substr($tmp_blocs[$i], 0, 5) == 'bloc_') {
eregi('(.*)>', $tmp_blocs[$i], $t);
$key = $t[1];
$tb_blocs["$key"] = '';
}
}
return($tb_blocs);
}
// --- fonction de création d'une url
function creation_url($params) {
// --- valeurs par défaut
if (!is_array($params)) $params = array();
// --- Url Rewriting produits
if ($params['module'] == 'produit' && $this->url_rewriting) {
$url = $GLOBALS['cf_url_base']
. 'article-'
. $params['prd_id']
. '.html';
return($url);
}
// --- Url Rewriting catégories
if ($params['module'] == 'categorie' && $this->url_rewriting) {
$url = $GLOBALS['cf_url_base']
. 'categorie-'
. $params['prd_id']
. '-' . $params['code_cat']
. '.html';
return($url);
}
// --- composition de l'url
$url = $GLOBALS['cf_url_base'] . 'index.php';
$i = 0;
while (list($cle, $valeur) = each($params)) {
if ($i == 0) $url .= '?';
else $url .= '&';
$i++;
$url .= "$cle=$valeur";
}
return($url);
}
// --- fonction permettant de récupérer
// --- un tableau de catégories
function tableau_categories($params='') {
// --- initialisation du tableau dans lequel
// --- on va récupérer les catégories
$tb = array();
// --- nom de la table
$tbl_categories = $this->nom_table('categories');
// --- valeurs par défaut
if (!is_array($params)) $params = array();
// --- valeurs par défaut : langue
if (!isset($params['langue'])) {
$params['langue'] = $this->langue;
}
// --- valeurs par défaut : ordre de tri
if (!isset($params['order'])) {
$params['order'] = 'code';
}
// --- valeurs par défaut : champs a selectionner
if (!isset($params['champs'])) {
$params['champs'] = '*';
}
// --- valeurs par défaut : tables utilisees
if (!isset($params['tables'])) {
$params['tables'] = $tbl_categories;
}
// --- conditions
$conditions = array();
// --- conditions : langue
if (strlen($params['langue']) == 2) {
$c = $params['langue'];
$conditions[] = "and langue like '$c'";
}
// --- conditions : code
if (strlen($params['code']) > 0) {
$c = $params['code'];
$conditions[] = "and code like '$c'";
}
// --- requête SQL : champs et tables utilises
$cde = 'select ' . $params['champs'];
$cde .= ' from ' . $params['tables'];
$cde .= ' where 1';
// --- requête SQL : ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde .= ' ' . $conditions[$i];
}
// --- requête SQL : option group
if (strlen($params['group']) > 0) {
$cde .= ' group by ' . $params['group'];
}
// --- requête SQL : ordre de tri
if (strlen($params['order']) > 0) {
$cde .= ' order by ' . $params['order'];
}
// --- requête SQL : recherche des enregistrements
// --- et stockage dans un tableau
$result = $this->requete_sql($this->db, $cde);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['code'];
$tb["$key"] = $row;
}
return($tb);
}
// --- fonction permettant de connaitre le niveau
// --- d'une catégorie dans la hierarchie
function niveau_categorie($code) {
$longueur = strlen($code);
$niveau = intval($longueur / 2);
return($niveau);
}
// --- fonction permettant de récupérer
// --- un tableau de produits
function tableau_produits($params='') {
// --- initialisation du tableau dans lequel
// --- on va récupérer les produits
$tb = array();
// --- nom des tables
$tbl_produits = $this->nom_table('produits');
$tbl_description = $this->nom_table('prd_description');
$tbl_prd_categories = $this->nom_table('prd_categories');
$tbl_prd_index = $this->nom_table('prd_index');
// --- valeurs par défaut
if (!is_array($params)) $params = array();
// --- valeurs par défaut : produit actif
if (!isset($params['actif'])) {
$params['actif'] = 1;
}
// --- valeurs par défaut : langue
if (!isset($params['langue'])) {
$params['langue'] = $this->langue;
}
// --- valeurs par défaut : ordre de tri
if (!isset($params['order'])) {
$params['order'] = "$tbl_produits.date_entree desc";
}
// --- valeurs par défaut : champs à sélectionner
if (!isset($params['champs'])) {
$params['champs'] = '*';
}
// --- valeurs par défaut : tables utilisées
if (!isset($params['tables'])) {
$params['tables'] = "$tbl_produits, $tbl_description";
}
// --- conditions
$conditions = array();
// --- liaison entre les produits et leur descriptifs
$conditions[] = "and
$tbl_produits.prd_id = $tbl_description.prd_id";
// --- conditions : langue
if (strlen($params['langue']) == 2) {
$c = $params['langue'];
$conditions[] = "and $tbl_description.langue like '$c'";
}
// --- conditions : produit actif
if (intval($params['actif']) == 1) {
$conditions[] = "and $tbl_produits.actif=1";
}
// --- conditions : produit en promo
if (intval($params['promo']) == 1) {
$conditions[] = "and $tbl_produits.prix_promo>0.0";
}
// --- conditions : catégorie
if (strlen($params['code_cat']) > 0) {
$c = $params['code_cat'];
$conditions[] = "and
$tbl_prd_categories.code_cat like '$c'";
$conditions[] = "and
$tbl_produits.prd_id = $tbl_prd_categories.prd_id";
if (!eregi($tbl_prd_categories, $params['tables'])) {
$params['tables'] .= ", $tbl_prd_categories";
}
}
// --- conditions : mots cles
if (strlen($params['keywords']) > 0) {
if (!eregi($tbl_prd_index, $params['tables'])) {
$params['tables'] .= ", $tbl_prd_index";
}
$conditions[] = "and
$tbl_prd_index.prd_id=$tbl_produits.prd_id";
$conditions[] = "and MATCH (texte) AGAINST
('" . $params['keywords'] . "')";
}
// --- requête de comptage si demande
if ($params['comptage'] == 1) {
$cde1 = 'select count(*) as nb from ';
$cde1 .= $params['tables'];
$cde1 .= ' where 1';
// --- ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde1 .= ' ' . $conditions[$i];
}
$result = $this->requete_sql($this->db, $cde1);
while($row = mysql_fetch_object($result)) {
$this->nb_items = $row->nb;
}
}
// --- requête SQL : champs et tables utilises
$cde = 'select ' . $params['champs'];
$cde .= ' from ' . $params['tables'];
$cde .= ' where 1';
// --- requête SQL : ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde .= ' ' . $conditions[$i];
}
// --- requête SQL : ordre de tri
if (strlen($params['order']) > 0) {
$cde .= ' order by ' . $params['order'];
}
// --- plage de produits a récuperer
// --- (pour limiter le nombre ou gerer les pages)
if ($params['nb_maxi']) {
$cde .= " limit " . intval($params['nb_start']);
$cde .= ',' . intval($params['nb_maxi']);
}
// --- requête SQL : recherche des enregistrements
// --- et stockage dans un tableau
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode) {
echo "<b>tableau_produits</b> $cde (";
echo mysql_num_rows($result) . ")<br>";
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['prd_id'];
$tb["$key"] = $row;
}
return($tb);
}
// --- récupère les informations sur un produit
function infos_produit($prd_id) {
$tb = array();
$prd_id = intval($prd_id);
if (!$prd_id) return($tb);
// --- tables utilisees
$tbl_produits = $this->nom_table('produits');
$tbl_descriptif = $this->nom_table('prd_description');
// --- requête SQL
$cde = "select * from $tbl_produits, $tbl_descriptif";
$cde .= " where 1";
$cde .= " and $tbl_produits.prd_id=$prd_id";
$cde .= " and $tbl_produits.prd_id=$tbl_descriptif.prd_id";
$cde .= " and $tbl_descriptif.langue='$this->langue'";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>infos_produit</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
$tb = mysql_fetch_array($result, MYSQL_ASSOC);
return($tb);
}
// --- récupère dans un tableau les photos
// --- disponibles pour un produit
function tableau_photos($params='') {
// --- initialisation du tableau dans lequel
// --- on va récupérer les données
$tb = array();
// --- nom de la table
$tbl_photos = $this->nom_table('prd_photos');
// --- valeurs par défaut
if (!is_array($params)) $params = array();
// --- valeurs par défaut : champs à sélectionner
if (!isset($params['champs'])) {
$params['champs'] = '*';
}
// --- valeurs par défaut : table utilisée
if (!isset($params['tables'])) {
$params['tables'] = "$tbl_photos";
}
// --- conditions
$conditions = array();
// --- conditions : identifiant produit
if (intval($params['prd_id']) > 0) {
$conditions[] = "and $tbl_photos.prd_id="
. $params['prd_id'];
}
// --- conditions : largeur
if (intval($params['largeur']) > 0) {
$conditions[] = "and $tbl_photos.largeur="
. $params['largeur'];
}
// --- conditions : largeur minimale
if (intval($params['largeur_mini']) > 0) {
$conditions[] = "and $tbl_photos.largeur>="
. $params['largeur_mini'];
}
// --- conditions : largeur maximale
if (intval($params['largeur_maxi']) > 0) {
$conditions[] = "and $tbl_photos.largeur<="
. $params['largeur_maxi'];
}
// --- conditions : hauteur
if (intval($params['hauteur']) > 0) {
$conditions[] = "and $tbl_photos.hauteur="
. $params['hauteur'];
}
// --- conditions : hauteur minimale
if (intval($params['hauteur_mini']) > 0) {
$conditions[] = "and $tbl_photos.hauteur>="
. $params['hauteur_mini'];
}
// --- conditions : hauteur maximale
if (intval($params['hauteur_maxi']) > 0) {
$conditions[] = "and $tbl_photos.hauteur<="
. $params['hauteur_maxi'];
}
// --- requête SQL : champs et tables utilises
$cde = 'select ' . $params['champs'];
$cde .= ' from ' . $params['tables'];
$cde .= ' where 1';
// --- requête SQL : ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde .= ' ' . $conditions[$i];
}
// --- requête SQL : ordre de tri
if (strlen($params['order']) > 0) {
$cde .= ' order by ' . $params['order'];
}
// --- requête SQL : recherche des enregistrements
// --- et stockage dans un tableau
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>tableau_photos</b> $cde (";
echo mysql_num_rows($result) . ")<br>";
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['id'];
$tb["$key"] = $row;
$tb["$key"]['url'] = $GLOBALS['cf_url_base']
. 'photos/' . $row['nom'];
}
return($tb);
}
// --- renvoi l'url d'une photo pour un produit
function url_photo($params='') {
$url = '';
$tb_photos = $this->tableau_photos($params);
while (list($id, $photo) = each($tb_photos)) {
$url = $photo['url'];
}
return($url);
}
// --- ajout d'un produit dans le panier
function ajout_panier($produit_infos, $quantite=1) {
// --- on positionne un cookie pour identifier le client
// --- si ce n'est pas deja fait
$bt_sid = $this->auto_variable('bt_sid', 'c');
if (!$bt_sid) {
// --- calcul d'un identifiant unique
$bt_sid = date("U") . getMyPid();
// --- positionnement du cookie
setcookie ("bt_sid", $bt_sid, time()+86400, '/');
}
$tbinfos = array();
$tbinfos['sid'] = $bt_sid;
$tbinfos['prd_id'] = $produit_infos['prd_id'];
$tbinfos['libel'] = $produit_infos['libel'];
$tbinfos['prix_ht'] = $produit_infos['prix_ht'];
$tbinfos['prix_ttc'] = $produit_infos['prix_ttc'];
$tbinfos['quantite'] = intval($quantite);
$tbinfos['poids'] = $produit_infos['poids'];
// --- enregistrement des informations
$tbl = $this->nom_table('panier');
$cde = $this->creation_requete_insertion($tbl, $tbinfos);
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>ajout_panier</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
return($ok);
}
// --- recuperation des infos du panier
function contenu_panier() {
$tb = array();
// --- valeur de l'identifiant récuperé dans le cookie
$bt_sid = $this->auto_variable('bt_sid', 'c');
if (!$bt_sid) return($tb);
// --- table
$tbl = $this->nom_table('panier');
$cde = "select * from $tbl where sid='$bt_sid'";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>contenu_panier</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['id'];
$tb["$key"] = $row;
}
return($tb);
}
// --- comptage des articles dans le panier
function panier_comptage() {
$nb_articles = 0;
$tb = $this->contenu_panier();
reset($tb);
while (list($cle, $panier_infos) = each($tb)){
$nb_articles += $panier_infos['quantite'];
}
return($nb_articles);
}
// --- modification / suppression d'une ligne dans le panier
function maj_panier($id, $quantite) {
$id = intval($id);
// -- on n'accepte pas de quantite negative
$quantite = abs(intval($quantite));
if (!$id) return(0);
// --- valeur de l'identifiant récuperé dans le cookie
$bt_sid = $this->auto_variable('bt_sid', 'c');
if (!$bt_sid) return(0);
// --- table utilisée
$tbl = $this->nom_table('panier');
// --- suppression si quantité à 0, sinon modification
if ($quantite == 0) {
$cde = "delete from $tbl";
$cde .= " where id=$id and sid='$bt_sid'";
}
else {
$cde = "update $tbl set quantite=$quantite";
$cde .= " where id=$id and sid='$bt_sid'";
}
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>maj_panier</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
return($ok);
}
// --- suppression d'un panier
function suppression_panier() {
$bt_sid = $this->auto_variable('bt_sid', 'c');
if (!$bt_sid) return(0);
// --- table utilisée
$tbl = $this->nom_table('panier');
// --- suppression
$cde = "delete from $tbl where sid='$bt_sid'";
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>suppression_panier</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
return($ok);
}
// --- enregistrement d'une fiche client
function enregistre_client($tbinfos) {
// --- controle des valeurs
if (!is_array($tbinfos) || count($tbinfos)==0) {
return(-1);
}
// ---- table utilisée
$tbl = $this->nom_table('clients');
// --- creation de la requete d'insertion
$cde = $this->creation_requete_insertion($tbl, $tbinfos);
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>enregistre_client</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
if (!$ok) {
return(-1);
}
else {
return(mysql_insert_id());
}
}
// --- récupère les infos sur un client
function infos_clients($id_client, $motpasse='') {
$tb = array();
$id_client = intval($id_client);
if (!$id_client) return($tb);
// ---- table utilisée
$tbl = $this->nom_table('clients');
// --- requête SQL
$cde = "select * from $tbl where id=$id_client";
if ($motpasse) {
$c = $this->quote_smart($motpasse);
$cde .= " and mot_passe='$c'";
}
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>infos_clients</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
$tb = mysql_fetch_array($result, MYSQL_ASSOC);
return($tb);
}
// --- enregistrement d'une commande
function enregistre_commande($tbinfos) {
// --- controle des valeurs
if (!is_array($tbinfos) || count($tbinfos)==0) {
return(-1);
}
// ---- table utilisée
$tbl = $this->nom_table('commandes');
// --- creation de la requete d'insertion
$cde = $this->creation_requete_insertion($tbl, $tbinfos);
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>enregistre_commande</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
if (!$ok) return(-1);
else return(mysql_insert_id());
}
// --- récupère les infos gnérales sur une commande
function infos_commande($id_cde) {
$tb = array();
$id_cde = intval($id_cde);
if (!$id_cde) return($tb);
// ---- table utilisée
$tbl = $this->nom_table('commandes');
// --- requête SQL
$cde = "select * from $tbl where id=$id_cde";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>infos_commande</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
$tb = mysql_fetch_array($result, MYSQL_ASSOC);
return($tb);
}
// --- fonction permettant de récupérer
// --- un tableau de commandes
function tableau_commandes($params='') {
// --- initialisation du tableau dans lequel
// --- on va récupérer les produits
$tb = array();
// --- nom des tables
$tbl_commandes = $this->nom_table('commandes');
// --- valeurs par défaut
if (!is_array($params)) $params = array();
// --- valeurs par défaut : ordre de tri
if (!isset($params['order'])) {
$params['order'] = "$tbl_commandes.dt desc";
}
// --- valeurs par défaut : champs à sélectionner
if (!isset($params['champs'])) {
$params['champs'] = '*';
}
// --- valeurs par défaut : tables utilisées
if (!isset($params['tables'])) {
$params['tables'] = "$tbl_commandes";
}
// --- conditions
$conditions = array();
// --- conditions : statut
if (strlen($params['statut']) > 0) {
$conditions[] = "and $tbl_commandes.statut="
. $params['statut'];
}
// --- conditions : identifiant client
if (intval($params['client_id']) > 0) {
$conditions[] = "and $tbl_commandes.client_id="
. $params['client_id'];
}
// --- conditions : mode de règlement
if (intval($params['mode_reglement']) > 0) {
$conditions[] = "and $tbl_commandes.mode_reglement="
. $params['mode_reglement'];
}
// --- conditions : mode de transport
if (intval($params['mode_transport']) > 0) {
$conditions[] = "and $tbl_commandes.mode_transport="
. $params['mode_transport'];
}
// --- conditions : code pays
if (intval($params['code_pays']) > 0) {
$conditions[] =
"and $tbl_commandes.livraison_code_pays like '"
. $params['livraison_code_pays'] . "'";
}
// --- date minimale
if (strlen($params['date_mini']) > 0) {
$conditions[] = "and TO_DAYS(dt)>=TO_DAYS('" . $params["date_mini"] . "')";
}
// --- date maximale
if (strlen($params['date_maxi']) > 0) {
$conditions[] = "and TO_DAYS(dt)<=TO_DAYS('" . $params["date_maxi"] . "')";
}
// --- requête de comptage si demande
if ($params['comptage'] == 1) {
$cde1 = 'select count(*) as nb from ';
$cde1 .= $params['tables'];
$cde1 .= ' where 1';
// --- ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde1 .= ' ' . $conditions[$i];
}
$result = $this->requete_sql($this->db, $cde1);
while($row = mysql_fetch_object($result)) {
$this->nb_items = $row->nb;
}
}
// --- requête SQL : champs et tables utilises
$cde = 'select ' . $params['champs'];
$cde .= ' from ' . $params['tables'];
$cde .= ' where 1';
// --- requête SQL : ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde .= ' ' . $conditions[$i];
}
// --- requête SQL : option group
if (strlen($params['group']) > 0) {
$cde .= ' group by ' . $params['group'];
}
// --- requête SQL : ordre de tri
if (strlen($params['order']) > 0) {
$cde .= ' order by ' . $params['order'];
}
// --- plage de commandes a récuperer
// --- (pour limiter le nombre ou gerer les pages)
if ($params['nb_maxi']) {
$cde .= " limit " . intval($params['nb_start']);
$cde .= ',' . intval($params['nb_maxi']);
}
// --- requête SQL : recherche des enregistrements
// --- et stockage dans un tableau
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>tableau_commandes</b> $cde (";
echo mysql_num_rows($result) . ")<br>";
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['id'];
$tb["$key"] = $row;
}
return($tb);
}
// --- récupère les détails d'une commande
function infos_commande_details($cde_id) {
$tb = array();
$cde_id = intval($cde_id);
if (!$cde_id) return($tb);
// ---- table utilisée
$tbl = $this->nom_table('commandes_details');
// --- requête SQL
$cde = "select * from $tbl where cde_id=$cde_id";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>infos_commande_details</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['id'];
$tb["$key"] = $row;
}
return($tb);
}
// --- mise à jour du statut d'une commande
function maj_statut_cde($id_cde, $statut) {
$id_cde = intval($id_cde);
$statut = intval($statut);
if (!$id_cde) return(0);
// ---- table utilisée
$tbl = $this->nom_table('commandes');
// --- requête SQL
$cde = "update $tbl set statut="
. $statut . " where id=$id_cde";
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>maj_statut_cde</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
return($ok);
}
// --- transfert d'un panier dans une commande
function transfert_panier($cde_id) {
$tb = $this->contenu_panier();
reset($tb);
// ---- table utilisée
$tbl = $this->nom_table('commandes_details');
$tbinfos = array();
while (list($cle, $panier_infos) = each($tb)){
$tbinfos['cde_id'] = $cde_id;
$tbinfos['prd_id'] = $panier_infos['prd_id'];
$tbinfos['libel'] = $panier_infos['libel'];
$tbinfos['prix_ht'] = $panier_infos['prix_ht'];
$tbinfos['prix_ttc'] = $panier_infos['prix_ttc'];
$tbinfos['quantite'] = $panier_infos['quantite'];
// --- creation de la requete d'insertion
$cde = $this->creation_requete_insertion($tbl,
$tbinfos);
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>enregistre_commande</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
}
}
// --- calcul des frais de port
function calcul_frais_port($params) {
// --- valeur par defaut
$montant = 0.0;
// --- recherche des infos
$tbl = $this->nom_table('tarifs_port');
$cde = "select tarif from $tbl where 1";
$cde .= " and zone=" . $params['zone'];
$cde .= " and mode_transport=" . $params['mode_transport'];
$cde .= " and poids_mini<=" . $params['poids'];
$cde .= " order by poids_mini desc";
$cde .= " limit 1";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>calcul_frais_port</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
$row = mysql_fetch_object($result);
if ($row) $montant = $row->tarif;
// --- arrondi à deux décimales
$montant = round($montant,2);
return($montant);
}
// --- retourne le tableau des modes de paiement
function tableau_mode_paiement() {
// 1 : chèque
// 2 : virement
// 3 : Carte bancaire
// 4 : Paypal
// 5 : Contre Remboursement
$tb = array(1, 2, 3);
return($tb);
}
// --- retourne le tableau des modes de transport
function tableau_mode_transport() {
// 1 : Colis ordinaire
// 2 : Colissimo
// 3 : Chronopost
$tb = array(1, 2, 3);
return($tb);
}
// --- récupère le tableau des pays avec leur code
function tableau_noms_pays($params='') {
// --- initialisation du tableau
// --- dans lequel on va récupérer les catégories
$tb = array();
// --- nom de la table
$tbl = $this->nom_table('pays');
// --- valeurs par défaut
if (!is_array($params)) $params = array();
// --- valeurs par défaut : langue
if (!isset($params['langue'])) {
$params['langue'] = $this->langue;
}
// --- valeurs par défaut : ordre de tri
if (!isset($params['order'])) {
$params['order'] = 'pays';
}
// --- valeurs par défaut : champs a selectionner
if (!isset($params['champs'])) {
$params['champs'] = '*';
}
// --- valeurs par défaut : tables utilisees
if (!isset($params['tables'])) {
$params['tables'] = $tbl;
}
// --- conditions
$conditions = array();
// --- conditions : langue
if (strlen($params['langue']) == 2) {
$c = $params['langue'];
$conditions[] = "and langue like '$c'";
}
// --- requête SQL : champs et tables utilises
$cde = 'select ' . $params['champs'];
$cde .= ' from ' . $params['tables'];
$cde .= ' where 1';
// --- requête SQL : ajout des conditions
for ($i=0; $i<count($conditions); $i++) {
$cde .= ' ' . $conditions[$i];
}
// --- requête SQL : ordre de tri
if (strlen($params['order']) > 0) {
$cde .= ' order by ' . $params['order'];
}
// --- requête SQL : recherche des enregistrements
// --- et stockage dans un tableau
$result = $this->requete_sql($this->db, $cde);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['code'];
$tb["$key"] = $row['pays'];
}
return($tb);
}
// --- recherche une zone en fonction du pays
function code_zone($code_pays) {
$zone = 0;
$tbl = $this->nom_table('pays');
$cde = "select zone from $tbl where 1";
$cde .= " and code like '$code_pays'";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>code_zone</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
$row = mysql_fetch_object($result);
if ($row) $zone = $row->zone;
return($zone);
}
// --- creation d'une requete d'insertion dans une table
function creation_requete_insertion(
$tbl, $tbinfos, $params='') {
if (!$tbl || !is_array($tbinfos) || count($tbinfos)==0) {
return('');
}
if (!is_array($params)) $params = array();
// --- tableau des champs existants dans la table
$tb_champs = $this->tb_champs($this->db, $tbl);
// --- creation des tableaux des champs et des valeurs
reset($tbinfos);
$txt_champs = '';
$txt_valeurs = '';
$i = 0;
while (list($cle, $valeur) = each($tbinfos)) {
// --- ajout dans la requete si le champ existe
if ($tb_champs["$cle"] == 1) {
if ($i >0) {
$txt_champs .= ',';
$txt_valeurs .= ',';
}
$txt_champs .= $cle;
$c = $this->quote_smart($valeur);
if (!is_numeric($valeur)) {
$txt_valeurs .= "'$c'";
}
else {
$txt_valeurs .= $c;
}
$i++;
}
}
// --- creation de la requete
if ($params['replace'] == 1) {
$requete = "replace into $tbl ($txt_champs)";
$requete .= " values ($txt_valeurs)";
}
else {
$requete = "insert into $tbl ($txt_champs)";
$requete .= " values ($txt_valeurs)";
}
return($requete);
}
// --- tableau des champs disponibles dans une table
function tb_champs($base, $table) {
$tb = array();
$result = mysql_list_fields($base, $table);
$n = mysql_num_fields($result);
for ($i=0; $i<$n; $i++) {
$name = mysql_field_name($result, $i);
$tb["$name"] = 1;
}
return($tb);
}
// --- liste les images d'un repertoire
function liste_images($repertoire=".") {
$ext = array("jpg", "png", "jpeg", "gif");
$tb = array();
if($handle = opendir($dirname)) {
while(false !== ($file = readdir($handle))) {
for($i=0;$i<sizeof($ext);$i++) {
if(strstr($file, ".".$ext[$i])) $tb[] = $file;
}
}
closedir($handle);
}
return($tb);
}
// --- liste les vidéos associées à un produit
function liste_videos($prd_id, $repertoire=".") {
$ext = array("mpg", "mpeg", "avi");
$tb = array();
if($handle = opendir($dirname)) {
$racine = $prd_id . '_';
$l = strlen($racine);
while(false !== ($file = readdir($handle))) {
if (substr($file, 0, $l) == $racine) {
for($i=0;$i<count($ext);$i++) {
if(strstr($file, ".".$ext[$i])) $tb[] = $file;
}
}
}
closedir($handle);
}
return($tb);
}
// --- récupère un parametre dans la base
function get_parametre($cle) {
// --- nom de la table
$tbl = $this->nom_table('parametres');
$cde = "select valeur from $tbl";
$cde .= " where code like '$cle'";
$cde .= " and langue like '$this->langue'";
$result = $this->requete_sql($this->db, $cde);
while($row = mysql_fetch_object($result)) {
return($row->valeur);
}
return('');
}
// --- enregistrement des statistiques de trafic
function maj_stats_trafic() {
$ip = $this->auto_variable('REMOTE_ADDR', 's');
$referer = $this->auto_variable('HTTP_REFERER', 's');
$page = $this->auto_variable('HTTP_HOST', 's');
$page .= $this->auto_variable("REQUEST_URI", 's');
$referer = addslashes($referer);
$page = addslashes($page);
$tbl = $this->nom_table('stats_trafic');
$cde = "insert into $tbl
(langue, dt, ip, referer, page)
values
('$this->langue',now(),'$ip','$referer','$page')";
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "maj_stats_trafic (db:$this->db)(cde:$cde)
(erreur:" . mysql_error() . ")<br>";
}
}
// --- fonction de création d'une table html
// --- à partir d'un tableau de valeurs
function creation_table_html($tb_valeurs, $params='') {
// --- parametres par defaut
if (!is_array($params)) $params = array();
if (!isset($params["table_width"])) {
$params["table_width"] = "100%";
}
if (strlen($params["table_border"]) == 0) {
$params["table_border"] = 'border="0"';
}
if (!isset($params["td_align"])) {
$params["td_align"] = "center";
}
if (!isset($params["td_valign"])) {
$params["td_valign"] = "top";
}
// --- calcul de la largeur des colonnes
$params["nbcolonnes"] = intval($params["nbcolonnes"]);
if ($params["nbcolonnes"] <= 0) {
$params["nbcolonnes"] = 2;
}
$l = intval(100 / $params["nbcolonnes"]);
$params["td_width"] = strval($l) . '%';
// --- creation de la table
$txt = '<table ' . $params["table_border"];
$txt .=' width="' . $params["table_width"] . '" ';
$txt .= $params["open_table"] . '>';
// --- ligne de titre
if (strlen($params['titre']) > 0) {
$txt .= '<tr ' . $params['tr_ligne_titre'] . '>';
$txt .= '<th colspan="' . $params['nbcolonnes'] . '">';
$txt .= $params['titre'];
$txt .= '</th></tr>';
}
// --- creation des lignes
$nbtd = 0;
$imax = count($tb_valeurs);
for ($i=0; $i<$imax; $i++) {
if ($nbtd == 0) {
$txt .= '<tr ' . $params["open_tr"] . '>';
}
$txt .= '<td align="' . $params["td_align"] . '"';
$txt .= ' valign="' . $params["td_valign"] . '"';
$txt .= ' width="' . $params["td_width"] . '"';
$txt .= $params["open_td"] . '>';
$txt .= $tb_valeurs[$i] . '</td>';
$nbtd++;
if ($nbtd == $params["nbcolonnes"]) {
$nbtd = 0;
$txt .= '</tr>';
}
}
// --- colonnes manquantes
if (($nbtd>0) && ($nbtd<$params["nbcolonnes"])) {
for($i=$nbtd; $i<$params["nbcolonnes"]; $i++) {
$txt .= '<td ' . $params["open_td"] . '></td>';
}
$txt .= '</tr>';
}
// --- fin de la table
$txt .= '</table>';
return($txt);
}
// --- récupère la valeur d'une variable
function auto_variable($nom, $order='GPC') {
for ($i=0; $i<strlen($order); $i++) {
$x = strtoupper(substr($order, $i, 1));
if (phpversion() < "4.1.0") {
if ($x == 'G' && !isset($valeur)) {
$valeur = $GLOBALS['GET_VARS']["$nom"];
}
if ($x == 'P' && !isset($valeur)) {
$valeur = $GLOBALS['POST_VARS']["$nom"];
}
if ($x == 'C' && !isset($valeur)) {
$valeur = $GLOBALS['COOKIE_VARS']["$nom"];
}
if ($x == 'S' && !isset($valeur)) {
$valeur = $GLOBALS["$nom"];
}
}
else {
if ($x == 'G' && !isset($valeur)) {
$valeur = $_GET["$nom"];
}
if ($x == 'P' && !isset($valeur)) {
$valeur = $_POST["$nom"];
}
if ($x == 'C' && !isset($valeur)) {
$valeur = $_COOKIE["$nom"];
}
if ($x == 'S' && !isset($valeur)) {
$valeur = $_SERVER["$nom"];
}
}
}
return($valeur);
}
// --- fonction de protection d'une requête SQL
function quote_smart($valeur) {
if (phpversion() < "4.3.0") {
$valeur = addslashes($valeur);
}
else {
// --- stripslashes
if (get_magic_quotes_gpc()) {
$valeur = stripslashes($valeur);
}
// --- protection si ce n'est pas un entier
if (!is_numeric($valeur)) {
$valeur = mysql_real_escape_string($valeur);
}
}
return $valeur;
}
// --- retourne le début d'un texte
// --- et complète avec trois points de suspension
function debut_texte($texte, $nb_cars) {
$nb_cars = intval($nb_cars);
if (!$nb_cars || !$texte) return($texte);
if (strlen($texte) <= $nb_cars) return($texte);
$nouveau_texte = substr($texte, 0, $nb_cars-3);
$nouveau_texte .= '...';
return($nouveau_texte);
}
// --- controle une adresse email
function controle_email($email) {
if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@
[[:alnum:]]([-_.]?[[:alnum:]])*.([a-z]{2,4})$`',$email)) {
return(0);
}
return(1);
}
// --- fcontion d'affichage des prix en euros
function affiche_prix($prix) {
$txt = number_format($prix, 2, ',' , ' ') . ' €';
return($txt);
}
}
?>
[/php]
le mieux pour comprendre serait encore de télécharger le fichier complet ici :
[url]http://www.weblobsdesigner.eu/Telechargements.html[/url]