Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    21

    Formattazione stringa testo in formato HTML

    Ho un problema abbastanza serio con la formattazione di testo ed immagini insieme.
    Per eseguire l'operazione di solito uso questo codice:

    '''''''''''''''''''''''''''''''''''''''
    <%
    dim RicercApri
    set RicercApri=Conn.execute("select * from articoli where idtipo=1 AND idcat=12 AND NOT data=""temp"" ORDER BY idart DESC")
    If NOT RicercApri.eof then
    varApri=RicercApri("idart")
    %>
    <tr><td height="5"></td></tr>
    <tr><td class="testo">
    <%
    strMSQL="select * from mediasuart where idart=" &varApri&" and NOT align=""attach"""
    set media=conn.execute(strMSQL)
    ''''''conto il numero di media allegati'''''''''''''''''''''''''''''''''''''''''' '''''''''''''
    set quantiMedia=Conn.execute("Select count(*) as quanti from mediasuart where idart="&varApri &" and NOT align=""attach""")
    If media.eof then
    %>
    <p style="text-align:justify;float:left; margin:4px;"><%=RicercApri("testo")%></p>
    <%
    Else
    for i=0 to quantiMedia.fields("quanti")-1
    varMedia=media("idmedia")
    strMdSQL="select * from mediateca where idmedia=" &varMedia
    set mediains=Conn.execute(strMdSQL)
    If mediains("larghezza")>mediains("altezza") then
    larghezza=100
    altezza=((mediains.fields("altezza")*larghezza)/mediains.fields("larghezza"))
    Else
    altezza=100
    larghezza=((mediains.fields("larghezza")*altezza)/mediains.fields("altezza"))
    End if
    %>
    <div>
    <a href="#" onClick="Winfoto(<%=varMedia%>);">
    <img style="margin:2px;" src=<%="back/images/"&mediains("nome_file")%> border=0 align="<%=media("align")%>" alt="clicca sull'immagine per vederla nelle sue dimensioni reali" width=<%=larghezza%> height=<%=altezza%>>
    </a><p style="text-align:justify;margin-left:8px;"><%= mid(RicercApri("testo"),(i*(int(len(RicercApri("te sto"))/quantiMedia("quanti"))))+1,int(len(RicercApri("tes to"))/quantiMedia("quanti")))%></p></div>
    <%
    media.movenext
    next
    End if
    %>

    </td></tr>
    <% End if %>
    </table>

    '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''
    Di solito il codice funziona bene; ho visto però che ci sono diversi problemi quando si utilizzano nel testo tag HTML: l'esempio classico è quello dei linik, che diventano inservibili perchè spezzati dalla funzione.
    Sto provandop da parecchio tempo a risolvere il problema,utilizzando le funzioni di formattazione stringa in modo isolare i campi link

    [ più o meno in questo modo ]

    '''''''''''''''''''''''''''''''''''''''''''''''''' '''''
    set listamedia=conn.execute(strSQL)
    set quantimedia=conn.execute("select count(*) as quanti from index_articoli_mediateca where idart="&varmediart)
    if listamedia.eof then
    %>
    <div valign="top" style="text-align:justify;margin-left:5px;margin-right:5px;"><%=articoli("testo")%></div>
    <%
    else
    posIn=1
    rec=0
    testo=articoli("testo")

    do until listamedia.eof
    'for i=0 to quantimedia("quanti")-1
    set media=conn.execute("select * from mediateca where idmedia="&listamedia("idmedia")&" AND NOT tipologia=""all""")
    if media.eof=false then
    larghezza=media("larghezza")
    altezza=media("altezza")
    alt=media("testo")
    align=listamedia("align")
    valign=listamedia("valign")
    if altezza > 200 then
    larghresize=200
    alteresize=int((larghresize*altezza)/larghezza)
    else
    larghresize=larghezza
    alteresize=altezza
    end if
    %>
    <div valign="top" style="margin-left:5px;margin-right:5px;text-align:justify">
    <img style="margin-left:2px;margin-top:2px;margin-right:2px;margin-bottom:4px;float:<%=align%>;vertical-alignment:<%=valign%>" src=<%="mediateca/"&media("percorso") %> border=0 alt=<%=alt%> width=<%=larghresize%> height=<%=alteresize%>>
    <span style="text-align:justify;margin:4px;">
    <%
    'MyPos=Instr(posIn,articoli("testo"),"<a",1)
    MyPos=Instr(posIn,testo,"<a",1)
    'response.write "MyPos="&Instr(posIn,testo,"<a",1)
    '"testo="&testo&"
    inziolink="&MyPos&"
    finelink="&posIn&"
    "
    if MyPos=0 then
    response.write articoli("testo")
    else
    posIn=Instr(MyPos,testo,"/a>",1)
    'response.write "posIn="&posIn
    stringainiziale=Left(testo,MyPos-1)
    'response.write "stringainiziale="&stringainiziale
    'stringapiulink=Left(testo,(posIn+3))
    'response.write "
    stringapiulink="&stringapiulink
    '-(Len(testo)+int(posIn))
    link=Mid(testo,MyPos,((posIn+2)-(Len(stringainiziale))))
    'link=Right(stringapiulink,Len(testo)-Len(stringainiziale))
    testo=stringainiziale&link
    'response.write "stringain="&stringainiziale&"
    "
    'response.write "link="&link&""
    response.write testo
    'response.write "resto="&Right(articoli("testo"),(Len(articoli("te sto"))-Len(testo)))
    'response.write "stringainiz="&stringainiziale&"
    "
    'codicelink=Mid(articoli("testo"),MyPos+1,(Len(art icoli("testo"))-Len(stringainiziale)))
    'response.write "codicelink="&codicelink
    'testo=stringainiziale&codicelink
    'response.write "testo="&testo&"
    "'stringainiziale="&stringainiziale&"
    finelink="&finelink&"
    MyPos="&MyPos&"
    "
    testo=Right(articoli("testo"),(Len(articoli("testo "))-(Len(testo)+2)))
    end if
    'posIn=posIn+1

    %>
    </span></div>
    <%
    end if
    set media=nothing
    rec=rec+1

    'response.write "<font color=#ff0000>testo=" &testo&"
    </font>"
    'response.write "finelink="&posIn&"
    "
    'testo= Mid(articoli("testo"),MyPos,Instr(articoli("testo" ),posIn))
    listamedia.movenext
    loop
    end if
    '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''' [ ]


    ma ancora non sono riuscito a trovare niente di accettabile. Se qualcuno di voi ci è già passato, per favore mi aiuti!!!

  2. #2
    a Gennarì.....ci ho provato, ma mi va insieme la vista: usare il tag "code", magari eliminando le righe commentate prima di postare, è chiedere troppo?

    ... il tuo codice tra l'altro è interessante.......
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    Testato: a me funziona bene e non spezza il link che, di conseguenza, è pure funzionante.

    Per testare, ho posto
    PosIn = 1

    L'unica modifica rispetto al tuo codice:
    testo=Right(articoli("testo"),(Len(articoli("testo "))-(Len(testo))))
    anzichè
    testo=Right(articoli("testo"),(Len(articoli("testo "))-(Len(testo)+2)))


    Vedi test:

    http://www.larianaweb.com/utilities_...olastringa.asp
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    21

    credo proprio di no....

    Scusa il ritardo..........

    Mi dispiace deluderti, ma se provi ad includere delle immagini nel testo da visualizzare, che sarebbe poi lo scopo di tutto 'sto sbattimento, vedrai che la formattazione va a puttane un'altra volta....Ho provato a far partire la stringa di testo da posIn+1,+2, in modo da evitare eventuali troncature del testo, ma non sembra funzionare.....
    Comunque ti riscrivo il codice ripulito e commentato,spero tu abbia il tempo e la voglia di darmi una mano....io,se riesco a risolvere il problema, penso di andare a cena di pesce per festeggiare...

    Il codice è questo:
    codice:
    <%
      sub formattaimmaginietesto
         varmediart=articoli("idart")
       strSQL="select * from index_articoli_mediateca where idart="&varmediart&" AND NOT align=""attach"" ORDER BY ordine"
    ''''''''''''''''''''''''''recupero la variabile per cercare nella tabella index_articoli_mediateca quali immagini ho deciso di allegare al testo dell'articolo
         set listamedia=conn.execute(strSQL)
    	 set quantimedia=conn.execute("select count(*) as quanti from index_articoli_mediateca where idart="&varmediart)
    ''''''''''''''''''''''''''conto il numero di immagini che devono comparire insieme al testo''''''''''''''''''''''''''''''''''''''''''' 
    
    	 if listamedia.eof then
     %>
                                  <div valign="top" style="text-align:justify;margin-left:5px;margin-right:5px;"><%=articoli("testo")%></div>
    <%
    '''''''''''''''''''''''''''se non ci sono immagini da includere nel testo formatto il testo e lo stampo a video, altrimenti eseguo il maledetto codice di formattazione delle stringhe'''''''''
         else
      	      posIn=1
    	      testo=articoli("testo")
                                             
    	 do until listamedia.eof
    '''''''''''''''''''''il recordset media va a recuperare l'immagine e le informazioni annesse; questa parte puoi anche saltarla'''''''''''
    	         set media=conn.execute("select * from mediateca where idmedia="&listamedia("idmedia")&" AND NOT tipologia=""all""")
    	              if media.eof=false then
    	                         larghezza=media("larghezza")
    				             altezza=media("altezza")
    		                     alt=media("testo")
    			                 align=listamedia("align")
    				             valign=listamedia("valign")
    			                        if altezza > 200 then
    		                             larghresize=200
    		                             alteresize=int((larghresize*altezza)/larghezza)
    	                                else
    		                             larghresize=larghezza
    		                             alteresize=altezza
    	                                end if
    ''''''''''''''''''''''''''''''''fine della "parte facoltativa", inserisco in un livello separato l'immagine e passo alla parte turbolenta''''''''
     %>
                      	     <div valign="top" style="margin-left:5px;margin-right:5px;text-align:justify">
    		                     <img style="margin-left:2px;margin-top:2px;margin-right:2px;margin-bottom:4px;float:<%=align%>;vertical-alignment:<%=valign%>" src=<%="mediateca/"&media("percorso") %> border=0 alt=<%=alt%> width=<%=larghresize%> height=<%=alteresize%>>
                                <span style="text-align:justify;margin:4px;">
    							 <%
    '''''''''''''MyPos cerca il tag iniziale per identificare il link, iniziando dall'elemento PosIn.Istanziato ad 1,PosIn cerca dall'inizio della stringa testo''''''' 
    	         MyPos=Instr(posIn,testo,"<a",1) 
     		                                 if MyPos=0 then
    										 response.write articoli("testo")
    		                                 else
    '''''''''''''se non ci sono link nel codice stampo direttamente il testo;questa istruzione è da migliorare perchè stampa tutto l'articoloper ogni immagine visualizzata,comunque.............''''''''
    			 posIn=Instr(MyPos,testo,"/a>",1)
    '''''''''''''''''posIn a questo punto si posiziona alla fine del tag che indica il link'''''''''''''''''''''
    				stringainiziale=Left(testo,MyPos-1)
    '''''''''''''''''stringainiziale mi restituisce la porzione di testo precedente l'inizio del link'''''''''''''''''''''''
    				 link=Mid(testo,MyPos,((posIn+2)-(Len(stringainiziale))))
    ''''''''''''''''''link mi dovrebbe invece restituire solo il codice corrispondente al link;conto da posIn+2 in modo da comprendere anche i caratteri"a>"''''''''
    				testo=stringainiziale&link
    ''''''''''''''''''testo a questo punto è uguale alla porzione di testo precedente il link + link'''''''''''''''''
    				response.write testo
    										  end if
    ''''''''''''''''''stampata la prima stringa reistanzio la variabile testo, uguale all'intero testo da visualizzare - la porzione già visualizzata''''''  							   
    							    %>
    								</span></div>
    <%
                        end if
    			      set media=nothing
    				testo=Right(articoli("testo"),(Len(articoli("testo"))-(Len(testo)+2)))
       	  listamedia.movenext
      	 loop
    	end if
     end sub
      %>

  5. #5
    Grazie per avere postato il codice, questa volta, in modo ben comprensibile e persino elegante



    Ugualmente non è semplice fare un controllo senza avere il database e i files...

    La cosa che, a mio parere, è chiara, è che il comportamento della tua pagina nell'insieme (e della stringa contenente il link in particolare) non dipende da come manipoli la stringa (e quindi, in ultima istanza, da ASP), visto che questo lo fai correttamente (lo dimostra il fatto che, di per sé, funziona bene)

    Penso che tu debba risolvere il problema a livello di formattazione della pagina, facendo in modo (per esempio) che il testo non venga spezzato in più righe (proprietà "nowrap" di HTML? E' solo un'idea, una delle possibilità...), comunque con gli strumenti di impaginazione messi a disposizione da HTML/CSS

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    21

    già,ma come?

    Approfitto del tuo interessamento e spero che sia anche tu messo così male da combattere con HTML ed ASP alle 19:30 di un sabato sera per approfondire il discorso....
    In realtà io credo che il problema vero sia quello di intercettare e far interpretare correttamente i tag HTML alla funzione e, per fare questo, credo purtroppo di dover lavorare in ASP. In pratica mi servirebbe una funzione opposta a quella di Server.HTMLEncode, ma non riesco proprio a trovarla...
    Per quanto riguarda poi i CSS,ho provato la proprietà nowrap, come anche a dare whitespacere in modo da ottenere l'effetto inverso a quello che mi suggerivi, ma non credo funzioni.
    Comunque adesso provo a fare un replace all'interno della stringa di testo [tipo Replace(testo,"<a","</p><a",1) & Replace(testo,"/a>,"/a>

    ",1))]in modo da spezzare la stringa e ti faccio sapere........

  7. #7
    Sono messo anche peggio: ho una moglie con cui combattere.....perchè non provi a partire dal risultato, cioè dalla pagina COME LA VUOI OTTENERE (e la codifichi a dovere con HTML/CSS indipendentemente da ASP) e solo dopo, quando l'avrai formattata, passi ad ASP, badando solo a mantenere la formattazione esistente.....



    ...io penso che proverei a procedere così.

    Buon divertimento.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.