[RISOLTO] caratteri accentati

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho un piccolo problema con i caratteri accentati, penso che dipenda da js/jq.
mi sto preparando un piccolo form autocompletante con questi script
PHP:
<!DOCTYPE html>
<html>
   <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript"
        src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
        <script type="text/javascript">
                $(document).ready(function(){
                    $("#name").autocomplete({
                        source:'getautocomplete.php',
                        minLength:2
                    });
                });
        </script>
		<style type="text/css">
input{
	font-size: 12px;
}
ul{
	border-color:#999999;
	border-style:solid;
	border-width:1px; width:200px;
	font-size:12px;}
li{
	border-bottom-color:#999999;
	border-bottom-style:solid;
	border-bottom-width:1px;
	list-style:none;
	width:200px;
	text-align: center;
}
li:hover{
	background-color:#CCCCCC;
	border-bottom-color: #FF0000;
}
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
</style>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
   <body>
<?php
if(isset($_POST['invia'])){
	$da_cercare=$_POST['name'];
	$ex=explode("|",$da_cercare);
	if(!isset($ex[0]) || !isset($ex[1])){
		echo "ricerca errata";
		echo "<pre>";
		var_dump(trim(stripslashes($ex[0])));
		var_dump(trim($ex[1]));
		echo "</pre>";
		//echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		echo "<pre>";
		var_dump(trim(stripslashes($ex[0])));
		var_dump(trim($ex[1]));
		echo "</pre>";
	}
}
?>
      <form method="post" action="">
             cerca: <input type="text" id="name" name="name" />
             <input name="invia" type="submit" id="invia" value="go">
      </form>
   </body>
</html>

PHP:
<?php
 mysql_connect("localhost","root","password");
 mysql_select_db("borgo-italia");
 $term=$_GET["term"];
 $query=mysql_query("SELECT * FROM gli_speciali where tit_it like '%".$term."%' AND regione !='***' order by tit_it ");
 $json=array();
    while($speciale=mysql_fetch_array($query)){
         $json[]=array(
                    'value'=> $speciale["tit_it"]." |".$speciale["id"],
                    'label'=>$speciale["tit_it"]." |".$speciale["id"]
                        );
    }
 echo json_encode($json);
?>
ora se esempio
nella tabella ho
37 | Altopascio la città dei cavalieri del tau //carattere accentato
nella casella autocompleta risulta Altopascio la citt (ma non sarebbe grave)
il grave è cosa trasmette e cioè

ricerca errata
string(18) "Altopascio la citt"
string(0) ""

oltre a tagliare non trasmette l'id che mi serve poi per estrre il file e riendirizzare

mentre se ho in tabella
96 | Lucca: la citt&agrave; dall'arborato cerchio //carattere html al posto di à
nella casella risulta
Lucca: la citt&agrave; dall'arborato cerchio |96 //E' brutto vedere &agrave;
ma la ricerca è giusta

string(44) "Lucca: la città dall'arborato cerchio"
string(2) "96"

come posso risolvere eliminando la bruttezza ma avendo la ricerca giusta?

p.s. @crirc
anche quello chi avevo ti inviato ha lo stesso difetto, per cui ho provato questo che comunque mi sembrerebbe meglio
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, con quello che mi avevi inviato puoi risolvere così
PHP:
$locali[] = utf8_encode($row["Comune"]);
questo non ho avuto il tempo di guardarlo bene ma la soluzione credo sia sempre la stessa : usa utf8_encode();
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
quindi devo risolvere a monte, cioè quando faccio la insert
es
PHP:
<?php
$var="la città di lucca";
$query="INSERT INTO gli_speciali(titolo) VALUES('".utf8_encode($var)."')";
//....
?>
è po quando leggo nello script di ricerca che mi genera l'autocomplete
PHP:
<?php
//...
$json=array();
    while($speciale=mysql_fetch_array($query)){
         $json[]=array(
                    'value'=> utf8_decode($speciale["tit_it"])." |".$speciale["id"],
                    'label'=>utf8_decode($speciale["tit_it"])." |".$speciale["id"]
                        );
    }
 echo json_encode($json); 
?>
?

p.s.
intendevi utf8_decode()? o sto confondendomi io?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
no, ho usato utf8_encode()
nel db il campo lo ho codificato con utf8_general_ci
ci sono le lettere accentat è à ò
senza utf8_encode() vedo un punto di domanda
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ahime, non me ne ero accorto, ma riguardando con phpmyadmin, i campi sono gia settati collation utf8_general_ci,
quindi non e quello
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
L'ho provato con la mia tabella comuni e funziona
PHP:
<?php

define("HOST", "localhost");
define("DB_USER", "root");
define("DB_PWD", "");
define("DB_NAME", "database");

$term = $_GET["term"];
mysql_connect(HOST, DB_USER, DB_PWD);
mysql_select_db(DB_NAME);

$query = "select * from comuni where Comune LIKE '" . $term . "%'";
$sql = mysql_query($query);
$json = array();
while ($speciale = mysql_fetch_array($sql)) {
    $json[] = array(
        'value' => utf8_encode($speciale["Comune"]) . " |" . $speciale["Istat"],
        'label' => utf8_encode($speciale["Comune"]) . " |" . $speciale["Istat"]
    );
}
echo json_encode($json);
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
allora ho messo come hai detto tu
il record è
103|Altopascio la città dei Cavalieri del Tau
nella casella di autocomp viene giusto (à)
nella casella cerca inserendo citt lo trova ma inserendo città no, cioè le caselle di autocimp non si riempiono
che debba mettere qui
$term=$_GET["term"];
un encode o decode?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Si un decode
PHP:
$term = utf8_decode($_GET["term"]);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
eureka

ciao
sembra tutto ok.
posto il codice corrette anche se le correzzioni sono php e non jq
PHP:
<!DOCTYPE html>
<html>
   <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript"
        src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
        <script type="text/javascript">
                $(document).ready(function(){
                    $("#name").autocomplete({
                        source:'getautocomplete.php',
                        minLength:2
                    });
                });
        </script>
		<style type="text/css">
input{
	font-size: 12px;
}
ul{
	border-color:#999999;
	border-style:solid;
	border-width:1px; width:200px;
	font-size:12px;}
li{
	border-bottom-color:#999999;
	border-bottom-style:solid;
	border-bottom-width:1px;
	list-style:none;
	width:200px;
	text-align: center;
}
li:hover{
	background-color:#CCCCCC;
	border-bottom-color: #FF0000;
}
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
</style>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	$da_cercare=$_POST['name'];
	$ex=explode("|",$da_cercare);
	if(!isset($ex[0]) || !isset($ex[1])){
		echo "file non trovato, ripeti";
		echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		$f=trim($ex[1]);//nome file
		$t=strtolower(trim(stripslashes($ex[0])));//titolo
		echo "<a href=\"gli_speciali/$f\">$t</a><br /><hr><br />";
		//echo "<meta http-equiv='Refresh' content='0; URL=gli_speciali/".$t."'>";
	}
}
?>
      <form method="post" action="">
             cerca: <input type="text" id="name" name="name" />
             <input name="invia" type="submit" id="invia" value="go">
             <input type="reset" name="Submit" value="reset">
      </form>
   </body>
</html>
e qusto il file getautocomplete.php (che passerò poi a mysqli)
PHP:
<?php
 mysql_connect("localhost","root","password");
 mysql_select_db("borgo-italia");
 $term=utf8_decode($_GET["term"]);
 $query=mysql_query("SELECT * FROM gli_speciali WHERE tit_it LIKE '%".$term."%' AND regione !='***' order by tit_it ");
 $json=array();
 
    while($speciale=mysql_fetch_array($query)){
         $json[]=array(
                    'value'=> utf8_encode($speciale["tit_it"])." |".$speciale["file"],
                    'label'=>$speciale["regione"]." |".utf8_encode($speciale["tit_it"])
                        );
    }
 
 echo json_encode($json);
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [Risolto] Form non invia a db access caratteri accentati Classic ASP 1
F [Risolto] Form non invia a db access caratteri accentati Classic ASP 16
fabryx [PHP]RISOLTO: Parsing xml nodi con caratteri speciali PHP 1
N [risolto] array_key_exists e caratteri Jolly PHP 2
V [risolto] Contatore caratteri stile SMS da una textarea Javascript 6
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9

Discussioni simili