Riskbreaker

Utilisateur open source
  • Compteur de contenus

    31
  • Inscrit(e) le

  • Dernière visite


Messages posté(e)s par Riskbreaker


  1. Je précise avant de publier le code de la page, que la méthode de recherche affiche les résultats sous forme de tableau et de lignes... C'est donc différent de l'original.

    Pour voir comment cela rend, rendez vous ici : http://chateaupartner.com/index.html et faites une recherche avec "michel" par exemple (pas encore rentré les produits définitifs =p).

    Ou alors, regardez dans n'importe quelle rubrique comme "meilleures ventes", etc... Tout est affiché de la même manière.

    Voici donc ma page recherche.php :

    <?
    include("../configuration.inc.php");
    $DOC_TITLE = "Chateau Partner - Recherche";
    include("$repertoire_modele/haut.php");
    ?>
    <table border="0" cellpadding="1" cellspacing="4" width="100%">
    <tr>
    <td class="titre" colspan="2">
    <table cellpadding="0" cellspacing="0" border="0" >
    <tr><td class="tetiere" align="center" >Recherche</td></tr>
    </table>
    <p></p>
    <p></p>
    Résultat de votre recherche
    </tr>
    <tr>
    <td colspan="2" height="20"><img src="<?=$wwwroot?>/images/blank.gif" height="20" alt="" /></td>
    </tr>

    <?
    if(!isset($start)) {$start=0;}

    $recherche=strtolower($motclef); //on passe en minuscule
    $mots = str_replace("+", " ", trim($recherche)); //on remplace les + par des espaces
    $mots = str_replace("\"", " ", $mots); //idem pour \
    $mots = str_replace(",", " ", $mots); //idem pour ,
    $mots = str_replace(":", " ", $mots); //idem pour :
    $recherche=rawurlencode($recherche); //on encode la recherche

    $tab=explode(" " , $mots);
    $count=count($tab);

    $sql="select * from peel_produits where etat='1' and ( nom like \"%$tab[0]%\" or reference like \"%$tab[0]%\" or millesime like \"%$tab[0]%\" ) ";

    for($i=1 ; $i<$count; $i++)
    {
    $sql.="AND ( nom like \"%$tab[$i]%\" or reference like \"%$tab[$i]%\" or millesime like \"%$tab[$i]%\" )";
    }


    // On met dans une variable le nombre de vins qu'on veut par page
    $nombreDeVinsParPage = 20;

    // On récupère le nombre total de vins
    $req = mysql_query($sql);
    $totalDesVins = mysql_numrows($req);

    // On calcule le nombre de pages à créer
    $nombreDePages = ceil($totalDesVins / $nombreDeVinsParPage);



    ?>

    </p>

    <?php

    // on affiche les vins

    if (isset($_GET['page']))
    {
    $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
    $page = 1; // On se met sur la page 1 (par défaut)
    }


    // On calcule le numéro du premier vin qu'on prend pour le LIMIT de MySQL
    $premierVinAafficher = ($page - 1) * $nombreDeVinsParPage;

    $reponse = mysql_query( "$sql ORDER BY nom LIMIT $premierVinAafficher , $nombreDeVinsParPage") or die(mysql_error());


    // fin de la requete

    if (mysql_num_rows($reponse) == 0) //compteur de resultats
    {

    echo "<tr><td colspan=\"2\" class=\"normal\">Nous n'avons pas trouvé de résultats incluant le mot clé <b>". stripslashes($_GET['recherche']) ."</b>.<p></p><b>Suggestions :</b><br /><li type=\"square\"> Vérifiez l’orthographe du mot clé.<br /><li type=\"square\"> Essayez d'autres mots.<br /><li type=square> Utilisez des mots plus généraux.<p></p><a href=\"$wwwroot/catalogue.php\" class=\"normal\"><b>Cliquez ici</b></a> pour consulter directement notre catalogue.</td></tr>";

    }
    else
    {
    ?>

    <tr bgcolor="#eeeeee">
    <td class="label">Appellation</td>
    <td class="label">Château</td>
    <td class="label">Millésime</td>
    <td class="label">Prix € TTC</td>
    </tr>
    <?

    $o=0;

    while($sortie=mysql_fetch_array($reponse))
    {

    echo " <tr>
    <td class=\"normal\">$sortie[reference]</td>
    <td class=\"normal\">";
    ?>

    <a href="<?echo $wwwroot?>/achat/produit-details-<?=$sortie['id'] ?>-<?=$catid?>.htm"><?echo stripslashes($sortie['nom']) ?>

    <?
    echo " </a></td>
    <td class=\"normal\">$sortie[millesime]</td>
    <td class=\"normal\">$sortie[prix] €</td>
    </tr>";

    } // fin de boucle

    echo "<tr><td>";
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
    echo ' - <a href="?motclef='.$_GET[motclef].'&page=' . $i . '">' . $i . '</a>';
    }
    echo "</tr></td>";
    }
    ?>
    </td></tr>

    </table>
    <?
    include("$repertoire_modele/bas.php");
    ?>
    [/codebox]

    J'espère que vous vous y retrouverez ... ;)


  2. Exact, je m'étais trompé dans la 2e partie à changer. J'ai modifié mon post initial, mais il faudrait tester pour être sûr (je ne peux pas, car j'ai changé trop de choses pour pouvoir le faire...).

    Donc je récapitule ce qu'il faudrait tester :

    Remplacer :

    $result=mysql_query("SELECT COUNT(*) FROM peel_produits WHERE nom LIKE '%" . addslashes($_GET['motclef']) . "%' ");

    $row=mysql_fetch_row($result);

    Par :

    $req = mysql_query($sql);

    $row = mysql_numrows($req);

    Tenez moi au courant, au pire des cas, je vous donnerai ma page recherche.php qui fonctionne sans erreur (en fait, j'ai modifié le code pour l'affichage des liens 'page précédente' et 'page suivante').


  3. Bonjour,

    Depuis quelques jours j'essaie d'integrer à la partie admin dans la rubrique "utilisateurs" un petit module de recherche permettant d'afficher les clients en fonction de plusieurs critères de recherche (comme le nom, le prénom, quelques caractéristiques du produit, la catégorie, etc...)

    L'interêt est pour la newsletter : pouvoir récupérer les noms de clients susceptibles d'être interressés par telle ou telle offre.

    J'ai donc essayé dintroduire un petit module comme pour la page "administrer/produits.php"

    La requête affiche bien les clients qui ont acheté un produit, mais ne prend pas en compte les critères de recherche...

    Si une âme chartible pouvait m'aider à résoudre ce petit problème....

    Voici le petit module de recherche et sa requête. (je vous passe le code du formulaire qui est très simple à faire) :

    <?php

    $start = vn($_REQUEST['start']);// Détermine la variable start (début de page)

    $nb = 10;

    $order = "u.email";

    $sort = "desc";

    $where = "";

    if (isset($frm['nom_c'])) {if (!empty($frm['nom_c'])) {$where .= " AND u.nom_famille LIKE '%".$frm['nom_c']."%'";}} <-- Nom du client

    if (isset($frm['prenom_c'])) {if (!empty($frm['prenom_c'])) {$where .= " AND u.prenom LIKE '%".$frm['prenom_c']."%'";}} <-- Prénom du client

    if (isset($frm['email_c'])) {if (!empty($frm['email_c'])) {$where .= " AND u.email = '".$frm['email_c']."'";}} //email du client

    if (isset($frm['nom'])) {if (!empty($frm['nom'])) {$where .= " AND ca.nom_produit = '".$frm['nom']."'";}} // Nom du produit (ce sont des vins)

    if (isset($frm['millesime'])) {if (!empty($frm['millesime'])) {$where .= " AND ca.millesime = '".$frm['millesime']."'";}} // millésime du produit

    if (isset($frm['prix'])) {if (!empty($frm['prix'])) {$where .= " AND ca.prix = '".$frm['prix']."'";}} // prix du produit à l'unité

    if (isset($frm['nbparpage'])) {if (!empty($frm['nbparpage'])) {$nb = $frm['nbparpage'];}} //nombre d'enregistrement par page

    if (isset($frm['total'])) {if ($frm['total'] != "NULL") {$where .= " AND cm.montant = '".$frm['total']."'";}} //montant total d'une commande

    if (isset($frm['categorie']) && !empty($frm['categorie'])) // Catégorie du produit

    {

    if ($frm['categorie'] != "NULL") {$where .= " AND ct.id = '".$frm['categorie']."'";}

    $sql = "SELECT DISTINCT u.id_utilisateur, u.prenom, u.nom_famille, u.email, u.priv

    FROM peel_commandes cm

    , peel_commandes_articles ca

    , peel_produits_categories pc

    , peel_categories ct

    , peel_utilisateurs u

    WHERE cm.id = ca.commande_id

    AND ca.produit_id = pc.produit_id

    AND pc.categorie_id = ct.id

    And cm.id_utilisateur = u.id_utilisateur

    AND 1 ".$where."

    ORDER BY ".$order." ".$sort."

    LIMIT $start, $nb";

    $result=mysql_query($sql) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());

    $sql_count = mysql_num_rows($sql);

    }

    else {

    $sql = "SELECT DISTINCT u.id_utilisateur, u.prenom, u.nom_famille, u.email, u.priv

    FROM peel_commandes cm

    , peel_commandes_articles ca

    , peel_utilisateurs u

    WHERE cm.id = ca.commande_id

    And cm.id_utilisateur = u.id_utilisateur

    AND 1 ".$where."

    ORDER BY ".$order." ".$sort."

    LIMIT $start, $nb";

    $result=mysql_query($sql) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());

    $sql_count = mysql_num_rows($result);

    }

    Alors voilà, je ne comprends pas qu'il ne prenne pas en compte mes critères et qu'il m'affiche toujours toute la liste des clients ayant passé une commande....


  4. Bonjour,

    J'ai appliqué ton morceau de code jcdhl et il marche très bien. Seulement moi aussi, je voudrais afficher les coordonnées de l'acheteur dans le mail.

    Toutes les coordonnées s'affichent correctement sauf l'adresse de livraison et le mode de paiement.

    Logique puisque ces deux données ne font pas partie des deux tables utilisées dans la requete SQL mais sont dans la table peel_commande.

    J'ai donc essayé de bidouiller pour joindre les 3 tables pour afficher toutes les données que je voulais.

    Seulement ça ne marche pas :( et je ne comprends pas comment faire pour joindre les 3 tables sans provoquer un gros chamboulement dans l'affichage du mail.

    Si vous pouviez m'aider..., Ce ne serait pas de refut ;) .

    Voici ma requete SQL FAUSSE, que jai modifiée en tentant de trouver :

    	SELECT
    
    		 p.id
    
    		,p.reference
    
    		,p.pack
    
    		,c.client_info2
    
    		,c.paiement
    
    		,oi.nom_produit
    
    		,oi.promotion
    
    		,p.prix AS curr_prix
    
    		,oi.prix AS purchase_prix
    
    		,oi.quantite
    
    		,oi.prix * oi.quantite AS total
    
    	FROM peel_commandes_articles oi, peel_commandes c
    
    		LEFT JOIN peel_produits p ON (oi.produit_id = p.id AND oi.commande_id = c.id)
    
    	WHERE commande_id = '$commandeid'


  5. Oui. Voilà, je précise que j'ai un peu changé le système et que maintenant, on peut uploader 4 images portant les noms : monimage_1.jpg, monimage_2.jpg, monimage_3.jpg et monimage_4.jpg.

    Dans lib/fonctions/fonctions.php :

    /*Fonction d'upload de fichiers */

    function upload($the_file, $nom, $i) { //- on ajoute les variables du formulaire que l'on veut intégrer dans le nom de l'image -

    global $the_path;

    $the_file_tmp = $the_file['tmp_name'];

    $the_file_name = $the_file['name'];

    $error = validate_upload($the_file); // Teste la validité du document

    $extension = substr($the_file_name, strrpos($the_file_name, "."));

    $the_new_file_name = $nom . "_" .$i.$extension; // Le fichier uploadé sera de la forme nom_1.jpg, nom_2.jpg, etc.

    if ($error) {

    return $error;

    } else { # cool, we can continue

    if (!move_uploaded_file($the_file_tmp, $the_path . $the_new_file_name)) {

    //form("\n<b>Quelques choses ne fonctionnent pas : vérifier le chemin de la variable $path et les permissions du répertoire /upload (il doit être en CHMOD777</b>");

    } else {

    chmod($the_path . $the_new_file_name, 0777);

    return $the_new_file_name;

    }

    }

    }

    Dans administrer/produits.php :

    if (empty($message_erreur)) {

    if (!empty($_FILES['image1']['name'])) {$img1 = upload($_FILES['image1'], $frm['nom'], $i=1);}

    if (!empty($_FILES['image2']['name'])) {$img2 = upload($_FILES['image2'], $frm['nom'], $i=2);}

    if (!empty($_FILES['image3']['name'])) {$img3 = upload($_FILES['image3'], $frm['nom'], $i=3);}

    if (!empty($_FILES['image4']['name'])) {$img4 = upload($_FILES['image4'], $frm['nom'], $i=4);}

    if (!empty($_FILES['pdf']['name'])) {$pdf = upload($_FILES['pdf'], $frm['nom'], $i=0);}

    et un peu plus loin, toujours dans administrer/produits.php :

    if (!empty($_POST['image1'])) {$img1 = $_POST['image1'];

    } else {

    if (!empty($_FILES['image1']['name'])) {$img1 = upload($_FILES['image1'], $frm['nom'], $i=1);}

    }

    if (!empty($_REQUEST['image2'])) {$img2 = $_POST['image2'];

    } else {

    if (!empty($_FILES['image2']['name'])) {$img2 = upload($_FILES['image2'], $frm['nom'], $i=2);}

    }

    if (!empty($_REQUEST['image3'])) {$img3 = $_POST['image3'];

    } else {

    if (!empty($_FILES['image3']['name'])) {$img3 = upload($_FILES['image3'], $frm['nom'], $i=3);}

    }

    if (!empty($_REQUEST['image4'])) {$img4 = $_POST['image4'];

    } else {

    if (!empty($_FILES['image4']['name'])) {$img4 = upload($_FILES['image4'], $frm['nom'], $i=4);}

    }

    if (!empty($_REQUEST['pdf'])) {$pdf = $_POST['pdf'];

    } else {

    if (!empty($_FILES['pdf']['name'])) {$pdf= upload($_FILES['pdf'], $frm['nom'], $i=0);}

    }


  6. Oui, ça fonctionne, merci Daxey (désolé, je n'avais pas testé avant ce matin, trop pris dans la configuration du moteur de recherche en ajax ;) ).

    Comme dans mon cas, c'est une boutique de vins, je n'aurais besoin que d'une seule image par produit, donc le problème des images multiples ne se pose pas.

    C'est chouette, j'aurai bien toutes mes images comme : monvin.jpg

    Merci Daxey encore ;)


  7. Bonjour,

    J'avais remarqué que lorsque deux mots clefs sont insérés dans le champ de recherche de haut.php, ces deux mots doivent obligatoirement figurer dans le même champ d'une table pour être appelés.

    Se posait alors un gros problème.

    Exemple :

    vous voulez ajouter 3 produits : voiture rouge, voiture bleue et voiture verte.

    Le terme "voiture" figurant dans le champ "nom" et la couleur dans un champ "couleur" que vous auriez créé auparavant.

    Une recherche avec le terme voiture vous aurait affiché les 3 réponses possibles alors qu'une recherche comme "voiture rouge" ne vous aurait renvoyé aucun résultat.

    J'ai donc travaillé un peu sur ce problème, et je vous donne ici la solution :

    Dans recherche.php,

    remplacez :

    $resultat = mysql_query("SELECT id, reference, nom FROM peel_produits WHERE etat = '1' AND nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR descriptif LIKE '%" . addslashes($_GET['motclef']) . "%' LIMIT $start,$nb");

    Par :

    $recherche=strtolower($motclef);

    $mots = str_replace("+", " ", trim($recherche));

    $mots = str_replace("\"", " ", $mots);

    $mots = str_replace(",", " ", $mots);

    $mots = str_replace(":", " ", $mots);

    $recherche=rawurlencode($recherche);

    $tab=explode(" " , $mots);

    $count=count($tab);

    $sql="select id, reference, nom from peel_produits where etat='1' and ( reference like \"%$tab[0]%\" or nom like \"%$tab[0]%\" ) ";

    for($i=1 ; $i<$count; $i++)

    {

    $sql.="AND ( reference like \"%$tab[$i]%\" or nom like \"%$tab[$i]%\" )";

    }

    $resultat = mysql_query($sql);

    et

    $$result=mysql_query("SELECT COUNT(*) FROM peel_produits WHERE nom LIKE '%" . addslashes($_GET['motclef']) . "%' ");

    $row=mysql_fetch_row($result);

    Par

    $req = mysql_query($sql);

    $row = mysql_numrows($req);

    L'astuce se déroule ainsi :

    1 - on met en minuscule les termes entrés dans le formulaire

    2 - on remplace tous les caractères '+', '\', ',' et ':' par un espace.

    3 - on place les différents mots dans un tableau grâce à la fonction "explode".

    4 - Pour chaque terme entré, on regarde s'il se situe dans les champs "reference" ou "nom"

    5 - on renvoie la requête.

    Voilà, en espérant vous avoir été utile ;)


  8. Je n'en vois pas l'intéret mais surtout comment voulez-vous gérer le fait que votre produit s'appellera sûrement 'Belle voiture décapotable rouge" plutôt que voiture1. Le système en place est justement fait pour résoudre ce genre de soucis même s'il n'est peut-être pas parfait. Autre avantage : pour piquer un visuel, il est plus facile de chercher 'voiture rouge' que '100707_145243_PEEL_TwTgkh.jpg'

    Je ne comprends pas très bien.

    Le système actuel renomme les fichiers de la sorte justement : "100707_145243_PEEL_TwTgkh.jpg". Ca ne pose pas de problème au recensement ? C'est dans cette optique que je voulais justement appeler mes images avec des noms français explicites.

    Si vous pouvez m'eclaircir sur le sujet, ce ne serait pas de refus ^^


  9. ici : $the_new_file_name = $nom . "_" .$mdp.$extension;

    Au moment de renommer le fichier donc. En fait pour essayer d'être plus clair, à la place de $nom j'aimerais récupérer la variable que l'on a entré dans la ligne "nom du produit" de la page administrer/produits.php. Normalement elle se retrouve bien sous la variable $nom.

    Mais ça ne marche pas.

    Exemple, je voudrais entrer un nouveau produit dans ma boutique.

    Ce produit s'appelle par exemple voiture. Ce nom est donc stocké dans la variable $nom.

    Et bien je voudrais réutiliser cette variable dans la fonction "upload" pour pouvoir renommer mes fichiers images (propre au produit en question donc) : voiture_01, voiture_02, voiture_03, etc...

    Voilà ;)


  10. Bonjour,

    Mon petit problème du jour est de pouvoir renommer les images en fonction du nom du produit.

    Donc pour exemple : je voudrais avoir comme nom d' image "mon_produit_01.jpg" au lieu de "100707_145243_PEEL_TwTgkh.jpg".

    J'aimerais donc récupérer la variable $nom figurant dans le formulaire d'ajout de produit et l'injecter dans la fonction upload.

    Seulement je n'y arrive pas... J'ai tenté quelques modif' mais aucune ne semble marcher véritablement.

    Voici le code de la fonction :

    function upload($the_file) {
    
    
    global $the_path;
    
    
    		$the_file_tmp = $the_file['tmp_name'];
    
    
    		$the_file_name = $the_file['name'];
    
    
    		$error = validate_upload($the_file); 	// Teste la validité du document
    
    
    		$extension = substr($the_file_name, strrpos($the_file_name, "."));
    
    
    		$dateheure = strftime("%d%m%y_%H%M%S");
    
    
    		$mdp = MDP();
    
    
    		$the_new_file_name = $nom . "_" .$mdp.$extension; [b]<-- Ici, j'ai tenté d'insérer quelques variables comme $nom ou $frm['nom'] mais ça ne semble pas marcher :([/b]
    
    
    		if ($error) {
    
    				return $error;
    
    		} else { # cool, we can continue
    
    				if (!move_uploaded_file($the_file_tmp, $the_path . $the_new_file_name)) {
    
    						//form("\n<b>Quelques choses ne fonctionnent pas : vérifier le chemin de la variable $path et les permissions du répertoire /upload (il doit être en CHMOD777</b>");
    
    				} else {	
    
    						chmod($the_path . $the_new_file_name, 0777);
    
    						return $the_new_file_name;
    
    				}
    
    		}
    
    }

    La question est : comment récupérer le nom de ma variable $nom pour l'injecter dans cette fonction ?

    Si quelqu'un a une idée..

    Merciiii ;)


  11. Bonjour,

    J'ai encore un problème sur la version peel 2.9.3.

    Le formulaire de recherche de la page administrer/produits.php me renvoie tout le temps TOUS les produits. Il ne prend plus en compte les différents critères de recherche...

    Pourtant, j'ai comparé la page de la version 3.0 qui marche très bien avec la mienne, jai corrigé les quelques défauts décrits dans le post it de M.Ruault, mais rien n'y fait.

    Cependant je tiens à dire que j'ai modifié quelques variables... Le champ où l'on écrivait la référence du produit, je l'ai remplacé par le nom. Normalement, cela devrait marcher...

    Si une bonne âme charitable peut m'aider, j'ai passé toute la journée d'hier dessus en vain ;)

    Je vous mets ma fonction affiche_liste_produit, c'est forcément de là que vient le problème non ? ;)

    function affiche_liste_produits($start, $frm) 
    
    {
    
    global $wwwroot;
    
    global $categorie_options;
    
    ?>
    
    <table border="0" cellpadding="0" cellspacing="2" width="740">
    
    <tr>
    
    	<td class="normal"  colspan="7">
    
    <form method="get" action="<?php echo $_SERVER['PHP_SELF']?>?start=0&mode=recherche">
    
    <table border="0" cellpadding="0" cellspacing="2" width="740">
    
    	<tr><td colspan="2" class="entete">Choisir vos critères de recherche</td></tr>
    
    	<tr>
    
    	  <td class="normal"><b>Etat du produit :</b> <br />
    
    	  <span class="normal">
    
    	   <input type="radio" name="etat" value="NULL" checked /><i>peu importe</i>
    
    	   <input type="radio" name="etat" value="1" /><i>En ligne</i>
    
    	   <input type="radio" name="etat" value="0" /><i>En attente</i>
    
    	   </span>
    
    	  </td>
    
    	  <td class="normal"><b>Catégories</b><br />
    
    	   <select size="1" name="categorie" class="formulaire1">
    
    		<option value="NULL">Toutes les catégories</option>
    
    		<?php 
    
    
    		if (!isset($categorie_id)) { $categorie_id = 0; }
    
    
    		$frm['categories'] = array($categorie_id);
    
    
    		construit_select_cat($categorie_options, $frm['categorie_id']);
    
    
    		echo $categorie_options;
    
    		?>
    
    		</select>	
    
    		</td>
    
    	</tr>
    
    	<tr>
    
    	  <td class="normal" valign="top">
    
    	  <b>Le produit est-il en page d'accueil ?</b><br />
    
    	  <span class="normal">
    
    	   <input type="radio" name="homepage" value="NULL" checked /><i>peu importe</i>
    
    	   <input type="radio" name="homepage" value="1" /><i>oui</i>
    
    	   <input type="radio" name="homepage" value="0" /><i>non</i>
    
    	   </span>
    
    	  </td>
    
    	  </tr>
    
    	<tr>
    
     <td class="normal" valign="top"><b>Référence du produit :</b> <input type="text" name="reference" size="15" class="formulaire1" value="" /> 
    
    	 </td>
    
    		 </tr>
    
    	<tr><td colspan="2" height="5" class="label"><img src="<?php echo $wwwroot?>/images/blank.gif" height="5" alt="" /></td></tr>
    
    	<tr>
    
    	  <td align="center" colspan="2"><input class="bouton" type="submit" value="Rechercher" class="formulaire1" name="action" /> </td>
    
    	</tr>
    
      </table>
    
    </form>
    
    </td></tr>
    
    
    <tr>
    
    	<td class="entete"  colspan="7">Liste des produits</td>
    
    </tr>
    
    
    <tr>
    
    	<td colspan="7">
    
    	<a class="normal" href="<?php echo $_SERVER['PHP_SELF']?>?mode=ajout">[Ajouter un produit]</a>
    
    	</td>
    
    </tr>
    
    
    			<?php 
    
    			$nb = 30;
    
    
    			$where = "";
    
    
    			if (isset($frm['etat'])) {if ($frm['etat'] != "NULL") {$where .= " AND p.etat = '".$frm['etat']."'";}}
    
    
    			if (isset($frm['nom'])) {if (!empty($frm['nom'])) {$where .= " AND p.nom = '".$frm['nom']."'";}}
    
    
    			if (isset($frm['nbparpage'])) {if (!empty($frm['nbparpage'])) {$nb = $frm['nbparpage'];}}//nombre d'enregistrement par page 
    
    
    			if (isset($frm['homepage'])) {if ($frm['homepage'] != "NULL") {$where .= " AND p.on_special = '".$frm['homepage']."'";}}
    
    
    			if (isset($frm['categorie']) && !empty($frm['categorie'])) {
    
    
    				if ($frm['categorie'] != "NULL") {$where .= " AND c.id = '".$frm['categorie']."'";}
    
    
    				$sql = "SELECT p.id, p.reference, p.nom, p.description, p.prix, p.etat, p.date_maj FROM peel_produits p, peel_produits_categories pc, peel_categories c WHERE p.id = pc.produit_id AND c.id = pc.categorie_id AND 1 ".$where." ORDER BY p.id ASC LIMIT $start, $nb";	
    
    
    				$sql_count = "SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc, peel_categories c WHERE p.id = pc.produit_id AND c.id = pc.categorie_id AND 1 ".$where." ORDER BY p.id ASC";
    
    
    			} else {
    
    
    				$sql = "SELECT p.id,  p.reference, p.nom, p.description, p.prix, p.etat, p.date_maj FROM peel_produits p WHERE 1 ".$where." ORDER BY p.id DESC LIMIT $start, $nb";
    
    
    				$sql_count = "SELECT COUNT(*) FROM peel_produits p WHERE 1 ".$where." ORDER BY p.id DESC";
    
    
    			}
    
    
    			$result=mysql_query($sql) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());
    
    
    			if (mysql_num_rows($result) == 0) 
    
    
    			{
    
    
    			echo "<tr><td class=\"normal\"><b>Aucun produit enregistré dans la base.</b></td></tr>"; } 
    
    
    			else {
    
    			?>
    
    			<tr bgcolor="#6699ff">
    
    				<td class="menu">Action</td>
    
    				<td class="menu">Catégorie</td>
    
    				<td class="menu">Nom</td>
    
    				<td class="menu">Prix € T.T.C</td>
    
    				<td class="menu">Etat</td>
    
    				<td class="menu" align="center">Création / Mise à jour</td>
    
    			</tr>
    
    			<?php 
    
    			$i = 0;
    
    
    			while ($ligne = mysql_fetch_array($result)) { 
    
    
    			?>
    
    					<tr bgcolor="<?php echo  ($i % 2 == 0 ? '#F4F4F4' : '#ffffff' );?>">
    
    						<td class="normal" align="center">
    
    						<a onClick="java script:return confirm('Êtes-vous sûr de vouloir supprimer le produit <?php echo addslashes($ligne['nom']) ?> ?');" class="normal" title="Supprimer <?php echo $ligne['nom'] ?>" href="<?php echo $_SERVER['PHP_SELF']?>?mode=suppr&id=<?php echo $ligne['id'] ?>">
    
    						<img src=<?php echo $wwwroot?>/images/poubelle.gif border=0></a></td>
    
    						<td class="normal" align="center">
    
    
    						<?php 
    
    
    						$sqlCAT = "SELECT id, nom FROM peel_categories c, peel_produits_categories pc WHERE pc.produit_id = ".$ligne['id']." AND c.id = pc.categorie_id";
    
    
    						$resCAT = mysql_query($sqlCAT);
    
    
    						if (mysql_num_rows($resCAT) > 0) {
    
    
    							while ($cat = mysql_fetch_array($resCAT)) {
    
    
    								echo html_entity_decode($cat['nom'])."<br />";
    
    
    							}
    
    
    						} else {
    
    
    							echo "<font color=\"red\"><b>n.c</b></font>";
    
    
    						 }
    
    
    						?>		
    
    
    						</td>
    
    						<td class="normal" align="center"><a class="normal" title="Modifier ce produit" href="<?php echo $_SERVER['PHP_SELF']?>?mode=modif&id=<?php echo $ligne['id'] ?>"><?php echo stripslashes($ligne['nom'])?></a></td>
    
    						<td class="normal" align="center"><?php echo $ligne['prix'] ?> € T.T.C</td>
    
    						<td align="center" class="normal"><?php if   (empty($ligne['etat'])) {echo "<img src=\"".$wwwroot."/administrer/images/puce-blanche.gif\" alt=\"\" />";} else {echo "<img src=\"".$wwwroot."/administrer/images/puce-verte.gif\" alt=\"\" />";} ?></td>	
    
    						<td align="center" class="label"><?php if (empty($ligne['on_stock']))  { echo "n.a"; } else { echo ($ligne['stock'] <= 0) ? "<font color=\"red\">".$ligne['stock']."</font>" :  $ligne['stock'];} ?></td>	
    
    						<td class="normal" align="center"><?php echo date("d-m-Y", strtotime($ligne['date_maj'])) ?></td>
    
    					</tr>
    
    					<tr><td align="center" class="normal" colspan="7">
    
    			<?php 
    
    				$i++;
    
    			} 
    
    
    			}
    
    
    			//Boutons précédent et suivant 
    
    			if($start) 
    
    			{
    
    
    			print("<a class=\"normal\" href=\"".$_SERVER['PHP_SELF']."?start=".($start-$nb)."&categorie=".vb($frm['categorie'])."\">page précédent</a>");} 
    
    
    			$result=mysql_query($sql_count); 
    
    
    			$row=mysql_fetch_row($result); 
    
    
    
    			if($row[0]>($start+$nb)) 
    
    			{ 
    
    
    			if($start) {print(" / ");} 
    
    
    			print("<a class=\"normal\" href=\"".$_SERVER['PHP_SELF']."?start=".($start+$nb)."&categorie=".vb($frm['categorie'])."\">page suivante</a>"); 
    
    
    			} 
    
    
    			print("<br />"); 
    
    
    //Affichage des pages 
    
    if($row[0]>$nb) // le nombre d'enreg. est > au nb de lignes d'affichage ?
    
    
    for($index=0;($index*$nb)<$row[0];$index++) // oui alors on affiche les numéros de pages
    
    { 
    
    ?>
    
    <a class="normal" href="<?php echo $_SERVER['PHP_SELF']."?start=".$index*$nb; ?>&categorie=<?php echo vb($frm['categorie'])?>"><?php echo $index+1; ?></a> 
    
    <?php 
    
    }
    
    echo "</td></tr></table>";
    
    }
    
    
    function valide_form_produit(&$frm, &$erreurs) {
    
    
    	$erreurs = array();
    
    	$msg = array();
    
    
    	if (empty($frm['nom'])) {
    
    		$erreurs['nom'] = true;
    
    		$msg['nom'] = " Vous devez insérer un nom de produit.";
    
    
    	} 
    
    
    	return $msg;
    
    }


  12. Bonjour,

    Ayant remarqué que le petit moteur de rechercher figurant sur la page produit.php ne marchait pas, j'ai essayé d'appliquer le correctif cité.

    Seulement maintenant j'arrive à cette erreur (ou plutôt ce screen, car aucune erreur n'est signalée), la suite de la page ne s'affiche pas :

    Je n'arrive pas à cerner l'erreur...

    Je précise que je tourne sur peel 2.9.3 et que je n'ai aps ajouté la fonction de stock, donc j'ai supprimé toutes les données s'y rapportant.

    Voilà, si quelqu'un peut m'aider ...

    Ah et comme je voulais que le moteur de recherche cherche par nom et non pas par référence, j'ai changé la ligne correspondante aussi.

    Merci d'avance ;)

    EDIT !

    Désolé, je n'avais pas fait gaffe, il manquait la fonction "construit_select_cat" à ajouter dans mon fichier fonction.php....

    La page s'affiche correctement maintenant, mais le formulaire de recherche de produit ne marche toujours pas chez moi ;)


  13. Bonjour,

    Voilà, ayant voulu inclure dans haut.php et bas.php le header, le menu et le footer en div, je me retrouve avec un bug bizarre sur firefox : le corps ne s'affiche plus !

    Chose bizarre pusique le site entier s'affiche correctement sous Opera et IE... Jamais vu un bug pareil auparavant.

    L'erreur porte sur le div du menu (le menu permettant de se connecter à son compte pour info) puisque lorsque je le retire le corps du site s'affiche correctement...

    Donc après de multiples recherches et d'essais, il m'est impossible de trouver d'où peut venir cette erreur... :rolleyes:

    Je fais donc appel à vos talents pour voir si vous avez une idée.

    Voici la page en question qui bug (à tester sous différents navigateurs donc) : http://chateaupartner.com/test/boutique/index.php

    Puis voici le code de haut.php :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    
    <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
    
    
    <head>
    
    <title><?= $DOC_TITLE ?></title>
    
    <meta name="description" content="" />
    
    <meta name="Keywords" content="" />
    
    <meta name="robots" content="All" />
    
    <meta http-equiv="Content-language" content="french" />
    
    <meta name="Classification" content="entreprise" />
    
    <meta name="Author" content="Ma petite entreprise" />
    
    <meta name="Publisher" content="Ma petite entreprise" />
    
    <meta http-equiv="expires" content="0" />
    
    <meta http-equiv="Pragma" content="no-cache" />
    
    <meta name="robots" content="index,follow,all" />
    
    <meta name="Updated" content="daily" />
    
    <meta name="revisit-after" content="10 days" />
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    
    <base href="<?echo $wwwroot;?>" />
    
    <link rel="stylesheet" href="http://chateaupartner.com/test/boutique/lib/css/style.css" type="text/css" media="screen" />
    
    &lt;script type="text/javascript" src="<?=$wwwroot?>/lib/js/window.js"></script>
    
    
    
    </head>
    
    
    <body>
    
    
    <div id="header">
    
    	<div class="centre-warp">
    
    		<img src="<?=$wwwroot?>/images/header.gif" alt="Chateaupartner logo" />
    
    	</div><!-- fin centre-warp -->
    
    </div><!-- fin header -->
    
    
    <div id="nav">
    
    	<div class="centre-warp">
    
    	<ul>
    
    		<li><a href="<?=$wwwroot?>/index.php">Accueil</a></li>
    
    		<li><a href="<?=$wwwroot?>/compte.php">Mon compte</a></li>
    
    
    		<? 	if (est_identifie()) {
    
    			echo "<li><a>";
    
    			echo "Bonjour ";
    
    			echo stripslashes($_SESSION['utilisateur']['prenom']) . " " . stripslashes($_SESSION['utilisateur']['nom_famille']); ?></a></li>
    
    		<li><a href="<?=$wwwroot?>/sortie.php">Se déconnecter</a></li>
    
    			<? } else { ?>
    
    		<li><a href="<?=$wwwroot?>/membre.php">S'identifier</a></li>
    
    		<li><a href="<?=$wwwroot?>/utilisateurs/enregistrement.php">Ouvrir un compte client</a></li>
    
    			<? }?>
    
    	</ul>
    
    	</div><!-- fin centre-warp -->
    
    </div><!-- fin nav -->
    
    
    
    		<table width="960" border="0" cellpadding="0" cellspacing="0" height="100%" align="center" >		
    
    
    			<tr><td colspan="2" height="10" class="normal" align="right"  style="background-repeat: no-repeat;"> </td></tr>
    
    
    			<tr><td>
    
    
    			<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
    
    			<tr>
    
    				<td width="180" valign="top" style="border-right:1px solid #000000;padding:0px;">
    
    
    				<table cellpadding="0" cellspacing="0" width="100%" border="0" >
    
    					<div class="tetiere"  >Votre caddie</div
    
    					<tr>
    
    						<td class="normal" align="center">
    
    
    						<?if ($_SESSION['caddie']->compte_elements() != 0) { ?>
    
    
    						Nb de produit(s)<br /> sélectionné(s) : <font color="#CC0000"><b><?=$_SESSION['caddie']->compte_elements()?></b></font>.<p> 
    
    
    						Montant total du panier :<br /> <font color="#CC0000"><b><?=fprix($_SESSION['caddie']->total); ?> € T.T.C</b></font>
    
    
    						<p><a class="normal" href="<?=$wwwroot?>/achat/caddie_affichage.php"><b>commander</b></a></p>
    
    
    						<? } else { echo "Votre panier est vide actuellement"; }	?>
    
    						</td>
    
    					</tr>
    
    				</table>
    
    				<br />
    
    
    				<div class="tetiere">Boutiques</div>
    
    
    				<div>
    
    
    				<?
    
    				if (!isset($catid)) { $catid = 0; }
    
    				$frm['parent'] = array($catid);
    
    				construit_menu_arborescent_cat($categorie_options, $frm['parent']);					
    
    				echo $categorie_options;
    
    				if (!isset($rubid)) { $rubid = 0; }
    
    
    				$frm['parent'] = array($rubid);
    
    				construit_menu_arborescent_rub($rubrique_options, $frm['parent']);
    
    
    				echo "<br /><div class=\"tetiere\" >$site</div>";
    
    
    				echo "<a href=\"$wwwroot/catalogue.php\" class=\"normal\">> Catalogue</a><br />";
    
    
    				echo "<a href=\"$wwwroot/nouveautes.php\" class=\"normal\">> Nouveautés</a><br />";
    
    
    				echo "<a href=\"$wwwroot/ventes.php\" class=\"normal\">> Meilleures Ventes</a><br />";
    
    
    				echo "<a href=\"$wwwroot/selection.php\" class=\"normal\">> Notre Sélection</a><br />";
    
    
    				echo $rubrique_options;
    
    
    				echo "<br /><a href=\"$wwwroot/newsletter.php\" class=\"normal\">> Newsletter</a><br />";
    
    
    				echo "<a href=\"$wwwroot/cgv.php\" class=\"normal\">> Conditions de vente</a>";
    
    
    				echo "<br /><a href=\"$wwwroot/contacts.php\" class=\"normal\">> Contact</a>";
    
    				?>
    
    
    				</div>
    
    				<br />
    
    				<form method="get" action="<?=$wwwroot?>/achat/recherche.php" name="recherche">
    
    								<table border="0" width="100%" cellspacing="0" cellpadding="0">
    
    								  <div class="tetiere">Rechercher :</div>
    
    								  <tr>
    
    									<td class="normal">
    
    									  Insérer un mot clef :<br />
    
    									  <input class="formulaire1" type="text" name="motclef" size="10" value="<?echo vb($_GET['motclef']);?>" />
    
    									  <input type="submit" value="Rechercher" name="action" class="bouton" />
    
    									</td>
    
    								  </tr>
    
    								</table>
    
    				</form>
    
    <?php
    
    if (est_identifie()) { 
    
    	if (a_priv("admin")) { 
    
    ?>
    
    
    			<hr size="1" />
    
    			<li><a class="normal" href="<?=$wwwroot?>/administrer/index.php">Administrer le site</a></li>
    
    <? }
    
    } ?>
    
    
    </td>
    
    
    <td valign="top" class="normal">
    Et voici le css concernant le menu :
    #nav {
    
    	background: #f1f0d1 url(../../images/menu_haut.jpg) repeat-x top left;
    
    	width: 100%;
    
    	padding: 16px 0 0 0;
    
    	list-style: none;
    
    	float: left;
    
    	font-size: 13px; 
    
    	color: #000000;
    
    	border-bottom: 1px solid #d1b98f;
    
    }
    
    
    
    
    #nav li {
    
    	float: left;
    
    	margin: 0;
    
    	padding: 0;
    
    	font-size: 92%;
    
    	list-style-image: none;
    
    	list-style-type: none;
    
    }
    
    
    #nav a {
    
    	float: left;
    
    	display: block;
    
    	color: #4A3A28;
    
    	text-decoration: none;
    
    	margin: 0 1px 0 0;
    
    	padding: 7px 18px;
    
    	border: 1px solid #131313;
    
    	border-bottom: 0;
    
    	background: #d1b98f url(../../images/bout_off.jpg) repeat-x top left;
    
    }
    
    
    #nav a:hover {
    
    	color: #fff;
    
    	background: #71593D url(../../images/bout_hover.jpg) repeat-x top left;
    
    }

    Si vous trouvez quoique ce soit, je suis preneur :P


  14. Bonjour,

    Je vais donner ma page des "meilleures ventes" étant donnée qu'elle marche et que ça pourrait donner des pistes à quelqu'uns.

    Je précise que PEEL sert ici pour une boutique de vente en ligne de vins, vous pouvez voir le rendu à cette adresse (sachant que le design n'est pas encore fait) :

    http://chateaupartner.com/test/boutique/ventes.php

    voici le code (très simple en fait) :

    <?
    
    include("configuration.inc.php");
    
    
    if (!isset($_GET['catid'])) {	$catid = 0;} else {$catid = intval($_GET['catid']);}
    
    
    $qid_c = recupere_sous_categorie($catid);
    
    
    $DOC_TITLE = "Chateau Partner";
    
    
    include("$repertoire_modele/haut.php");
    
    ?>
    
    
    <div id="content">
    
    <div class="tetiere" align="left">Meilleures Ventes</div>
    
    
    <table width="100%" cellpadding="2" cellspacing="1">
    
    	<tr>
    
    		<th id="breadCrumb">MILLESIME</th><th id="breadCrumb">CHATEAU</th><th id="breadCrumb">APPELLATION</th><th id="breadCrumb">COULEUR</th><th id="breadCrumb">PRIX</th>			</tr>
    
    
      <?php
    
    //Requête SQL 
    
    $sql = "SELECT
    
    			  Count(*) AS count
    
    			, p.id
    
    			, p.nom
    
    			, p.prix
    
    			, p.millesime
    
    			, p.couleur
    
    			, p.aoc
    
    		FROM peel_commandes_articles oi, peel_produits p
    
    		WHERE oi.produit_id = p.id
    
    		GROUP BY oi.produit_id, p.id
    
    		ORDER BY count
    
    		DESC LIMIT 10";
    
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    
    
    //Début de boucle
    
    while( $sortie = mysql_fetch_array($req))
    
    
    { 
    
    //Affichage de chaque ligne pour chaque produit
    
    echo "<tr bgcolor='"; if($o==1) { echo "#ECECEC"; $o++; } else { echo "#FFFFFF"; $o=1; }
    
    echo "'>
    
    
    	<th class=\"catalogue\">$sortie[millesime]</th>
    
    	<th class=\"catalogue\"><font color=#993333><b>";
    
    	?>
    
    
    <a href="<?echo $wwwroot?>/achat/produit_details.php?id=<?=$sortie['id'] ?>&catid=<?=$catid?>"><?echo stripslashes($sortie['nom']) ?>
    
    
    <?
    
    echo "</a></b></font></th>
    
    	<th class=\"catalogue\">$sortie[aoc]</th>
    
    	<th class=\"catalogue\"><b>$sortie[couleur]</th>
    
    	<th class=\"catalogue\">$sortie[prix] €</th>
    
    
    </tr>"; 
    
    
    }
    
    
    echo "</table>";
    
    
    /******************************************************************************
    
     * FONCTIONS
    
     *****************************************************************************/
    
    
     function recupere_sous_categorie($catid=0) { 
    
    /* Récupère le nom et la description de toutes les sous-catégories de celle-ci */
    
    	$qid = mysql_query("SELECT id, nom, description, parent_id  FROM peel_categories WHERE parent_id = $catid AND id > 0 AND etat = 1") or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR()); 
    
    	return $qid; 
    
    }
    
    
    ?>
    
    
    </div>
    
    <?php include("$repertoire_modele/bas.php"); ?>

    Voilà, en espérant que cela puisse t'aider suspensionlab...


  15. VOUIIIIIIIIIIIIIIIIII, ca y est ca marche !!!

    Grâce à vous deux Attila et Willy, merciiiiii

    Voici la requête en question pour ceux que ca interresse :

    $sql = "SELECT
    
    			  Count(*) AS count
    
    			, p.id
    
    			, p.nom
    
    			, p.prix
    
    		FROM peel_commandes_articles oi, peel_produits p
    
    		WHERE oi.produit_id = p.id
    
    		GROUP BY oi.produit_id, p.id
    
    		ORDER BY count
    
    		DESC LIMIT 10";

    La seule chose qui clochait dans ton morceau de code Willy, c'était simplement la majuscule à "Count" et il ne fallait pas d'espace entre Count et (*) !

    Youpiiiiiii, vous n'imaginez pas comment je suis heureux de voir tout ça marcher :)

    Merciii encore !


  16. Exact, j'ai changé quelques lignes pour le faire marcher, ce qui a donné ceci :

    $sql = "SELECT
    
    			  oi.produit_id as count
    
    			, p.id
    
    			, p.nom
    
    			, p.prix
    
    		FROM peel_commandes_articles oi, peel_produits p
    
    		WHERE oi.produit_id = p.id
    
    		GROUP BY oi.produit_id
    
    		ORDER BY count
    
    		DESC LIMIT 10";

    Mais avec cette requête il me classe les vins par ordre de grandeur de l'id et non par nombre d'occurences :/


  17. Erreur SQL !

    SELECT oi.count (*) as count , p.id , p.nom , p.prix FROM peel_commandes_articles oi, peel_produits p WHERE oi.produit_id = p.id GROUP BY oi.produit_id, p.id ORDER BY count DESC LIMIT 10

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(*) as count , p.id , p.nom

    Toujours pas :P

    Merci de vos réponses et de votre aide en tout cas, ça fait vraiment plaisir :)

    Des commandes ? Oui jen ai passé une dizaine de fictives qui sont toujours enregistrées dans la table.


  18. Toujours la même erreur (voir plus haut).

    Pour récapituler, je voudrais qu'il me compte dans la table peel_commande_articles le nombre d'occurences de chaque produit (afin de compter le nombre de ventes) puis de les classer par ordre decroissant.

    Seulement je voudrais aussi afficher quelques autres informations contenus dans la table peel_produits. Il me faudrait donc, à partir de la premiere requete (qu'avait fourni Willy en début de topic) pour retrouver les infos du produit dans la table peel_produits.

    D'où l'espèce de test avec left join (ou sans ^^)...

Twitter Advisto ecommerce

Facebook PEEL Shopping