Page 1 sur 1

Problème affichage bloc php sur index.php

Posté : 13 avr. 2008, 09:28
par stefde3
Bonjour a toute la communauté du PHP,

voici mon petit souci, que, j'espère, vous allez pouvoir m'aider à résoudre...

je suis en train de créer une E-Boutique de Démo (comme vitrine) mais un problème est survenu lors de son installation. En effet je n'arrive pas à afficher dans mon panneau de Gestion mes fiches Produits. Je rempli le Tableau et jusque là tout va bien (sauf pour la case 'ID' du produit que je ne peux pas remplir) et une fois que je valide la fiche je reviens sur la page qui est supposer affichée la liste dans un tableau de tous mes produits enregistrés... mais là rien... vide !

il en va de soit que le problème se répercute également sur ma page index.php de ma Boutique :

http://e.come.ifrance.com/webmarchand/index.php

voici le script complet de mon module_adm_produits.php :
<?php
// --- gestion des fiches produits
$contenu = '';
$prg_code = '2010';

// --- variables
$module = $boutique->auto_variable('module');
$mode = $boutique->auto_variable('mode');

// ---récupération du tableau des produits
$params = array('actif'=>0, 'order'=>'id desc');
$td_produits = $boutique->tableau_produits($params);

// --- récupération du tableau des fournisseurs
$tb_fournisseurs = $boutique->tableau_fournisseurs();

// --- récupération du tableau des catégories
$tb_categories = $boutique->tableau_categories();

// --- titre du programme
$tb_blocs['bloc_adm_titre'] = $boutique->adm_menu_libel($prg_code);

// --- fonction pour afficher une ligne
// --- en mode visualisation de la fiche produit
function affiche_ligne($libel, $valeur) {
	$txt = '<tr class="ligne_contenu">
		<td>' . $libel . ':</td>
		<td valign="top">'
		. $valeur
		. '</td></tr>';
	return($txt);
}

// --- visualisation d'une fiche produit
if ($mode == 'visu') {
	$edit_id = $boutique->auto_variable('edit_id');
	$formvars = $boutique->infos_produit($edit_id);
	// --- en tête de la table
	$contenu .= '<table border="0" cellspacing="1"
  	cellpadding="3" class="contenu" align="center">'
		. '<tr class="ligne_titre">'
		. '<td colspan="2">'
		. $tr_adm_fiche_produit
		. '</td></tr>';
	// --- identifiant produit
	$contenu .= affiche_ligne($tr_adm_id,
		$formvars['id']);
	// --- libelle 
	$contenu .= affiche_ligne($tr_adm_libel,
		$formvars['libel']);
	// --- description
	$contenu .= affiche_ligne($tr_adm_description,
		nl2br($formvars['description']));
	// --- mots clés
	$contenu .= affiche_ligne($tr_adm_keywords,
		nl2br($formvars['keywords']));
	// --- référence
	$contenu .= affiche_ligne($tr_reference,
		$formvars['reference']);
	// --- date d'entrée
	$contenu .= affiche_ligne($tr_date_entree,
		$formvars['date_entree']);
	// --- fournisseur
	$id_fourn = $formvars['id_fourn'];
	$contenu .= affiche_ligne($tr_fournisseur,
		$tb_fournisseurs["$id_fourn"]);
	// --- prix ttc
	$contenu .= affiche_ligne($tr_prix_ttc,
		$formvars['prix_ttc']);
	// --- stock
	$contenu .= affiche_ligne($tr_stock,
		$formvars['stock']);
	// --- stock mini
	$contenu .= affiche_ligne($tr_stock_mini,
		$formvars['stock_mini']);
	// --- délai de livraison
	$contenu .= affiche_ligne($tr_delai_livraison,
		$formvars['delai']);
	// --- poids
	$contenu .= affiche_ligne($tr_poids,
		$formvars['poids']);
	// --- produit actif ?
	if ($formvars['actif'] == 1 || $edit_id==0) {
		$txt_actif = $tr_oui;
	}
	else {
		$txt_actif = $tr_non;
	}
	$contenu .= affiche_ligne($tr_actif,
		$$txt_actif);
	// --- catégories
	$params = array('prd_id'=>$edit_id);
	$tb = $boutique->tableau_prd_categories($params);
	$txt = '';
	while (list($id, $info) = each($tb)) {
		$c = $info['code_cat'];
		$txt .= '<li>' . $tb_categories["$c"]['libel'] . '</li>';
	}
	$contenu .= affiche_ligne($tr_categories, $txt);
	// --- photos pour ce produit
	$params = array('prd_id'=>$edit_id);
	$tb_photos = $boutique->tableau_photos($params);
	if (count($tb_photos) > 0) {
		$tb_valeurs = array();
		while (list($id, $photo_infos) = each($tb_photos)) {
			// --- largeur maximale : 120 pixels
			if ($photo_infos['largeur'] > 120) {
				$txt_width = '120';
			}
			else {
				$txt_width = $photo_infos['largeur'];
			}
			// --- lien vers la photo en taille réelle
			$url = $cf_url_base . 'photos/' . $photo_infos['nom'];
			// --- stockage de l'image dans un tableau
			$tb_valeurs[] = '<a href="' . $url . '">
			<img src="' . $cf_url_base . 'photos/'
			. $photo_infos['nom']
			. '" class="image" width="'
			. $txt_width . '"></a><br>'
			. $photo_infos['largeur']
			. 'x'
			. $photo_infos['hauteur'];
		}
		$params = array('nbcolonnes'=>4,
			'td_align'=>'center',
			'titre'=>$tr_photos);
		$contenu .= '<tr class="ligne_contenu">
			<td valign="top" colspan="2">'
			. $boutique->creation_table_html($tb_valeurs, $params)
			. '</td></tr>';
	}
	$contenu .= '</table>';
}

// --- édition d'un produit
if ($mode == 'edit' || $mode == 'insertion') {
	$code = $boutique->auto_variable('code');
	// --- mode modification ou visualisation
	if ($mode == 'edit') {
		$edit_id = $boutique->auto_variable('edit_id');
    $formvars = $boutique->infos_produit($edit_id);
		$titre_table = $tr_adm_edit_produit;
	}
	// --- mode insertion
	else {
		$formvars = array();
		$edit_id = 0;
		$titre_table = $tr_adm_ajouter_produit;
	}
	// --- en tête du formulaire
	$contenu .= '<FORM action="index.php" method="post"
		enctype="multipart/form-data">
	  <INPUT name="mode" type=hidden value="validation">
	  <INPUT name="module" type=hidden value="'
	  . $module
	  . '">
	  <INPUT name="edit_id" type=hidden value="'
	  . $edit_id
	  . '">';
	// --- en tête de la table
	$contenu .= '<table border="0" cellspacing="1"
  	cellpadding="3" class="contenu" align="center">'
		. '<tr class="ligne_titre">'
		. '<td colspan="2">'
		. $titre_table
		. '</td></tr>';
	// --- identifiant produit
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_adm_id . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[libel]" size="10"
		    VALUE="' . $formvars['id']
		. '"></td></tr>';
	// --- libelle 
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_adm_libel . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[libel]" size="70"
			VALUE="' . $formvars['libel']
		. '"></td></tr>';
	// --- description
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_adm_description . ':</td>
		<td valign="top">
		<textarea rows="3" cols="50" name="formvars[description]">'
		. $formvars['description']
		. '</textarea></td></tr>';
	// --- mots clés
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_adm_keywords . ':</td>
		<td valign="top">
		<textarea rows="3" cols="50" name="formvars[keywords]">'
		. $formvars['keywords']
		. '</textarea></td></tr>';
	// --- référence
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_reference . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[reference]" size="10"
		VALUE="' . $formvars['reference']
		. '"></td></tr>';
	// --- date d'entrée
	if (strlen($formvars['date_entree']) == 0) {
		$formvars['date_entree'] = date("Y-m-d");
	}
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_date_entree . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[date_entree]" size="10"
		VALUE="' . $formvars['date_entree']
		. '"></td></tr>';
	// --- fournisseur
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_fournisseur . ':</td>
		<td valign="top">
		<select name="formvars[id_fourn]" size="1">
		<option value="0">';
	reset($tb_fournisseurs);
	while (list($cle, $info_fourn) = each($tb_fournisseurs)){
		if ($info_fourn['id'] == $formvars['id_fourn']) {
			$contenu .= '<option value="' . $info_fourn['id']
			  . '" selected>';
		}
		else {
			$contenu .= '<option value="'
			. $info_fourn['id'] . '">';
		}
		$contenu .= $info_fourn['nom'] . '</option>';
	}
	$contenu .= '</select></td></tr>';
	// --- prix ttc
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_prix_ttc . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[prix_ttc]" size="10"
		VALUE="' . $formvars['prix_ttc']
		. '"></td></tr>';
	// --- stock
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_stock . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[stock]" size="10"
		VALUE="' . $formvars['stock']
		. '"></td></tr>';
	// --- stock mini
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_stock_mini . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[stock_mini]" size="10"
		VALUE="' . $formvars['stock_mini']
		. '"></td></tr>';
	// --- délai de livraison
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_delai_livraison . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[delai]" size="10"
		VALUE="' . $formvars['delai']
		. '"></td></tr>';
	// --- poids
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_poids . ':</td>
		<td valign="top">
		<input TYPE="text" name="formvars[poids]" size="10"
		VALUE="' . $formvars['poids']
		. '"></td></tr>';
	// --- produit actif ?
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_actif . ':</td>
		<td valign="top"><select name="formvars[actif]">';
	if ($formvars['actif'] == 1 || $edit_id==0) {
		$contenu .= '<option value="1" selected>' . $tr_oui;
		$contenu .= '<option value="0">' . $tr_non;
	}
	else {
		$contenu .= '<option value="1">' . $tr_oui;
		$contenu .= '<option value="0"selected>' . $tr_non;
	}
	$contenu .= '</select></td></tr>';
	// --- catégories
	$tb_cats = array();
	if ($edit_id > 0) {
    $params = array('prd_id'=>$edit_id);
    $tb = $boutique->tableau_prd_categories($params);
    while (list($id, $info) = each($tb)) {
		  $tb_cats[] = $info['code_cat'];
    }
	}
	// --- on force le tableau à 3 éléments
	while (count($tb_cats) < 3) {
		$tb_cats[] = '';
	}
	$contenu .= '<tr class="ligne_contenu"><td>'
	. $tr_categories
	. ':</td><td valign="top">';
	for ($i=0; $i<count($tb_cats); $i++) {
		$contenu .= '<select name="formvars[code_cat][]">
		<option value=""></option>';
		// --- liste des catégories
		reset($tb_categories);
		while (list($code_cat, $info) = each($tb_categories)) {
			if ($code_cat == $tb_cats[$i]) $s = ' selected';
			 else $s = '';
			$contenu .= '<option value="' . $code_cat . '"' . $s . '>'
				. $info['libel'] . '</option>';
		}
		$contenu .= '</select>';
	}
	$contenu .= '</td></tr>';
	// --- photos pour ce produit
	if ($edit_id > 0) {
    $params = array('prd_id'=>$edit_id);
    $tb_photos = $boutique->tableau_photos($params);
    if (count($tb_photos) > 0) {
      $tb_valeurs = array();
      while (list($id, $photo_infos) = each($tb_photos)) {
			 // --- largeur maximale : 120 pixels
			 if ($photo_infos['largeur'] > 120) {
				$txt_width = '120';
			 }
			 else {
				$txt_width = $photo_infos['largeur'];
			 }
			 // --- lien vers la photo en taille réelle
			 $url = $cf_url_base . 'photos/' . $photo_infos['nom'];
			 // --- stockage de l'image dans un tableau
			 $tb_valeurs[] = '<a href="' . $url . '">
			 <img src="' . $cf_url_base . 'photos/'
			 . $photo_infos['nom']
			 . '" class="image" width="'
			 . $txt_width . '"></a><br>'
			 . $photo_infos['largeur']
			 . 'x'
			 . $photo_infos['hauteur'];
		  }
		  $params = array('nbcolonnes'=>4,
			 'td_align'=>'center',
			 'titre'=>$tr_photos);
		  $contenu .= '<tr class="ligne_contenu">
			 <td valign="top" colspan="2">'
			. $boutique->creation_table_html($tb_valeurs, $params)
			. '</td></tr>';
    }
	}
	// --- téléchargement des photos
	$contenu .= '<tr class="ligne_contenu">
		<td>' . $tr_photos . ':</td>
		<td valign="top">
		<input name="userfile[]" type="file" size="10">
		<input name="userfile[]" type="file" size="10">
		<input name="userfile[]" type="file" size="10">
		</td></tr>';
	
	// --- validation et fin de la forme
	$contenu .= '<tr class="ligne_contenu">
	  <td colspan="2" align="center">
	  <input type="submit" value="'
	  . $tr_adm_valider
	  . '">
	  </td></tr>';
	$contenu .= '</table></form>';
}

// --- validation des modifications
if ($mode == 'validation') {
	$edit_id = $boutique->auto_variable('edit_id');
	$formvars = $boutique->auto_variable('formvars');
	if ($debug) print_r($formvars);
	// --- tables
	$tbl_produits = $boutique->nom_table('produits');
	$tbl_photos = $boutique->nom_table('prd_photos');
	$tbl_prd_description = $boutique->nom_table('prd_description');
	// --- création ou modification ?
	$params = array('cle_primaire'=>'prd_id');
   // --- fiche produit
	if ($edit_id  > 0) {
		$requete = $boutique->creation_requete_modification($tbl_produits,
	  	$formvars, $edit_id, $params);
		$ok = $boutique->requete_sql($db, $requete);
		$prd_id = $edit_id;
	}
	else {
		$requete = $boutique->creation_requete_insertion($tbl_produits,
	  	$formvars);
		$ok = $boutique->requete_sql($db, $requete);
		$prd_id = mysql_insert_id();
	}
  // --- description
  $tbinfos = array('prd_id'=>$prd_id, 'langue'=>$langue, 'libel'=>$formvars['libel'],
    'description'=>$formvars['description'], 'keywords'=>$keywords['libel']);
  $cde = "select id from $tbl_prd_description where prd_id=$prd_id and langue like '$langue'";
  $result = $boutique->requete_sql($db, $cde);
  $n = mysql_num_rows($result);
  while($row = mysql_fetch_object($result)) { $pr_desc_id = $row->id; }
	if ($n > 0) $requete = $boutique->creation_requete_modification($tbl_prd_description,	$tbinfos, $pr_desc_id);
	 else $requete = $boutique->creation_requete_insertion($tbl_prd_description, $tbinfos);
	$ok = $boutique->requete_sql($db, $requete);
	// --- enregistrement des catégories
	$boutique->enregistre_prd_categories($prd_id,
	  $formvars['code_cat']);
	// --- enregistrement de l'indexation
	$texte = $formvars['libel'] . ' '
	  . $formvars['description'] . ' '
	  . $formvars['keywords'];
	$boutique->indexation_produit($prd_id, $texte);
	
	// --- téléchargement des images
	for ($i=0; $i<count($_FILES['userfile']['name']); $i++) {
		$fichier_tmp = $_FILES['userfile']['tmp_name'][$i];
		$nom_image = basename($_FILES['userfile']['name'][$i]);
		$destination = $cf_repertoire_base
		  . 'photos/' . $nom_image;
		if (strlen($fichier_tmp) > 0) {
			if (move_uploaded_file($fichier_tmp, $destination)) {
				$contenu .= '<p align="center">'
				. $destination . ': '
				. $tr_telechargement_ok
				. '</p>';
				// --- enregistrement des informations
				// --- concernant la photo dans la base
				$infos_photos = array();
				$infos_photos['prd_id'] = $prd_id;
				$infos_photos['nom'] = $nom_image;
				$tmptb = getimagesize($destination);
				$infos_photos['largeur'] = $tmptb[0];
				$infos_photos['hauteur'] = $tmptb[1];
				$requete = $boutique->creation_requete_insertion(
					$tbl_photos, $infos_photos);
				$ok = $boutique->requete_sql($db, $requete);
			}
			else {
				$contenu .= '<p align="center">'
				. $destination . ': '
				. $tr_telechargement_pb
				. '</p>';
			}
		}
	}
	// --- retour à la liste
	$mode = 'liste';
}

// --- demande de confirmation avant suppression
if ($mode == 'confirmation_suppression') {
	$edit_id = $boutique->auto_variable('edit_id');	
	// --- en tête du formulaire
	$contenu .= '<FORM action="index.php" method="post">
	  <INPUT name="mode" type=hidden value="suppression">
	  <INPUT name="module" type=hidden value="'
	  . $module
	  . '">
	  <INPUT name="edit_id" type=hidden value="'
	  . $edit_id
	  . '">';
	// --- en tête de la table
	$contenu .= '<table border="0" cellspacing="1"
  	cellpadding="3" class="contenu" align="center">'
		. '<tr class="ligne_titre"><td>'
		. $tr_adm_confirmation
		. '</td></tr>';
	// --- message de confirmation
	$contenu .= '<tr class="ligne_contenu">
		<td align="center" valign="middle" height="100">'
		. $tr_adm_msg_confirme_annulation
		. '</td></tr>';
	// --- validation et fin de la forme
	$contenu .= '<tr class="ligne_contenu">
	  <td colspan="2" align="center">
	  <input type="submit" name="bt_submit" value="'
	  . $tr_non
	  . '">
	  <input type="submit" name="bt_submit" value="'
	  . $tr_oui
	  . '">
	  </td></tr>';
	$contenu .= '</table></form>';
}

// --- validation des suppressions
if ($mode == 'suppression') {
	if ($_POST['bt_submit'] == $tr_oui) {
		$edit_id = $boutique->auto_variable('edit_id');
		$tbl = $boutique->nom_table('produits');
    $requete = "delete from $tbl where prd_id=$edit_id";
		$ok = $boutique->requete_sql($db, $requete);
	}
	// --- retour à la liste
	$mode = 'liste';
}

// --- critères de sélection
if ($mode == 'selection' || !$mode) {
	// --- en tête du formulaire
	$contenu .= '<FORM action="index.php" method="post">
	  <INPUT name="mode" type=hidden value="liste">
	  <INPUT name="module" type=hidden value="'
	  . $module . '">';
	// --- table de sélection des critères
	$contenu .= '<table border="0" cellspacing="1"
  	cellpadding="3" class="contenu" align="center">'
		. '<tr class="ligne_titre">'
		. '<td>' . $tr_categorie . '</td>'
		. '<td>' . $tr_fournisseur . '</td>'
		. '<td>' . $tr_actif . '</td>'
		. '<td>' . $tr_adm_keywords . '</td>'
		. '<td>&nbsp;</td>'
		. '</tr>';
	// --- saisie des critères
	$contenu .= '<tr class="ligne_contenu">';
	// --- critère : catégorie

	$contenu .= '<td align="center">
		<select name="selection[code_cat]" size="1">
		<option value="">' . $tr_tout;
	reset($tb_categories);
	while (list($cle, $info) = each($tb_categories)) {
		$contenu .= '<option value="'. $info['code'] . '">'
		. $info['libel'] . '</option>';
	}
	$contenu .= '</select></td>';

	// --- critère : fournisseur
	$contenu .= '<td align="center">
		<select name="selection[id_fourn]" size="1">
		<option value="0">' . $tr_tout;
	reset($tb_fournisseurs);
	while (list($cle, $info) = each($tb_fournisseurs)){
		$contenu .= '<option value="'. $info['id'] . '">'
		. $info['nom'] . '</option>';
	}
	$contenu .= '</select></td>';
	// --- critère : actif
	$contenu .= '<td align="center">
		<select name="selection[actif]" size="1">
		<option value="0">' . $tr_tout . '</option>
		<option value="1">' . $tr_actif . '</option>
	  </td>';
	// --- critère : mots clés
	$contenu .= '<td valign="top">
		<input TYPE="text" name="selection[keywords]" size="10">
		</td>';
	// --- validation et fin de la forme
	$contenu .= '<td align="center">
	  <input type="submit" value="OK">
	  </td></tr>';
	$contenu .= '</table></form>';
	// --- lien pour ajout d'un produit
	$params = array('module'=>$module,
		  'mode'=>'insertion',);
	$url = $boutique->creation_adm_url($params);
	$contenu .='<p align="center">
	  <a href="' . $url . '">'
	  . $tr_adm_ajouter_produit
	  . '</a></p>';
}

// --- liste des produits
if ($mode == 'liste') {
	// --- liste avec critères de selection
	$selection = $boutique->auto_variable('selection');
  $params = array('actif'=>0);
	if (is_array($selection)) {
		$params['id_fourn'] = $selection['id_fourn'];
		$params['code_cat'] = $selection['code_cat'];
		$params['actif'] = $selection['actif'];
		$params['keywords'] = $selection['keywords'];
	}
  // --- récupération du tableau des produits
  $tb_produits = $boutique->tableau_produits($params);
	// --- en tête de la table
	$contenu .= '<table border="0" cellspacing="1"
  	cellpadding="3" class="contenu" align="center">'
		. '<tr class="ligne_titre">'
		. '<td>&nbsp;</td>'
		. '<td>' . $tr_adm_id . '</td>'
		. '<td>' . $tr_adm_libel . '</td>'
		. '<td>' . $tr_date_entree . '</td>'
		. '<td>' . $tr_reference . '</td>'
		. '<td>' . $tr_fournisseur . '</td>'
		. '<td>' . $tr_prix_ttc . '</td>'
		. '<td>' . $tr_poids . '</td>'
		. '<td>' . $tr_stock . '</td>'
		. '<td>' . $tr_stock_mini . '</td>'
		. '<td>' . $tr_actif . '</td>'
		. '<td>' . $tr_ventes . '</td>'
		. '</tr>';

	// --- boucle sur les produits
	while (list($cle, $info) = each($tb_produits)){
		// --- url pour la visualisation
		$params = array('module'=>$module,
		  'mode'=>'visu',
		  'code'=>$cle,
		  'edit_id'=>$info['prd_id']);
		$url_visu = $boutique->creation_adm_url($params);
		// --- url pour la modification
		$params = array('module'=>$module,
		  'mode'=>'edit',
		  'code'=>$cle,
		  'edit_id'=>$info['prd_id']);
		$url_edit = $boutique->creation_adm_url($params);
		// --- url pour la suppression
		$params = array('module'=>$module,
		  'mode'=>'confirmation_suppression',
		  'code'=>$cle,
		  'edit_id'=>$info['prd_id']);
		$url_suppression = $boutique->creation_adm_url($params);
		// --- texte pour le produit actif
		if ($info['actif'] == 1) {
			$txt_actif = $tr_oui;
		}
		else {
			$txt_actif = '<a font color="#FF0000">'
			  . $tr_non . '</font>';
		}
		// --- nom du fournisseur
		$c = $info['id_fourn'];
		$txt_fournisseur = $c . ' '
		  . $tb_fournisseurs["$c"]['nom'];
		// --- affichage de la ligne
		$contenu .= '<tr class="ligne_contenu">
		  <td>
		  <a href="' . $url_edit . '">
			<img src="images/b_edit.png" border="0" alt="'
			. $tr_adm_edit . '"></a>
			<a href="' . $url_suppression . '">
			<img src="images/b_drop.png" border="0" alt="'
			. $tr_adm_supprimer . '"></a>
			</td>
			<td valign="top">' . $info['prd_id'] . '</td>
			<td valign="top"><a href="' . $url_visu . '">'
			  . $info['libel'] . '</a></td>
			<td valign="top">' . $info['date_entree'] . '</td>
			<td valign="top">' . $info['reference'] . '</td>
			<td valign="top">' . $txt_fournisseur . '</td>
			<td valign="top" align="right">'
			. $info['prix_ttc'] . '</td>
			<td valign="top">' . $info['poids'] . '</td>
			<td valign="top" align="right">'
			. $info['stock'] . '</td>
			<td valign="top" align="right">'
			. $info['stock_mini'] . '</td>
			<td valign="top" align="center">'
			. $txt_actif . '</td>
			<td valign="top">' . $info['ventes'] . '</td>
			</tr>';
	}
	$contenu .= '</table>';
	// --- lien pour ajout d'un produit

	$params = array('module'=>$module,
		  'mode'=>'insertion',);
	$url = $boutique->creation_adm_url($params);
	$contenu .='<p align="center">
	  <a href="' . $url . '">'
	  . $tr_adm_ajouter_produit
	  . '</a></p>';

}

// --- ajout du contenu dans le bloc principal
$tb_blocs['bloc_adm_principal'] .= $contenu;

?>
Alors si quelqu'un pouvait me dire ce qui cloche dans mon code se serait très gentil de votre part ^^

Dans ma page index.html de mon gestionnaire, le code indique bien le cadre spécifique :

Code : Tout sélectionner

<bloc_adm_principal>
ou doit s'afficher l'info. tout le reste fonctionne bien sinon.

Merci de m'aider... je désespère :((

Je viens de modifier également ma ligne 'ID' pour y inscrire des infos de mon choix mais le problème persiste...

Cordialement,

Posté : 13 avr. 2008, 12:07
par Victor BRITO
À quoi correspond la variable $boutique ? :?

Posté : 13 avr. 2008, 12:08
par stefde3
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

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, ',' , ' ') . '&nbsp;&euro;';
		return($txt);
	}
}

?>
le mieux pour comprendre serait encore de télécharger le fichier complet ici :

http://www.weblobsdesigner.eu/Telechargements.html