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

    da file di testo a lista ordinata....

    Salve a tutti, sono già stato redarguito per eccesso di parole quindi oltre a rinnovarvi la mia stima vado dritto al problema....

    ho un file di testo così composto:

    ACE=1000000, arts, culture and entertainment, Arte, cultura, intrattenimento
    1001000, archaeology, Archeologia
    1002000, architecture, Architettura
    1003000, bullfighting, Corrida
    1004000, festive event (including carnival), Feste, Carnevale
    1005000, cinema, Cinema
    1005001, film festival, Festival Cinema
    1006000, dance, Ballo
    1007000, fashion, Moda
    1007001, jewelry, Gioielli
    1008000, language, Linguaggio
    1009000, library and museum, Biblioteche, musei
    1010000, literature, Letteratura
    1010001, fiction, Narrativa
    1010002, poetry, Poesia
    1011000, music, Musica,
    .... ecc. ecc. ......
    CLJ=2000000, crime, law and justice, Giustizia, Criminalità
    2001000, crime, Criminalità
    2001001, homicide, Omicidio
    2001002, computer crime, Crimini informatici
    2001003, theft, Furti, Rapine
    2001004, drug trafficking, Droga
    2001005, sexual assault, Reati sessuali
    2001006, assault (general), Aggressioni (generico)
    2001007, kidnapping, Sequestri Persona
    2001008, arson, Incendi dolosi
    2001009, gang activity, Gang delinquenziali
    2002000, judiciary (system of justice), Giustizia
    2002001, lawyer, Avvocatura
    2002002, judge, Magistratura
    2002003, court administration, Amministrazione giustizia
    2003000, police, Forze Ordine,
    2003001, law enforcement, Corpi Polizia
    2003002, investigation, Indagine
    2003003, arrest, Arresto
    2004000, punishment, Pena,
    2004001, fine, Multe, Ammende
    2005000, prison, Carceri
    2006000, laws, Codici
    .... ecc. ecc. ......
    SPO=15000000, sport, Sport,
    15001000, aero and aviation sport, Sport Aviatori,
    15001001, parachuting, Paracadutismo,
    15001002, sky diving, Paracadutismo sportivo,
    15002000, alpine skiing, Sci alpino,
    15002001, downhill, Libera,
    15002002, giant slalom, Gigante,
    15002003, super G, Super g,
    15002004, slalom, Slalom,
    15002005, combined, Combinata,
    15003000, American football, Football americano,
    15003001, (US) National Football League (NFL) (North American), National Football League (USA),
    15003002, entry deleted, Entry deleted,
    15003003, AFL, AFL,
    15004000, archery, Tiro con l'arco,
    15004001, FITA / Outdoor target archery, FITA/Tiro con l'arco con bersagli all'aperto,
    15004002, crossbow shooting, Balestra,
    15005000, athletics, track and field, Atletica leggera,
    15005001, 100 m, 100 m,
    15005002, 200 m, 200 m,
    15005003, 400 m, 400 m,
    15005004, 800 m, 800 m,
    come potete facilmente notare è un menu con sotto menu in cui la gerarchia delle voci è definita da un codice di 7/8 cifre in cui la prima cifra si riferisce alle voci del menu principale:
    1000000
    2000000
    3000000
    fino anche a 15000000

    mentre per le voci de menu di secondo livello:
    1001000
    1002000
    1003000
    ecc..

    in fine per quelle di terzo:
    1001001
    1001002
    1001003
    ecc...

    vorrei con php trasformarlo in una lista html tipo:
    Codice PHP:
    <ul>[*][*][*]
             <
    ul>[*][*][*][*]
              <
    ul>[*][*][*][*][/list][*][*]
             <
    ul>[*][/list] 
    non saprei da che parte incominciare a parte aprire il file e fare l'array delle righe tipo:
    Codice PHP:
    $list file('../percorso/file.txt');
    while(list(,
    $value) = each($list)){
        echo 
    "??????????????????????????????????????????";
        } 

  2. #2

    Non è possiubile?

    Credete che non sia fattibile o non mi sono espresso chiaramente..... Rinrazio i 29 che fin'ora hanno letto il post..

  3. #3
    Nel codice HTML ad un ceto punto chiudi una lista e ne apri un altra... nel codice del file txt a cosa corrisponde questa scelta?
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  4. #4
    Se intendi le sotto liste...... niente, l'unico modo per riconoscerle è nella sequenza del codice numerico con cui inizia la riga e data la lunghezza del file è improbo editarlo a mano....

  5. #5
    Si, ma se non mi dai una direttiva per entrare nel sotto listato come posso farti il sorgente?
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  6. #6
    Scusa forse non ho capito la domanda, cerco di chiarire...
    Il problema che incontro forse è proprio quello, non so come far capire a php che se incontra un 1001000 dopo 1000000 deve aprire un <ul> e chiuderlo prima di incontrare un 2000000.
    Analogamente ad un livello inferiore se incontra un 1001001 dopo 1001000 e chiuderlo prima di 1002000.

    Grazie mille per il tempo che mi dedichi e la pazienza,
    Francesco.

  7. #7
    Non mi pare complicatissimo
    Codice PHP:
    <?php
    $list 
    file("file.txt");

    echo 
    "<ul>";

    foreach(
    $list as $item)
    {
        
    $limit strpos($item',');
        
    $number substr($item0$limit);
        
    $string substr($item$limit+2);
        
        if(
    eregi("[A-Z]{3}"$number))
        {
            
    // Livello Principale
            
    echo "[*]{$string}";
        }
        else
        {
            echo 
    "<ul>";
            
            
    $subnumber substr($number, -2);
            
            if(
    eregi("00"$subnumber))
            {
                
    // Secondo Livello
                
    echo "[*]{$string}";
            }
            else
            {
                
    // Terzo Livello
                
    echo "<ul>[*]{$string}[/list]";
            }
            
            echo 
    "[/list]";
        }
    }

    echo 
    "[/list]";
    ?>

  8. #8
    Ti rispondo al volo prima ancora di provarlo....
    Intanto grazie a ripetizione per la disponibilità disinteressata.
    Secondo se ti interessa sapere cosa sta dietro a tutto questo ti dico subito che la questione è no profit, e si sta parlando di metadati nei file immagine e di coerenza con le direttive dello standard IPTC. Se mastichi l'inglese.....

    http://www.iptc.org/std/NewsCodes/0....idelines_3.pdf

    Ora provo a inserire il tuo codice in uno script che uso per applicare la gerarchia di parole chiave (il file txt) alle mie foto..


    Ps il file di testo di cui sopra lo edito a mano da un xml pubblicato da www.iptc.org. Certamente sarebbe più logico farlo fare ad uno script ma i parser xml per me sono peggio del cinese, se la sfida ti interessa ecco il file e tutta la mia collaborazione per capirlo .....

    http://www.iptc.org/NewsCodes/nc_ts-...tc-subjectcode

    Intanto Grazieeeeeeeeeee!!!!

  9. #9

    interazione con javascript

    Funzionaaaaaaaaaaaaaa!
    Perfettamente. ma.....

    questa lista è lunghissima...... quindi per gestirla la espando e contraggo a piacere con un javascript che riporto qui sotto (uso i tag php in mancanza d'altro):





    Codice PHP:

    <script language="JavaScript1.2">
    <!--

    var 
    head="display:''"
    img1=new Image()
    img1.src="../../../03_graphics_elments/service_icons/fold.gif"
    img2=new Image()
    img2.src="../../../03_graphics_elments/service_icons/open.gif"

    var ns6=document.getElementById&&!document.all
    var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1

    function checkcontained(e){
    var 
    iscontained=0
    cur
    =ns6e.target event.srcElement
    i
    =0
    if (cur.id=="foldheader")
    iscontained=1
    else
    while (
    ns6&&cur.parentNode||(ie4&&cur.parentElement)){
    if (
    cur.id=="foldheader"||cur.id=="foldinglist"){
    iscontained=(cur.id=="foldheader")? 0
    break
    }
    cur=ns6cur.parentNode cur.parentElement
    }

    if (
    iscontained){
    var 
    foldercontent=ns6cur.nextSibling.nextSibling cur.all.tags("UL")[0]
    if (
    foldercontent.style.display=="none"){
    foldercontent.style.display=""
    cur.style.listStyleImage="url(../../../03_graphics_elments/service_icons/open.gif)"
    }
    else{
    foldercontent.style.display="none"
    cur.style.listStyleImage="url(../../../03_graphics_elments/service_icons/close.gif)"
    }
    }
    }

    if (
    ie4||ns6)
    document.onclick=checkcontained

    //-->
    </script> 
    richiamato dalla lista, quindi ho modificato il tuo script come segue:

    Codice PHP:

    echo "<ul>";

    foreach(
    $list as $item)
    {
        
    $limit strpos($item',');
        
    $number substr($item0$limit);
        
    $string substr($item$limit+2);
        
        if(
    eregi("[A-Z]{3}"$number))
        {
            
    // Livello Principale
            
    echo "<li id=\"foldheader\">{$string}";
        }
        else
        {
            echo 
    "<ul id=\"foldinglist\" style=\"display:none\" style=&{head};>";
            
            
    $subnumber substr($number, -2);
            
            if(
    eregi("00"$subnumber))
            {
                
    // Secondo Livello
                
    echo "<li id=\"foldheader\">{$string}";
            }
            else
            {
                
    // Terzo Livello
                
    echo "<ul id=\"foldinglist\" style=\"display:none\" style=&{head};>[*]{$string}[/list]";
            }
            
            echo 
    "[/list]";
        }
    }

    echo 
    "[/list]"
    ma ottengo un risultato malfunzionante..... :master:

  10. #10
    Non so se il problema è quello, ma di solito gli id devono essere univoci, altrimenti si usa class se l'elemento può essere ripetuto, magari prova a chiedere nel forum Javascript

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.