Condition Pour Déposer Un Avis

15 messages dans ce sujet

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

up

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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';

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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);

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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é"
}
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping