Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203

    Massimo 3 record principali?

    Buondì!

    Spero riusciate ad aiutarmi perché non riesco a capire come sviluppare questa cosa.
    Ho una tabella in un database che deve contenere degli articoli, di questi articoli solo 3 devo essere i principali.
    Ogni volta che inserisco un nuovo articolo e spunto nella checkbox "principale" (quindi la voce nella riga "principale" diventa TRUE), automaticamente l'articolo principale con la data più vecchia deve cambiare il valore in FALSE.

    Si può fare?

  2. #2
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446
    Non hai specificato il database.

    Comunque puoi fare un order by id (o data) desc e mettere un limit di 3.

  3. #3
    Se quello che vuoi è che questo avvenga automaticamente hai due possibili strategie:

    1) Fai in modo che esista un ordinamento (per esempio, i record che hanno principale attivato e visti in ordine temporale inverso, dal più recente al più vecchio) che, fornito ad una select, ti metta nelle prime tre posizioni i tre record che ti servono, dopodichè usi una LIMIT per prendere solo i primi tre

    2) Inserisci un TRIGGER nel db che, sull'inserimento di un nuovo record, si occupi di togliere il flag ai record che non hanno più diritto di averlo.

    Io fossi in te seguirei la via 1) che è più semplice e diretta, e ti permette anche, in futuro, di sapere come era la situazione in passato semplicemente escludendo i record inseriti dopo la data che ti interessa...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203
    Originariamente inviato da Shores
    Se quello che vuoi è che questo avvenga automaticamente hai due possibili strategie:

    1) Fai in modo che esista un ordinamento (per esempio, i record che hanno principale attivato e visti in ordine temporale inverso, dal più recente al più vecchio) che, fornito ad una select, ti metta nelle prime tre posizioni i tre record che ti servono, dopodichè usi una LIMIT per prendere solo i primi tre
    Avevo pensato anch'io a questa soluzione, ma poi sovviene un problema...
    Facciamo conto che ci sono 4 articoli flaggati come principali. 3 vengono visualizzati in testa attraverso il LIMIT, il 4° dovrebbe andare subito sotto insieme agli altri articoli non flaggati.

    Il fatto è che, mentre è semplice richiamare gli articoli non flaggati come principali, difficile sarà dirgli di richiamare tutti gli articoli escludendo quei tre che sono già stati visualizzati sopra.

    Per questo mi chiedevo se ci fosse un sistema che togliesse automaticamente il flag al post più vecchio tra i "principali".
    Intanto mi leggo come funziona il TRIGGER!

  5. #5
    Originariamente inviato da Reiko81
    ...
    Il fatto è che, mentre è semplice richiamare gli articoli non flaggati come principali, difficile sarà dirgli di richiamare tutti gli articoli escludendo quei tre che sono già stati visualizzati sopra.
    ...
    E perchè dovrebbe essere difficile?Basterà, invece che escludere quelli che hanno principale disattivato, ordinare la lista in modo che mostri prima quelli che hanno principale attivato e poi queli che no, e poi, proprio come con la limit puoi dire che vuoi dal primo al terzo, con la stessa limit puoi dire che vuoi dal quarto al trentesimo, o che ne so, tanto sono sicuro che non vorrai visualizzare infiniti record nella parte seguente, no?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.