Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137

    estrarre un campo pulito da un db (senza tag non solo html)

    riprovo a postare sono tre giorni che impazzisco...

    da un file.asp che cerca in un db dei campo che contemgono nomi di file che possono essere audio o img provo ad estrarre i nomi dei file sapendo che mi servono o img o suoni

    questa viene chiamata dal file:
    con istruzione :

    testoimg = ricavaImg(testoimg,"SOU")
    testoimg viene da un campo che estraggo così
    testoimg = server.HTMLEncode(rs("media"))
    il campo 'media' potrebbe essere :
    <media><item>chapter7.mp3</item><item>fileimmagine.jpg</item></media>

    se la chiamata di ricavaImg ci metto "IMG" tutto ok se imvece ci metto SOU : casino....
    si pianta e va in timeput
    inoltre ho avuto una serioe di casini perchè mi leggeva <item> come i codici &lt; quindi i conteggi erano sfalsati e ...oddio sto andando al manicomio...vi prego...qulcuno provi a dirmi qualcosa..anche parolacce.,..

    buona serata a tutti....


    <%
    '___________funzione estrai nomefile
    Function ricavaImg(imagesrc,cosa)
    ' estrapola solo il nome file dell'immagine dal campo imagesrc

    dim testimg, len_txt, i, iniz,fin,fname1,nfile, assegnato,it1, it2
    'definisci quale estensione cercare
    if cosa = "SOU" then
    primo=".mp3"
    secondo=".wav"
    else
    primo =".jpg"
    secondo=".gif"
    end if
    response.write(primo&"--"&secondo&"-cosa:"&cosa)

    iniz=0
    fin=0
    assegnato=false
    fname1=""
    nfile=""
    testimg = imagesrc
    'testimg=replace(testimg,"","&lt;media&gt;")
    'testimg=replace(testimg,"","&lt;/media&gt;")
    'testimg=replace(testimg,"oooitem","&lt;item&gt;")
    'testimg=replace(testimg,"itemooo","&lt;/item&gt;")
    'response.write(testimg)
    it1="&lt;item&gt;"
    it2="&lt;/item&gt;"

    len_txt=len(testimg)
    i=1
    fin=1
    do while fin< len_txt+1

    iniz=instr(fin,testimg,it1)+12
    'response.Write("iniz:"&it1&iniz)
    if iniz>6 then
    fin=instr(iniz,testimg,it2)-1
    'response.Write("fin:"&it2&fin)
    end if
    totale=fin-iniz+1
    'response.Write("tot:"&totale)

    if fin>iniz then

    fname1 = mid(testimg, iniz, totale)
    'response.Write("file="&fname1)

    if (instr(1, fname1,primo,0) >0) or (instr(1,fname1,secondo,0) >0) then
    nfile = fname1
    'response.Write(nfile)
    assegnato = true
    else
    nfile=""
    end if

    end if
    if assegnato = true then
    exit do
    end if

    fin=fin+len(it2)
    loop

    ricavaImg=nfile

    End Function

    '_____________END FUNCTION
    %>

  2. #2
    Non ho capito cosa devi fare.
    Magari posta un campo ad esempio ed un esempio di cosa dovresti ricavarne.
    SGr33n

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137
    mi rendo conto che in questi giorni sono molto criptica..nenache io mi capisco molto :-)

    nel db che devo utilizzare c'è un campo che si chiama 'media' e all'interno può contenere il testo che ho già messo:

    <media><item>nomeimg.jpg</item><item>nomesuono.mp3</item></media>

    questo è il caso uin cui ci siano ambedue ma potrebbero essercene 3 o 4 di file o nessuno o uno.

    quello che devo ricavare dal campo è il primo file audio o img a seconda del campo 'cosa' che invio alla funzione 'ricavaimg'

    tutto qui :-) ma sono esattamente 4 gg che mi perdo dietro....

    grazie a chiounque possa darmi un aiuto....

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137
    credo il problema sia nella ricerca del testo
    '<item>' e '</item>'

    in una stringa

    fa un gran casino...
    qualcuno potrebbe aiutarmi??


    io ho fatto così

    iniz=instr(fin,testimg,"&lt;item&gt;",0)+14

    fin all'inizio è 1
    poi
    if iniz>14 then
    fin=instr(iniz,testimg,"&lt;/item&gt;",0)
    è il totale dei caratteri che sono all'interno che non quadra

    fin-iniz+1 non funziona

    aiuto!!!!!!!! VVoVe:

  5. #5
    Non c'è cosa più semplice, ho inserito gli items in un array ed ho avviato un ciclo per la ricerca del valore richiesto.

    Ti ho scritto una semplice funzione totalmente commentata per capirne il funzionamento e con test incluso, l'ho anche provata, fammi sapere se è tutto ok.

    Bye

    codice:
    <%
    
    'Funzione per il recupero del nome file data l'estensione
    Function getFilename(theString, theType)
    
    	Dim saryItems
    	Dim intLoop
    	Dim strField
    
    	'Elimino i tag di apertura e di chiusura
    	If InStr(theString, "<media><item>") > 0 Then theString = Replace(theString, "<media><item>", "")
    	If InStr(theString, "</item></media>") > 0 Then theString = Replace(theString, "</item></media>", "")
    	
    	'Inserisco i vari campi in un array
    	If theString <> "" Then saryItems = Split(theString, "</item><item>")
    
    	'Avvio un ciclo per la ricerca del file richiesto
    	For intLoop = LBound(saryItems) To UBound(saryItems)
    
    		If Right(saryItems(intLoop), Len(theType) + 1) = "." & theType Then
    			getFilename = Left(saryItems(intLoop), Len(saryItems(intLoop)) - Len(theType) -1)
    		End If
    
    		If getFilename <> "" Then
    			Exit For
    		End If
    	Next
    
    End Function
    
    %>
    
    
    <%
    
    Dim strCampo
    Dim strExt
    
    'Controllo se sono giunti dati
    If Request.TotalBytes > 0 Then
    
    	Response.Write("<div style=""border: 1px solid #000; background-color: #C9C9C9; margin-bottom: 20px; padding: 10px;"">" & vbCrLf & vbCrLf)
    
    	strCampo = Request.Form("campo")
    	strExt = Request.Form("ext")
    
    	If strExt = "" Then
    
    		Response.Write("Hai dimenticato di inserire l'estensione")
    
    	ElseIf strCampo = "" Then
    
    		Response.Write("Hai dimenticato di inserire il campo")
    
    	Else
    
    		Response.Write("Risultato: " & getFilename(strCampo, strExt))
    		strCampo = ""
    		strExt = ""
    	
    	End If
    
    	Response.Write(vbCrLf & vbCrLf & "</div>" & vbCrLf)
    
    End If
    
    %>
    
    <form method="post">
    	Estensione
    
    	<input type="text" name="ext" style="width: 40px;" value="<% = strExt %>">
    
    
    	Stringa
    
    	<input type="text" name="campo" style="width: 400px;" value="<% = strCampo %>">
    
    	<input type="submit" value="invia" />
    </form>
    SGr33n

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137
    avevo già fatto una cosa del genere stamattina più dedicata diciamo al sito che sto creando...
    e avevo fatto un test con un file che creava le varie stringhe possibili e poi chaiamava la funziione..
    il problema credo sia con i campi che provengono dal db
    li vedo uguali a video perchè li stampo ma non sono uguali e quindi va in loop

    ho usato server.HTMLEncode nel file di prova e tutto ok
    poi con il sito intero mi da errore
    Tipo non corrispondente: 'server.HTMLEncode'

    uffa uffa uffa...che palle

  7. #7
    Ma perchè usi server.HTMLEncode scusa? Non si tratta mica di indirizzi. HTMLEncode ti tramuta i > ed i < in &gt; ed &lt; è normale che poi non ti funzioni.
    SGr33n

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2000
    Messaggi
    137
    scusa avevi ragione... ora funziona comunque c'era un errore nell loop di valutazione dei caratteri...
    ora ho risolto

    grazie mille

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 © 2026 vBulletin Solutions, Inc. All rights reserved.