MasterDrive.it   
Vai indietro   MasterDrive.it > Web Development e Scripting > PHP



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 26-02-2010, 16:28   #1 (permalink)
Neofita della community

 
67 Messaggi

ritademarco novizio della comunita' ( + 10 )
visualizare le ricorrenze di una sottostringa in una stringa in grassetto o eviden

Salve,
ho un nuovo problema
devi visualizzare una stringa prelevata da una tabella di un database
con le ricorrenze di una sottostrina ( scelta attraverso una select)
in grassetto o evidenziato.

esempio:
la stringa letta è :" dddghd pippo hfjakah pippo cjhccj<pippo"
la sottostringa cercata è "pippo"
mi deve visualizzare la prima stringa in quersto modo:
dddghd pippo hfjakah pippo cjhccj<pippo
Il codice php e' il seguente:


Codice PHP:
?php 
if (isset($_POST['upload']) > 0){

$strSQL "SELECT * FROM ANAGRAFICA where id_anag = '".$_POST['id_anagrafica']."' ";
       
$result mysql_query($strSQL$conn) or die (print(mysql_error()));
       
$row mysql_fetch_assoc($result);
       
$cognome $row['cognome'];

   
$strSQL "SELECT * FROM ordini where ID_ORDINE = '".$_POST['ID_ORDINE']."' ";
       
$result mysql_query($strSQL$conn);
       
$row mysql_fetch_assoc($result);
       
$estratto $row['ESTRATTO'];
       if (
eregi($cognome$estratto))  {

$a str_replace($cognome,"<b>".$cognome."</b>",$estratto);
echo 
$a;
}
      else
      echo
"non ci sono interventi di "$cognome;
       

}
?> 
aspetto una risposta
grazie
Rita

ritademarco non è in linea   Bookmark and Share Rispondi quotando
Vecchio 27-02-2010, 10:47   #2 (permalink)
Neofita della community

 
50 Messaggi

iacoposk8 novizio della comunita' ( + 10 )
mmm... sembrerebbe giusto.. io però proverei una cosa di questo tipo
Codice PHP:
$cognome_grassetto="<b>".$cognome."</b>";
$a str_replace($cognome$cognome_grassetto ,$estratto); 
perchè potrebbe darsi che alla str_replace non gli piacciano le virgolette punti ecc... potrebbero dar problemi...
prova, se non viene dicci che errore/problema ti da...
iacoposk8 non è in linea   Bookmark and Share Rispondi quotando
Vecchio 02-03-2010, 16:34   #3 (permalink)
Neofita della community

 
67 Messaggi

ritademarco novizio della comunita' ( + 10 )
visualizzare ricorrenze testo in grassetto o evidenziato

Salve,
ho provato a utilizzare il tuo sugerimento , ma non funziona.
Rimane tutto invariato.
Attendo lumi!
Grazie
Rita
ritademarco non è in linea   Bookmark and Share Rispondi quotando
Vecchio 02-03-2010, 17:04   #4 (permalink)
Neofita della community

 
50 Messaggi

iacoposk8 novizio della comunita' ( + 10 )
potrebbe anche essere che ci vadano i monoapici o i doppi apici...
tipo:
$a = str_replace("$cognome", "$cognome_grassetto" ,$estratto);
non so bene, è una funzione che non ho mai usato.
al limite te la puoi creare te una funzione simile, ma proprio se non riesci a risolvere il problema... verrebbe una cosa un pò contorta, tipo:
Codice PHP:
$lung=strlen($estratto);
$lungc=strlen($cognome);
for(
$i=0;$i<$lung;$i++)
{
    
$c=0;
    for(
$j=0;$j<$lungc;$j++)
    {
        if(
$estratto[$i+$j]!=$cognome[$j])
        {
             
$c++;
             
$j=$lungc+1;
        }
    }
    if(
$c==0)
    {
        echo
"<b>";
        
$fineb=$i+$lungc;
    }
    echo 
$estratto[$i];
    if(
$i==$fineb)
    {
        echo
"</b>";
    }

non l'ho provato, non so se va, l'importante è che capisci la logica di funzionamento, così riesci a modificarlo se da problemi.
per prima cosa con strlen prendo la lunghezza della parola ricercata e della variabile dove viene cercata.
il primo for scorre la variabile $estratto e il secondo la variabile cognome.
nel secondo for c'è un if che fa un paragone:
se la prima cella della variabile $cognome è uguale alla cella $estratto nel punto in cui è arrivata (per via del primo for) allora procede con la cella successiva e le paragona...
se per caso le celle non sono uguali esce dal for (perchè j diventa troppo grande) e la variabile $c (controllore) viene incrementata.
successivamente si controllerà che se è rimasta a zero la variabile $c (quindi le condizioni del if mostrano che la variabile $cognome è presente in $estratto) si stamperà <b> e si memorizzerà il punto dove chiudere il grassetto (</b>). poi si stampa sempre la variabile $estratto, indipendentemente dal fatto che ci sia il grassetto o meno. e l'ultimo if chiude il grassetto..

questo metodo è il più contorto, ma non mi veniva in mente nient'altro, non conoscendo la funzione replace...

spero che riuscirai a mettere tutto a posto, se non ti è chiaro qualcosa sarò felice di darti una mano
iacoposk8 non è in linea   Bookmark and Share Rispondi quotando
Vecchio 04-03-2010, 10:58   #5 (permalink)
Neofita della community

 
67 Messaggi

ritademarco novizio della comunita' ( + 10 )
Question visualizazzasione sottstringa in grassetto

SALVE,
Funziona in modo parziale.
Se c'è la parola Sindaco e la parola Vicesindaco
e la parola ricercata e' 'Sindaco'
mi evidenzia sia Sindaco che Vicesindaco,
e non deve essere così.
Come fare?
Aspetto
Grazie
RITA
ritademarco non è in linea   Bookmark and Share Rispondi quotando
Vecchio 04-03-2010, 14:27   #6 (permalink)
Neofita della community

 
50 Messaggi

iacoposk8 novizio della comunita' ( + 10 )
contando che quello script non l'avevo nemmeno provato son molto soddisfatto del risultato
diciamo che lo script funziona in modo parziale perchè questo che hai citato era un caso che non avevo previsto.
dovresti fare delle prove ma credo che si possa risolvere
sostituendo la riga:
if ($c==0)
con la riga:
if ($c==0 && $estratto[$i-1]==" ")
che praticamente dice che oltre al fatto che la $c deve essere uguale a zero pure la cella precedente alla parola cercata deve essere uno spazio.
quindi se la parola è vicesindaco, siccome non c'è uno spazio tra la 'e' e la 's' non entrerà nel if, mentre se è vice sindaco, entrerà, siccome c'è lo spazio...

credo che così funzioni anche se non son certo che i doppi apici che racchiudono uno spazio lui li legga come spazio...
per esempio se non ricordo male il a capo lo vede come \n..
però probabilmente va... facci sapere
iacoposk8 non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum


Tutti gli orari sono GMT +2. Attualmente sono le 09:49.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.