Foros del Web » Programando para Internet » PHP »

Problema al insertar tildes y eñes, ya intente de todo

Estas en el tema de Problema al insertar tildes y eñes, ya intente de todo en el foro de PHP en Foros del Web. Hola, ya intente de todo en colocar utf8 en html y en header de php a use correctamente utf8_decode y utf8_encode ya agregue el mysql_query("SET ...
  #1 (permalink)  
Antiguo 10/11/2015, 09:14
 
Fecha de Ingreso: junio-2014
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 0
Problema al insertar tildes y eñes, ya intente de todo

Hola,
ya intente de todo
en colocar utf8 en html y en header de php
a use correctamente utf8_decode y utf8_encode
ya agregue el mysql_query("SET NAMES 'utf8'");
con htacces cambie la configuración de apache y nada.
Les dejo mi conexión a la base de datos y me ayuden si estoy haciendo algo mal

Código PHP:
class conectarMySQL {
    
    private 
$servidor;
    private 
$usuario
    private 
$password
    private 
$bd
    private 
$consulta
    private 
$inserta;
    private 
$enlace;
    private 
$resultado
    private 
$datos
    private 
$actualiza;
    private 
$elimina;
    
    public function 
__construct($servidor,$usuario,$password,$bd) {
        
$this->servidor=$servidor;
        
$this->usuario=$usuario;
        
$this->password=$password;
        
$this->bd=$bd;
    }
    public function 
conectar() {
        if(
$this->enlace=mysqli_connect($this->servidor,$this->usuario,$this->password)) {
            if(
mysqli_select_db($this->enlace$this->bd)){
                
                
            } else {
                echo 
"No se ha podido seleccionar la  BD";
            }
        } else {
            echo 
"No se ha podido conectar a la bd";
        }     
        
    }   
    public function 
consultar($query) {
        
mysqli_query($this->enlace,"SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8', NAMES 'utf8'");
        
$this->consulta=mysqli_query($this->enlace,$query) or die (mysqli_error());
    }    
    
    public function 
insertar($queryI) {
        
$this->inserta=mysqli_query($this->enlace$queryI) or die (mysqli_error());
    }  
    public function 
actualizar($queryA){
        
$this->actualiza=mysqli_query($this->enlace$queryA) or die (mysqli_error());
    }
    public function 
cerrarconexion() {
        
mysqli_close($this->enlace);
    }
    public function 
limpiaconsulta() {
        
mysqli_free_result($this->consulta);
    }
    public static function 
dataBase($numDB){
        switch(
$numDB){
            case 
0:
            
// Base de datos prueba localhost
            
$bd1 = new conectarMySQL("localhost""xxxxxx""xxxxxx""xxxxxx");
             return 
$bd1;
             break;
        }
    }

  #2 (permalink)  
Antiguo 10/11/2015, 12:10
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Saludo.
Pues funciona bien, el tema es, ¿Cuál función de la clase se está usando?

Sí se usa insertar, esa función no tiene la consulta previa para dejar todo en utf8.
Sí se usa consultar, esa guarda bien.

Así el asunto, una de tres soluciones.
1. Pasar el query de utf8 a las demas funciones.
2. Hacer uso solo de consultar.
3. Pasar el query de utf8 a la función conectar, y en caso que se logre
seleccionar la base de datos, el primer query que haga sea el de utf8,
con eso ya las demás funciones ya quedan con el set de utf8.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 10/11/2015, 12:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

podrias partir por revisar el cotejamiento de tu base de datos o de tus tablas, pues puede ser que por alli este el problema
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 10/11/2015, 15:04
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Hola jbryan1093,

Yo te recomendaría también revisar en qué codificación se te guardan los archivos, eso puede dar muchos quebraderos de cabeza, te lo digo por experiencia.
  #5 (permalink)  
Antiguo 10/11/2015, 18:29
 
Fecha de Ingreso: junio-2014
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

el contejamiento ya probé con varios, como utf8_spanish, utf8_latin, utf8_general ci, etc.

mortiprogramador, coloque el mysqli_set_charset, el insert es el que me manda el valor como por ejemplo "niño" = "ni?o". Pero cuando hago un update se inserta el dato normal y al consultar también todo normal.
Antes usaba decode y encode, pero ahora con esos no me soluciona nada.
Código PHP:
 public function conectar() {
        if(
$this->enlace=mysqli_connect($this->servidor,$this->usuario,$this->password)) {
            if(
mysqli_select_db($this->enlace$this->bd)){
                
                
            } else {
                echo 
"No se ha podido seleccionar la  BD";
            }
        } else {
            echo 
"No se ha podido conectar a la bd";
        }  
        
mysqli_set_charset($this->enlace,"SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8', NAMES 'utf8'");   
        
    } 
  #6 (permalink)  
Antiguo 10/11/2015, 19:23
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Saludo
Eso es porque tal vez no es el sitio ni la función correcta.

Código PHP:
Ver original
  1. if(mysqli_select_db($this->enlace, $this->bd)){
  2.                
  3.                 mysqli_query($this->enlace,"SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8', NAMES 'utf8'");
  4.        
  5.             }
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 10/11/2015, 19:47
 
Fecha de Ingreso: junio-2014
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

en el insert recibo la variable con
Código PHP:
header("Content-Type: text/html;charset=utf-8");
$nameEst utf8_decode(isset($_POST['nameEst'])? strtolower($_POST['nameEst']) : null); 
Ya lo hice sin decode y poniendo encode para leer, el resultado es peor.

Los valores los paso por AJAX y pongo como parámetro contentType: "charset=utf-8",
en el html de donde los recoge también.
Además de probar varios, me quedé con el cotejamiento Latin1_swedish_ci
Mi insert inserta normal todo, solo que cambia las tildes y eñe por "?". Algo estaré haciendo mal.
  #8 (permalink)  
Antiguo 10/11/2015, 19:49
 
Fecha de Ingreso: junio-2014
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Ya intente todo de mysqli_query, lo puse en varios lugares también con mysqli_set_charset.
  #9 (permalink)  
Antiguo 10/11/2015, 20:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Yo creo que si la información se introdujo mal ya no hay solución, no le des más vueltas, sólo debes procurar ser consistente con todas las codificaciones que uses de ahora en adelante.

En todo caso podrías intentar normalizar tus datos y actualizarlos a mano para descubrir si el problema persiste después de eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 10/11/2015, 23:19
 
Fecha de Ingreso: junio-2014
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

La única forma en que puedo solucionar es creando una función.

Código PHP:
function normalizar($var){
    
$find = array('á''é''í''ó''ú''ñ');
    
$repl = array('á''é''&iacute''ó''ú''ñ');
    
$valor str_replace($find$repl$var);
    return 
$valor;
}

$nameEst $_POST['nameEst'];
$name_esp utf8_decode(strtolower(normalizar($nameEst))); 
De esa manera lee sin problemas. Pero no quiero depender de ello, si encontrara otra solución lo colgaré.
Gracias a todos.
  #11 (permalink)  
Antiguo 11/11/2015, 11:06
Avatar de Chiiviito  
Fecha de Ingreso: octubre-2012
Mensajes: 64
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Mira lo que podes ahcer es guardarlo en su formato HTML:
http://php.net/manual/es/function.ht...ity-decode.php

Esto hace que la Ñ se guarde como ñ para mi esto es lo mas recomendable.
  #12 (permalink)  
Antiguo 11/11/2015, 11:30
 
Fecha de Ingreso: junio-2014
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema al insertar tildes y eñes, ya intente de todo

Gracias Chiiviito, no había pensado usar esa función.

Etiquetas: eñes, tildes, utf-8
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:15.