Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Cosa significa "mettere in AND"? O meglio...

    ...come si fa?
    Scusate la domanda forse banale, ma sono in questa situazione:

    in database ho una tabella con una serie di entries, e uno dei campi è un valore numerico ottenuto in fase di inserimento tramite form di select multipla come somma di certi valori (1, 2, 4, 8, 16, 32, etc...).

    Esempio pratico: in fase di registrazione di un post, associo ad esse diverse tag, quali CINEMA (1), RECENSIONE (2), POSITIVO (4), ma NON associo la tag IMPORTANTE (8).
    Il suo valore in DB sarà quindi 7, mentre un post con tutte le tag settate sarà in questo esempio un 15.

    Il mio obiettivo è fare in modo che questi post vengano in qualche modo "smistati automaticamente" dal sistema PHP/CakePHP che sto usando su un insieme di sole tre pagine, ognuna delle quali conterrà solo alcuni dei post, a seconda delle tag cui è stato associato (e quindi del valore alfanumerico che ha in DB).
    Un post può apparire su più pagine.

    Per fare questo devo (cito): "mettere in AND il valore del post con un altro valore, quello della pagina", ma non credo di aver capito cosa significhi.

    Mi rendo conto che è una domanda davvero stupida, ma... qualcuno può darmi un aiuto?
    Grazie ragazzi.

  2. #2
    Ciao,
    non ho capito molto bene la tua condizione dimmi se questo esempio la rispecchia:
    Hai un database con tanti articoli (es. "Tb_articoli"), ed ognuno di essi ha anche un valore che lo classifica (es. Categoria_Articolo) e vuoi che in una pagina del tuo sito vengano visualizzati solo gli articoli relativi a una sola categoria (es. solo "Cinema" o etc..)?

  3. #3
    Originariamente inviato da ciarlystreet
    Ciao,
    non ho capito molto bene la tua condizione dimmi se questo esempio la rispecchia:
    Hai un database con tanti articoli (es. "Tb_articoli"), ed ognuno di essi ha anche un valore che lo classifica (es. Categoria_Articolo) e vuoi che in una pagina del tuo sito vengano visualizzati solo gli articoli relativi a una sola categoria (es. solo "Cinema" o etc..)?
    Al momento è così (per continuare il tuo esempio, Categoria_Articolo può essere 1, 2 o 3).
    Io ho però bisogno di associare più categorie allo stesso articolo e quindi Categoria_Articolo diventa in realtà una delle possibili somme dei doppi di 1 [1, 2, 4, 8 etc, per assicurare unicità alle combinazioni].
    Uno stesso articolo può essere visualizzato su una o più pagine; e una pagina visualizzerà solo e sempre un certo "tipo" (somma di tipi) di articolo...

    Io credo che il "mettere in AND" serva per non essere costretto a creare una tabella molti a molti tra articoli e categorie (cosa su cui sono d'accordissimo: sarebbe uno spreco).
    Ma non so come fare...

  4. #4
    Io ho avuto un problema simile giorni fa e ho rislot facendo una tabella per ogni categoria e poi nelle pagine in cui volevo visualizzare tutti gli articoli non utilizzavo la condizione WHERE IN MYSQL dove invece volevo che si visualizzassero solo quelli di una categoria settavo WHERE Artiocolo_Categoria ='.$categoria_desiderata; .
    Ma sicuramente ci sarà qualche metodo che faccia evitare di fare 300 tabelle per ogni categoria..!! Solo che nn lo conosco neanche io!

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    SELECT campi FROM tabella WHERE tag & 2 > 0

    Questo è l'esempio con 2, cioè recensione. Se vuoi cinema metterai 1, positivo 4, ecc.

  6. #6
    Ciao,
    non so cosa intendi con mettere in and ma questo problema mi ricorda gli esercizi di logica booleana che facevo all'università nella mia vita precedente e quindi provo a darti uno spunto in questa direzione, vedi se può esserti utile.

    Il sistema che hai adottato è un semplice (e molto elegante aggiungo) sistema di numerazione binaria posizionale, i valori 1, 2, 4, 8 infatti corrispondono ai "pesi" che si usano nelle conversioni fra binario e decimale e il modo più semplice per gestirlo credo sia di utilizzare la funzione decbin() del php.

    A questa funzione passi un numero (il valore memorizzato nel tuo db) e lei ti restituisce la stringa binaria corrispondente che, vista la logica che hai scelto, corrisponde, cifra per cifra alle pagine in cui quel post deve apparire (tenendo conto che i pesi vanno attribuiti in ordine decrescente e che "1" significa "deve apparire" e "0" significa "non deve apparire").

    Se nel db hai, ad esempio, il valore 12, lo passi alla funzione e lei ti restituisce la stringa 1100 che corrisponde a IMPORTANTE + RECENSIONE

    codice:
    IMPORTANTE
    !   RECENSIONE
    !   !   POSITIVO
    !   !   !   CINEMA
    !   !   !   !
    !   !   !   !
    8   4   2   1
    
    1   1   0   0
    E' quindi sufficiente passare il valore del db alla funzione ed esaminare la stringa restituita per sapere in quali pagine quel post deve apparire.

    Addirittura potresti applicare la decbin in fase di caricamento del db, in questo modo invece di caricare, ad esempio, 7, caricheresti 0111, semplificando poi lo smistamento seguente.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  7. #7
    Grazie mille, la funzione decbin() è una salvezza... grazie ancora.

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da luca200
    SELECT campi FROM tabella WHERE tag & 2 > 0

    Questo è l'esempio con 2, cioè recensione. Se vuoi cinema metterai 1, positivo 4, ecc.
    ....problemi con la vista?

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.