0

Mi profe me paso este codigo en PDO para un box dinamico que carga una lista en la db, pues esta tiene caracteres especiales. Mi pregunta es donde inserto el utf8_encode() para que puedan salir bien los caracteres?.

<?php
$db = new mysqli('localhost','root','','web');
if(!$db) {
    echo 'ERROR: no se pudo conectar a base de datos';
} else {
    if(isset($_POST['queryString'])) {
        $queryString = $db->real_escape_string($_POST['queryString']);
        if(strlen($queryString) >0) {
            $query = $db->query("SELECT * FROM productos WHERE (nombre LIKE '%$queryString%' or id LIKE '%$queryString%' )");
            if($query) {
                while ($result = $query ->fetch_object()) {
                    echo '<li value="'.$result->id. '" onClick="fill(\''.$result->nombre. ' ' .$result->tipo.'\');">'.$result->nombre. ' ' .$result->tipo.'</li>';
                }
            } else {
                echo 'ERROR: no se pudo realizar la consulta';
            }
        } else {
        }
    } else {
        echo 'Sin datos disponibles';
    }
}
?>

  • Realmente te tocaría utilizar utf8_decode() porque el caracter lo extraes de la base de datos. El `utf8_encode()` se utiliza antes de ingresarlo a la base de datos. Respondí una pregunta muy similar hace poco. Espero sea de ayuda para tí: [mostrar caracteres especiales correctamente](https://es.stackoverflow.com/questions/127682/mostrar-correctamente-caracteres-codificados-del-estilo-xe9/127695#127695) – Art_Code Jun 14 '18 at 11:35

1 Answers1

1

El utf8_encode iria donde llames al valor UTF8 en este caso $result->nombre

<?php
$db = new mysqli('localhost','root','','web');
if(!$db) {
    echo 'ERROR: no se pudo conectar a base de datos';
} else {
    if(isset($_POST['queryString'])) {
        $queryString = $db->real_escape_string($_POST['queryString']);
        if(strlen($queryString) >0) {
            $query = $db->query("SELECT * FROM productos WHERE (nombre LIKE '%$queryString%' or id LIKE '%$queryString%' )");
            if($query) {
                while ($result = $query ->fetch_object()) {
                    echo '<li value="'.$result->id. '" onClick="fill(\''.utf8_encode($result->nombre). ' ' .$result->tipo.'\');">'.utf8_encode($result->nombre). ' ' .$result->tipo.'</li>';
                }
            } else {
                echo 'ERROR: no se pudo realizar la consulta';
            }
        } else {
        }
    } else {
        echo 'Sin datos disponibles';
    }
}
?>
Jorge Bowen
  • 784
  • 3
  • 6