Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203

    Ottenere formattazione minima del testo prelevato dal database

    Salve a tutti. Approdo qui dopo anni di militanza in HWUP che molti di voi conosceranno.

    Devo realizzare un database mysql che contenga delle leggi.
    Il testo della legge è copiato ed incollato in uno dei campi del database.

    Quando lo prelevo vorrei ottenere un effetto di questo tipo:

    Articolo 1

    Lo Stato garantisce il diritto alla procreazione cosciente e responsabile, riconosce il valore sociale della maternità e tutela la vita umana dal suo inizio.
    L'interruzione volontaria della gravidanza, di cui alla presente legge, non è mezzo per il controllo delle nascite.
    Lo Stato, le regioni e gli enti locali, nell'ambito delle proprie funzioni e competenze, promuovono e sviluppano i servizi soci-sanitari, nonchè altre iniziative necessarie per evitare che l'aborto sia usato ai fini della limitazione delle nascite.


    Articolo 2

    I consultori familiari istituiti dalla legge 29 luglio 1975, n. 405, fermo restando quanto stabilito dalla stessa legge, assistono la donna in stato di gravidanza:
    a ) informandola sui diritti a lei spettanti in base alla legislazione statale e regionale, e sui servizi sociali, sanitari e assistenziali concretamente offerti dalle strutture operanti nel territorio;
    ...


    Quindi con articoli separati e magari con i numeri degli articoli in neretto.
    Per la separazione ho risolto con il comando nl2br ma per il grassetto come fare?

    L'unica soluzione che mi viene in mente (rudimentale e primitiva) è quella di inserire il la formattazione (es )direttamente nel testo del database.

    grazie dell'aiuto a tutti voi!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    nessuno?

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Mah, non saprei. Se per esempio usi due campi nel db, uno per il numero dell'articolo: (articolo 1, articolo 2, ecc) e uno per il contenuto dell'articolo stesso potresti applicare la formattazione non direttamente al campo del db ma in fase di visualizzazione dopo che hai fatto la tua query, usando il tag b o strong. Ma fondamentalmente non è che cambi molto.
    Sicuramente si può fare anche usando un solo campo ma occorrerebbe un'espressione regolare (penso) per estrapolare solo il numero dell'articolo da mettere in grassetto e non saprei come si fa.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Fatti un DTD XML per le tue necessita', poi la formattazione la gestisci a CSS.

    Non confondere presentazione con struttura dati del documento.
    There are 10 types of people in the world - those who understand binary and those who don't.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    No gli articoli non sono separati, il testo della legge è inserito tutto in un unico campo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Prova a usare l'FCK Editor o qualche suo clone.
    There are 10 types of people in the world - those who understand binary and those who don't.

  7. #7
    ciao, sinceramente io proverei un pò a rivedere l'organizzazione del database, se ti è concesso, in modo da semplificarti la vita...

    forse però non ti è concesso... bisognerebbe saperne di + su come è formattato il testo del campo. Ho avuto questa idea, sono partito dal presupposto che tra un articolo e il titolo successivo ci siano sempre 3 "a capo"... spero ti possa servire.

    Codice PHP:
    $testo 
    "Articolo 1

    Questo è il primo articolo.
    Lo Stato garantisce il diritto alla procreazione cosciente e responsabile, tranne la domenica che è festa.
    L'interruzione volontaria della gravidanza, di cui alla presente legge, non è mezzo per il controllo delle nascite.
    Lo Stato, le regioni e gli enti locali non si ritengono responsabili qualora il nascituro dovesse diventare juventino.


    Articolo 2

    Questo è il secondo articolo.
    Il titolo del secondo articolo è distanziato dal precedente con tre \"a capo\" e noi capiamo che è un titolo grazie a questo.
    I consultori familiari istituiti dalla legge 29 luglio 1975, n. 405, fermo restando quanto stabilito dalla stessa legge, assistono la donna in stato di gravidanza:
    a ) informandola sui diritti a lei spettanti in base alla sua misura di reggiseno.
    "
    ;





    function 
    boldiamo($testo)
    {
       
    // secondo me forse ha più senso riprogettare il db, però...
       // qua dividiamo la stringa in parti. il separatore è il comando "a capo"
       
    $testo nl2br($testo);
       
    $risultato explode("
    "
    ,$testo);
       
    // la prima riga è sempre un titolo, la boldiamo
       
    echo "[b]" $risultato[0] . "[/b]

    "
    ;
       
    // ora creiamo un ciclo per formattare il resto del testo
       // quando becco 3 
     
    consecutivila linea dopo sarà un titolo e la bolderò
       $tot 
    count($risultato);
       
    $trebr 0;
       for(
    $i=1;$i<$tot;$i++)
       {
         if (
    trim(str_replace("
    "
    ,"",$risultato[$i])) != false)
         {
           if (
    $trebr == 3)
           {
             echo 
    "

    [b]" 
    $risultato[$i] . "[/b]

    \n"
    ;
             
    $trebr 0;
           }
           else
           {
             echo 
    $risultato[$i] . "
    \n"
    ;
           }
         }
         else
         {
           
    $trebr $trebr 1;
         }
       }
    }



    boldiamo($testo); 
    sopra la panca la capra campa, sotto la panca la suddetta decede (soffrendo).
    (il mio vero nome è davidino ^_^)

  8. #8
    A mio avviso è molto più semplice fare questo:
    - creare un database intelligente creando due campi nella tabella: titolo articolo (nel caso ci fossero articoli diversi da "Articolo n. ..." e contenuto articolo

    Nell'output fai in modo che il titolo dell'articolo sia in grassetto.


    Codice PHP:
    echo [b]$data[titolo_articolo][/b];
    echo 
    $data[contenuto_articolo]; 
    Poi non so cosa tu voglia realizzare e quali siano le tue necessità.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    203
    Effettivamente avete ragione, è il database da riprogettare ma...

    ...dovrei inserire gli articoli poi uno per volta e così per ogni legge, copia incolla articolo per articolo, ciascuno costituente un dato separato rispetto agli altri.

    Sarebbe comunque faticoso perchè io farei un copia incolla veloce del testo della legge prendendola da un software che a sua volta è basato su un database (al quale ovviamente non posso acceedere direttamente).

    Così cerco le leggi che mi servono e copio il testo in un'unica soluzione nel mio campo Testo_legge e via veloce...

    Il databse è così rganizzato:


    Ho adottato tre tabelle.

    La principale "norme" in cui id_norma è la chiave primaria


    Campo Tipo Null Predefinito
    id_norma tinyint(5) No
    id_area tinyint(2) No 0
    id_fonte tinyint(2) No 0
    data date No 0000-00-00
    numero smallint(6) Si 0
    estremi tinytext No
    titolo text Si NULL
    volgare varchar(60) Si NULL
    numero G.U. smallint(6) Si NULL
    data G.U. date Si NULL
    testo longtext No
    flag varchar(20) Si NULL


    poi ci sono la tabella "fonte"
    1 Legge
    2 Decreto Legge
    3 Decreto Legislativo
    4 Decreto del Presidente della Repubblica
    5 Decreto Ministeriale
    6 Regio Decreto
    7 Regio Decreto Legge
    8 Regio Decreto Legislativo
    9 Direttiva CE
    10 Regolamento CE


    e la tabella "area"

    1 Ambiente Territorio
    2 Amministrativo Costituzionale
    3 Banca Borsa
    4 Circolazione Stradale
    5 Civile
    6 Commerciale Fallimento
    7 Condominio Locazioni
    8 Edilizia Urbanistica
    10 Fisco Tasse
    11 Lavoro Previdenza
    12 Ordine pubblico
    9 Famiglia Successioni
    13 Penale

  10. #10
    ora che non è notte fonda posso risponderti meglio...

    io concordo con .andrea, qualche piccola correzione al db ti può semplificare la vita.
    Senza fare nulla di trascendentale, aggiungendo un campo "titolo" tutto diventa più facile.

    Aggiungo che se il database lo usi solo per il tuo sito web, non c'è nulla di male ad inserire tag html all'interno, soprattutto visto che nel database non dividi il testo normale dai titoli, quindi diventa laborioso distinguere una riga "titolo" da una riga di normale testo...

    se per la tua comodità preferisci infilare tutto insieme senza mai mettere mano al testo, devi per forza inventarti un qualche metodo per "analizzare" il testo estratto dal db in maniera artigianale... da cui l'idea sopra di contare gli "a capo", nella speranza che siano inseriti in maniera logica...

    di + non saprei dirti. Se ti serve, te la ripropongo...

    Codice PHP:
    function boldiamo($testo)
    {
       
    $risultato explode(chr(13),$testo);
       echo 
    "[b]" $risultato[0] . "[/b]

    "
    ;
       
    $tot count($risultato);
       
    $trebr 0;
       for(
    $i=1;$i<$tot;$i++)
       {
         if (
    trim(str_replace(chr(13),"",$risultato[$i])) != false)
         {
           if (
    $trebr == 3)
           {
             echo 
    "

    [b]" 
    $risultato[$i] . "[/b]

    \n"
    ;
             
    $trebr 0;
           }
           else
           {
             echo 
    $risultato[$i] . "
    \n"
    ;
           }
         }
         else
         {
           
    $trebr++;
         }
       }

    ciao
    sopra la panca la capra campa, sotto la panca la suddetta decede (soffrendo).
    (il mio vero nome è davidino ^_^)

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.