J'ai donc une série de pages de produits et tout ce que je veux faire est de stocker les 5 derniers produits visualisés dans un cookie afin qu'ils puissent être affichés comme historique de site. Le problème que j'ai est n'ajoute pas les cinq éléments initiaux au cookie, c'est quand ils voient 6, 7 ou 10 articles. Quelqu'un at-il des suggestions vraiment décentes sur la façon d'aborder cela?Cinq dernières pages visitées Cookie
Actuellement, j'ai cette logique erronée (j'ai remplacé le nom de cookie (xxx) pour la brièveté);
Dim i As Integer = 0
Dim productcount As Integer = 0
If HttpContext.Current.Request.Cookies("xxx") Is Nothing Then
Dim gingernuts As New HttpCookie("xxx")
gingernuts.Values("productcount") = 0
gingernuts.Expires = DateTime.Now.AddDays(365)
HttpContext.Current.Response.Cookies.Add(gingernuts)
End If
productcount = HttpContext.Current.Request.Cookies("xxx")("productcount")
For i = 0 To productcount
If HttpContext.Current.Request.Cookies("xxx")("product" & i & "") = "" Then
HttpContext.Current.Response.Cookies("xxx")("product" & i & "") = Request.QueryString("id")
Else
HttpContext.Current.Response.Cookies("xxx")("product" & i & "") = HttpContext.Current.Request.Cookies("xxx")("product" & i & "")
End If
Next
If productcount = 5 Then
HttpContext.Current.Response.Cookies("xxx")("productcount") = 5
HttpContext.Current.Response.Cookies("xxx")("product0") = ""
Else
HttpContext.Current.Response.Cookies("xxx")("productcount") = productcount + 1
End If
Suggestions et critique accueillis et appréciés.
Chris
Bonjour Anthony, Je suis nouveau à apprendre à choisir les structures de données appropriées à un problème. Pouvez-vous expliquer pourquoi vous avez choisi la file d'attente au lieu d'une pile? Quand j'ai lu son problème à l'origine, j'ai pensé que la pile irait mieux car il veut montrer les 5 derniers éléments qu'un utilisateur a visités et une pile est LIFO. – Jon
@Jon, pour une liste des plus récemment utilisés, vous avez besoin d'une structure FIFO. Considérez que si la capacité est atteinte, vous devez sortir le dernier élément de la pile avant d'insérer celui en cours. Cela se traduirait par le fait que les premiers éléments de la pile restent là et que seul le premier élément change une fois que la capacité est atteinte. Ce qui est nécessaire, c'est que l'élément le plus ancien de la liste soit supprimé en premier, c'est-à-dire l'élément inférieur et non le sommet. Supprimer l'élément du bas est d'abord l'action d'une FIFO (une file d'attente) et non d'une LIFO (une pile). – AnthonyWJones
Merci beaucoup pour l'explication! Cela m'a beaucoup aidé, c'est tout à fait logique maintenant. – Jon