Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Select su mysql con lettere accentate

    Ciao a tutti, ho un problemino con un motore di ricerca che sto sviluppando.
    Ho creato questo codice php ridotto ai minimi termini il codice per fare dei test...
    Sul db le lettere accentate sono memorizzate con il formato ISO-8859-1, quindi "à" sul db è riportata come "à"

    Ora, se dal mio motore di ricerca cerco la parola "motricità", con il codice qui sotto non mi estrae niente, dove sbaglio??

    Grazie.

    codice:
    <?php
    $cnnDB = mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('miodb') or die(mysql_error());
    
    $testo = $_GET['cerca'];
    if ($testo != "")
    {
    	$textarea=mysql_real_escape_string($testo);
    	$textarea = iconv('UTF-8', 'ISO-8859-1', $textarea);
    
    	if (!empty($condition)) $condition .= " AND ";
    	$array_txt = explode(" ", $textarea);
    	for ($i=0; $i<count($array_txt); $i++)
    	{
    		if ($i > 0){
    			$condition .= " AND ";
    		}
    		$condition .= "(titolo LIKE '%" . $array_txt[$i] . "%' OR descrizione LIKE '%" . $array_txt[$i] . "%')";
    	}
    	$query = "SELECT * FROM articoli WHERE ".$condition;
    	$res = mysql_query($query,$cnnDB);
    	$articoli = mysql_fetch_array($res);
    	$countArt = mysql_num_rows($res);
    }
    ?>
    <!DOCTYPE>
    <html>
    <head>
    <meta charset="utf-8" />
    </head>
    <body>
    <form id="cerca_prodotti" name="cerca_prodotti" method="get" enctype="multipart/form-data">
    	<input type="text" name="cerca" id="cerca" />
    </form>
    <div>Query: <?php echo $query ?></div>
    <div>Nr articoli: <?php echo $countArt ?></div>
    </body>
    </html>
    <i>I sogni passano se uno li fa passare</i>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Specifica lo stesso charset per la connessione al db, dopo la mysql_select_db() mettici
    mysql_set_charset('ISO-8859-1');

    e specifica lo stesso charset anche nella pagina dove si trova il form, mettici il tag meta nell'header.

  3. #3
    Eventualmente puoi, prima di fare la conevrsione caratteri dell'input, verificare il charset di ingresso e convertire
    Codice PHP:
    if (stripos($GLOBALS["_ENV"]["CONTENT_TYPE"], "utf-8")) {
    $textarea iconv('UTF-8''ISO-8859-1'$textarea);

    Qualcosa del genere

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.