Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Articoli in evidenza.

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437

    Articoli in evidenza.

    Ciao ragazzi!

    Ho fatto una sorta di articoli in evidenza dove controllo se nel sql il campo evidenza = 1 e l'ho limitato a 10 risultati.. In teoria basterebbe cosi perche se diventa un articolo piu vecchio dei 10 non viene piu visualizzato ma pero sporcare troppo il database vorrei fare qualcosa che controlla se l'articolo e al 11 posto e mi setta automaticamente evidenza = 0, uso il campo data per ordinare gli articoli.

    Qualche suggerimento?

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    potresti crearti un array con i tuoi 10 valori, e usare la clausola NOT in di mysql, escludendo quei 10, che stanno nell'array, dall'update..
    facilito esempio..

    Codice PHP:
    UPDATE tabella SET evidenza 0 WHERE id NOT IN (20,38,44,65,96,251
    dove 20 38 44 65 96 251 sono gli id di quelli che hanno evidenza = 1

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    Non sono sicuro di aver capito bene ma mi sa che cosi non risolvo il problema..
    Io se ho un articolo hot lo colloco nella cima della lista dei articoli e lo nascondo nella lista normale sottostante per non creare doppioni. cioe estraggo where evidenza = 0, Se lascio cosi tutti gli articoli che diventano piu vecchi dal 11 posto in poi non verranno visualizzati nella lista dei articoli, per questo volevo mettere un controllo.. in generale che potrebbe venir fatto prima durante l'aggiunta e modifica di un articolo.. oppure tramite cron ogni 1 ora.. non saprei pero come verificare.. ho pensato a una cosa del genere

    Estraggo gli articoli dove evidenza = 1
    con mysql num rows vedo il numero dei articoli.. se sono maggiori di 10 imposta agli articoli piu vecchi evidenza 0 fino a far far diventare il il num rows pari a 10

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    Ultimamente sempre piu aiuto in questo sito ricevo.. nn risponde piu nessuno -.-

  5. #5
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Originariamente inviato da mario19xx
    Ultimamente sempre piu aiuto in questo sito ricevo.. nn risponde piu nessuno -.-
    con la pazienza e soprattutto un modo di scrivere un pò più decifrabile si ottiene tutto.. (ho dovuto rileggere il tuo messaggio 10 volte per capire di preciso cosa intendevi, e ancora non sono sicurissimo di ciò che ho letto..)

    non voglio far polemica sia chiaro, ti sto dando solo consigli per farti aiutare in questo forum

    comunque come dice la documentazione ufficiale:

    To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter. This statement retrieves all rows from the 96th row to the last:

    codice:
    SELECT * FROM tbl LIMIT 95,18446744073709551615;
    nel tuo caso dovresti fare qualcosa di questo tipo:

    codice:
    UPDATE tabella SET evidenza = 0 WHERE id IN (SELECT * FROM tbl WHERE evidenza = 1 LIMIT 10,18446744073709551615);
    update (se non ricordo male) non accetta un LIMIT x,x per questo dobbiamo rifare una select.
    Sono le 5 di mattina e probabilmente ho fatto qualche errore ma può comunque essere un punto di partenza.
    l'UPDATE viene eseguito su tutti i campi che hanno evidenza = 1 ESCLUDENDO PERò i primi 10 risultati. questo significa che evidenza=0 verrà messo solo dall'11sima riga trovata.
    Ti rivedrò in un'altra vita…quando saremo tutti e due gatti...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    Grazie, Piu tardi provo e ti dico se va tutto bene.

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    l'UPDATE viene eseguito su tutti i campi che hanno evidenza = 1 ESCLUDENDO PERò i primi 10 risultati. questo significa che evidenza=0 verrà messo solo dall'11sima riga trovata.
    ..cioè la stessa cosa che gli ho detto di fare io..

    ..mi pare almeno..

  8. #8
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Originariamente inviato da telegio
    ..cioè la stessa cosa che gli ho detto di fare io..

    ..mi pare almeno..
    si praticamente il ragionamento è lo stesso "ma inverso" (cerco dei risultati IN un'altra query invece di NOT IN).. ho cambiato 1 pò la logica, magari gli torna più facile
    Ti rivedrò in un'altra vita…quando saremo tutti e due gatti...

  9. #9
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ahhhhhhhh!!!!

    ok, ok..

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    437
    telegio scusami non avevo capito ora con la testa un po piu lucida ho capito cosa devo fare.

    Grazie a entrambi

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.