Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    210

    problema con lettera 'è'

    Buongiorno a tutti, ho questo strano problema: in uno script PHP costruisco una query select ad un Db MySql con un dato inserito da una campo di input nella pagina del browser; il dato è la lettera accentata 'è'; la query sembra funzionare nel senso che trova il record, ma come risultato visualizza solo il primo campo del record; se invece inserisco direttamente la lettera 'è' nella query dello script (...where parola = $dato-di-input vs ... where parola = 'è'), la query trova il record e visualizza tutti i campi del record. Qualcuno mi aiuta? Ho provato a cambiare il set dei caratteri del db da latin 1 a utf 8 ma il risultato è lo stesso. E' forse un problema del browser (firefox)? Grazie.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Dovresti scrivere un po' di codice per farci capire se c'è qualcosa che non va lì.
    Tipo dove recuperi i dati del form e generi la query.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    210
    Ho provato a cambiare tutti i parametri del db in utf8_general_ci (db, tabelle, collazione e chi più ne ha più ne metta), ma niente da fare. Ripeto, la parola 'è' viene trovata nella tabella, tuttavia viene stampato il solo i campo 'Nome' e nessun altro campo di quel record.

    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Dovresti scrivere un po' di codice per farci capire se c'è qualcosa che non va lì.
    Tipo dove recuperi i dati del form e generi la query.
    Questo è il form php da cui prendo la frase:
    Codice PHP:
    echo"<form name='dialogo' method='POST' action='analisi-frase.php'>
                 <h4>frase:<input type='text' name='utente' size='90'></h4>
                 <input type='submit' value='invia'>
             </form></body>"


    e questa è il codice con la query:
    Codice PHP:
    $spazi="/[\s]+/";                                //espressione regolare per indicare uno o più spazi 
        
    $arPeriodo=preg_split($spazi,trim($frase)); //è l'array che contiene le parole della risposta dell'utente 
        
    $num=count($arPeriodo); 
        
    $agg=0;

    for (
    $i=0;$i<$num;$i++){    // passo le parole
            
    $parola=$arPeriodo[$i]; 
            
    $query='SELECT * FROM `parole` where `nome` = \''.$parola.'\'';  // query 
            
    $result=mysql_query($query,$conn);                           // invio la query 
            
    if (!$result){echo "query non eseguita";} 
            
    $nrec=mysql_num_rows($result); 
            if(
    $nrec>0){          
                
    $gram[$parola]=mysql_fetch_array($resultMYSQL_ASSOC);      // risultato della query in array associativo 
                
    echo"<br>Sgram:";print_r($gram[$parola]); 
                
    $gram[$parola]['pos']=$i+$agg
                
    $gram[$parola]['nrec']=$nrec;
                
    $arStrTipo[$i+$agg]=$gram[$parola]['Tipo']; 
                
    $newPeriodo[]=$parola;
                           
            }else{ 
                      echo
    "<br>!!! parola:$parola non trovata";   
           }

    Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    210
    P.s. ho verificato che il valore della variabile che contiene una altro campo dello stesso record che contiene 'è', $gram[$parola]['Tipo'], non è nullo ma vuoto '' (vuoto, non contiene niente, mentre il valore del campo è: 'verbo')

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non si capisce quali sono i "campi del record" che non vengono visualizzati. Nel tuo codice, l'unica istruzione di visualizzazione è questa
    Codice PHP:
    echo"<br>Sgram:";print_r($gram[$parola]); 
    .
    Quale altro campo dovrebbe visualizzare?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    210
    Quote Originariamente inviata da luca200 Visualizza il messaggio
    Non si capisce quali sono i "campi del record" che non vengono visualizzati. Nel tuo codice, l'unica istruzione di visualizzazione è questa
    Codice PHP:
    echo"<br>Sgram:";print_r($gram[$parola]); 
    .
    Quale altro campo dovrebbe visualizzare?
    $gram è un array di array in cui le parole inserite sono le prime chiavi ($parola) e i campi del record le seconde chiavi.
    Cerco di spiegarmi meglio con un esempio: per la frase "il cane è un animale" la stampa che viene fuori è la seguente:
    query:SELECT * FROM `parole` where `nome` = 'il'
    Sgram:Array ( [Nome] => il [Tipo] => art.d.m.s. [persona] => [riferimento] => )
    query:SELECT * FROM `parole` where `nome` = 'cane'
    Sgram:Array ( [Nome] => cane [Tipo] => s.m. [persona] => [riferimento] => )
    query:SELECT * FROM `parole` where `nome` = 'è'
    Sgram:Array ( [Nome] => è [Tipo] => [persona] => [riferimento] => )
    query:SELECT * FROM `parole` where `nome` = 'un'
    Sgram:Array ( [Nome] => un [Tipo] => art.i.m.s. [persona] => [riferimento] => )
    query:SELECT * FROM `parole` where `nome` = 'animale'
    Sgram:Array ( [Nome] => animale [Tipo] => s.m. [persona] => [riferimento] => )

    Come puoi vedere vengono stampati per ogni parola i valori dei campi, tranne che per la parola "è", della quale viene stampato il valore del campo nome e nient'altro, come se gli altri campi del record fossero vuoti.

    p.s. avevo modificato lo script inserendo la stampa della query prima di postare il risultato, questa ulteriore stampa non la trovi nello script che ho postato precedentemente.
    Ultima modifica di aleocel; 17-06-2019 a 22:33

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    210
    [RISOLTO] ho inserito negli header della pagina con il form il charset "ISO-8858-1" e convertito db tabelle e campi in latin1_general_ci ... si, in fondo era semplice, ed il post sui caratteri speciali illuminante ... però io ci aggiungerei questi particolari scontati per l'italiano. Assolutamente senza polemica, solo per aiutare i somari come me!

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    In realtà le lettere accentate con utf8 dovrebbero funzionare.
    Comunque la guida sui caratteri strani non è specifica per le lettere accentate, accade anche con altri caratteri e la codifica utf8 è stata presa solo per fare degli esempi, c'è scritto che si deve poi usare quella adatta alle proprie esigenze.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    210
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    In realtà le lettere accentate con utf8 dovrebbero funzionare.
    Comunque la guida sui caratteri strani non è specifica per le lettere accentate, accade anche con altri caratteri e la codifica utf8 è stata presa solo per fare degli esempi, c'è scritto che si deve poi usare quella adatta alle proprie esigenze.
    La guida è stata essenziale per farmi capire come risolvere il problema. Le guide non possono che essere un valido aiuto e chi le pubblica ha la mia stima. Alla prossima.

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.