Condition Pour Déposer Un Avis

15 posts in this topic

Posted · Report post

Bonjour,

Actuellement, il est possible de déposer un avis sur n'importe quel produit. 
La seule condition étant d'être enregistré (autrement dit, d'avoir un compte client).

Je souhaiterai qu'un utilisateur puisse laisser un avis sur un produit uniquement s'il a acheté ce produit.
(ce qui me semble plus logique, en effet comment donner un avis sur un produit sans l'avoir acheté et testé ?)

 

Dans display_product.php, il faudrait ajouter un test pour afficher le lien "donner votre avis" à cette condition.
Comment puis-je réaliser cette modification?

Merci.

Share this post


: post
Share on other sites

Posted · Report post

ok,

il faut faire un test sur la table peel_commandes avec l'id_utilisateur correspondant à la session de l'utilisateur

il sera obligé de s'identifier pour pouvoir deposer un avis à condition qu'il est passé au moins une commande

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Merci, comment dois-je procéder concrètement ?

Share this post


: post
Share on other sites

Posted · Report post

up

Share this post


: post
Share on other sites

Posted · Report post

Quelqu'un aurait-il une solution pour créer cette condition ?

J'ai un autre problème concernant les avis :
il semblerai qu'il y ai une limite sur le nombre de caractère possible. Comment modifier cette limite ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

dans le fichier avis.php, sous le test de vérification de la présence de l'id du produit en GET, il faut créer une requête SQL qui recherche dans la table peel_commandes_articles et peel_commandes si l'utilisateur ($_SESSION['session_utilisateur']['id_utilisateur']) a passé commande du produit consulté ($_GET['prodid']).
Si la requête donne aucun résultat, vous pouvez alors afficher un message, ou rediriger l'utilisateur sur une autre page.

Le champ qui contient l'avis dans la BDD est un champ VARCHAR 255. Il faut modifier le champ en TEXT pour permettre le dépôt d'avis plus long. Le champ de dépôt d'avis est lui même limité par un compteur de caractère en JavaScript. Vous pouvez modifier la limite de ce compteur dans le fichier \modeles\peel7\smarty\modules\avis_formulaire.tpl
 

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Merci Simon, je devrais m'en sortir pour le nombre de caractères.

Pour la condition, pouvez vous me fournir le code à placer ?
Je me débrouille pour modifier des bricoles, mais de la à créer complètement une nouvelle requête...

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Cette requête récupère les id de commandes payées de l'utilisateur qui comportent le produit consulté :
$sql = 'SELECT pc.id
    FROM peel_commandes pc
    INNER JOIN peel_commandes_articles pca ON pca.commande_id = pc.id
    WHERE pca.produit_id = ' . intval($_GET['prodid']) .' AND pc.id_statut_paiement = 3 AND pc.id_utilisateur = '.intval($_SESSION['session_utilisateur']['id_utilisateur']) .'
    GROUP BY pc.id';

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Simon,


Où dois-je coller ce code exactement dans le fichier ?
Comment faire pour rajouter un message d'erreur au cas ou l'utilisateur n'aurais pas acheté ce produit ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

dans le fichier avis.php, sous le test de vérification de la présence de l'id du produit en GET

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Comment faire pour rajouter un message d'erreur au cas ou l'utilisateur n'aurais pas acheté ce produit ?


Vous pouvez utiliser

if(num_rows($q) == 0 ) {
	echo "votre message";
} else {
	// reste de la page
}
$q contient le résultat de la fonction query($sql);

Share this post


: post
Share on other sites

Posted · Report post

Dans le fichier avis.php en version 7.0:
 
 
if(num_rows(query("SELECT pc.id
FROM peel_commandes pc
INNER JOIN peel_commandes_articles pca ON pca.commande_id = pc.id
WHERE pca.produit_id = '" . intval($_GET['prodid']) ."' AND pc.id_statut_paiement = 3 AND pc.id_utilisateur = '".intval($_SESSION['session_utilisateur']['id_utilisateur']) ."'GROUP BY pc.id")) == 0)
{
echo "pas autorisé"
}
 else
{
  echo "autorisé"
}
 

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

J'ai modifié (avec la 6.4) le nombre de caractères insérables dans les avis. Je peux à présent bien insérer le nombre de caractères voulu, mais le problème est que le compteur ne se décrémente plus.

J'ai modifié les valeurs dans cette partie du formulaire, mais je n'ai pas trouvé le javascript.

    <td class="normal"  valign="top">

                <b>' . YOUR_OPINION . ' <span class="etoile">(*)</span></b>' . BEFORE_TWO_POINTS . ':

                <br /><input type="text" name="compteur" size="4" onfocus="blur()" value="1500" />'. '<span style="margin-left:5px;"> ' . REMINDING_CHAR . '</span>

                <br />' . $form_error_object->text('avis') . '

            </td>

            <td>

                <textarea name="avis" cols="36" rows="6" onfocus="Compter(this,1500,compteur)" onkeypress="Compter(this,1500,compteur)" onkeyup="Compter(this,1500,compteur)" onblur="Compter(this,1500,compteur)">' . String::html_entity_decode_if_needed(vb($frm['avis'])) . '</textarea>

            </td>

        </tr>

        <tr>

Que faudrait-il faire de plus (ou en moins) ?

Merci.

Share this post


: post
Share on other sites

Posted · Report post

J'ai une autre question concernant les avis : Peut-on visualiser les avis que l'on a déposé, depuis son propre compte ?

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

- Je ne vois pas d'autre chose à modifier, il y a peut-être une autre erreur sur la page qui empêche l'exécution du javascript. Pour info la fonction "Compter" est défini dans le fichier lib/js/peel.js de votre site.
- Les avis sont uniquement visible sur la page du produit. Il faut faire un développement pour permettre à un utilisateur de lire ses avis depuis la page de compte.

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping