Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Lista di tutte le tag con virgola

    Salve a tutti,
    ho una domanda stupida da fare, ma da una piccola ricerca sul forum non ho trovato molto (non sapendo bene cosa cercare).
    Ho un tot di record di articoli in cui per ognuno ho specificato le tag che nel db sono messe tutte insieme separate da una virgola:
    ex. | CAMPOTAG | html, linguaggio, script

    Ora, vorrei riuscire a fare una query e printare in ordine alfabetico tutte le tag che ho usato in tutti gli articoli.

    Come posso fare? :master:

    Grazie
    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    Beh.... fai un explode() della stringa che ti contiene tutti i tag, usando per paramento il carattere di separazione (nel tuo caso la combinazione virgola-spazio).

    La funzione ti restituisce un array, che ordinerai con natsort().

    Esempiuccio semplice semplice.

    Codice PHP:
    $stringa "html, linguaggio, script";

    $array_tag explode(", "$stringa);
    $array_ordinato natsort($array_tag);

    echo 
    "<pre>";
    print_r($array_ordinato);
    echo 
    "</pre>"
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Considera però che ho bisogno che siano raggruppati per nome, perchè altrimenti mi troverei lo stesso tag ripetuto per tutti i record usati.

    Ex db

    ID | TITOLO | TAG
    1 | Ciao Forum | forum, html
    2 | Formattare un carattere | html, css
    3 | Primo sui motori | seo, motori di ricerca
    4 | Ictv web tv | html, webcast

    Come vedi la tag html viene usata 3 volte, in che modo posso fare l'equivalente del GROUP BY ??

    Grazie ancora
    Perchè uso Maxthon? | Mi piace questa chat

  4. #4
    Quello che vuoi fare te, viene benissimo se i tag fossero in un DB.

    Con il tuo metodo, non puoi fare altro che ciclare e controllare che non venga stampato due volte lo stesso tag.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Originariamente inviato da alcio74
    Quello che vuoi fare te, viene benissimo se i tag fossero in un DB.

    Con il tuo metodo, non puoi fare altro che ciclare e controllare che non venga stampato due volte lo stesso tag.
    I tag infatti sono in un db :master:
    Perchè uso Maxthon? | Mi piace questa chat

  6. #6
    Come mio solito capisco sempre alla ventesima volta!
    Spiegami bene!

    Quindi tu hai un campo nel DB dove vai a mettere i TAG, separati da una virgola?
    :master:
    Sarebbe stato meglio se avessi lavorato con due tabelle, una per gli articoli ed una per i tag.
    Fammi pensare ad un metodo..... poi mi faccio risentire.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    $arrayTag = array();
    $query mysql_query("select tag from tabella") or die(mysql_error() );
    while(
    $row mysql_fetch_assoc($query) ) {
            foreach(
    explode(',',$row['tag']) as $miotag)
                
    $arrayTag[] = $miotag;
    }
    echo 
    '<pre>';
    $arrayTag array_unique($arrayTag);
    natcasesort($arrayTag);
    //print_r($arrayTag);
    echo implode(',',$arrayTag); 

  8. #8
    Ciao Nicola,
    innanzitutto grazie per lo script, funziona abbastanza bene.
    Ho solo un paio di problemi, uno dei 2 è che molte tag le ripete 2 volte per via, presumo, della presenza della virgola o meno.

    Ti faccio un esempio, ho 2 articoli con queste tag:

    1° articolo; 2thebeat, ensi, danno
    2° articolo: 2thebeat
    3° articolo: 2thebeat, kaos, turi

    Il risultato è che avrò 2 volte il 2thebeat nella lista delle tag, perchè in uno di questi non aveva la virgola accompagnata (il secondo).

    Come posso fare?

    Il secondo "problema", piu stupido forse, è che dovrei riuscire a rendere cliccabile ogni tag singolarmente, in questa maniera non ci riesco, riesco a fare un solo href per tutto il blocco.

    Grazie mille!
    Perchè uso Maxthon? | Mi piace questa chat

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per il primo problema, se ho capito bene, "l'errore" è dovuto al fatto che separi i tag con la virgola e anche con lo spazio.

    Rimuovili così e vedi se risolvi

    $arrayTag[] = trim($miotag);


    edit

    Il trim è da aggiungere nel codice che ti ho già scritto

    Codice PHP:
    $arrayTag = array(); 
    $query mysql_query("select tag from tabella") or die(mysql_error() ); 
    while(
    $row mysql_fetch_assoc($query) ) { 
            foreach(
    explode(',',$row['tag']) as $miotag
                
    $arrayTag[] = trim($miotag); // tag con spazi rimossi 

    echo 
    '<pre>'
    $arrayTag array_unique($arrayTag); 
    natcasesort($arrayTag); 
    //print_r($arrayTag); 
    echo implode(',',$arrayTag); 

  10. #10
    Funziona perfettamente, grazie!!!

    Per il secondo "problema" sai niente invece?
    Perchè uso Maxthon? | Mi piace questa chat

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.