problema con "ñ" no las reconoce

Iniciado por bgnumis, 8 Septiembre 2017, 14:36 PM

0 Miembros y 1 Visitante están viendo este tema.

bgnumis

Hola,

A ver si me podéis ayudar. Tengo un campo de "búsqueda" y funciona. Cuando pongo palabras con "ñ" no las reconoce:

Código (php) [Seleccionar]


$busqueda=mysql_query("SELECT * FROM empleados WHERE concat_ws(' 'NOMBRE, APELLIDOS) LIKE '%".utf8_encode($busca)."%'  ") ;





he utilizado utf8 encode para que si $busca me reconoce esos caracteres "raros" pero no va si pongo por ejemplo "begoña" no encuentra los nombre begoña pero si pongo "bego" sí o garcia etc ¿Cómo podría hacer para que en una búsqueda con like me "cogiera" las ñ?


Engel Lex: no se debe escribir en mayúsculas

engel lex

en que codificación de caracteres tienes tienes tu db?

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bgnumis

He estado leyendo pero no sé qué puede ser:

Si escribo  show variables like '%character%' me aparece lo siguiente:

character_set_client
utf8
character_set_connection
utf8
character_set_database
utf8
character_set_filesystem
binary
character_set_results
utf8
character_set_server
latin1
character_set_system
utf8
character_sets_dir
/usr/share/mysql/charsets/

Será por el latin1?




bgnumis

Este es el php donde está la búsqueda:


Código (php) [Seleccionar]


<?php

session_start
();
 
//Validar que el usuario este logueado y exista un UID
if ( ! ($_SESSION['autenticado'] == 'SI' && isset($_SESSION['uid'])) )
{
    
//En caso de que el usuario no este autenticado, crear un formulario y redireccionar a la 
    //pantalla de login, enviando un codigo de error        <form name="formulario" method="post" action="index.php">
?>

        <form name="formulario" method="post" action="index.php">
            <input type="hidden" name="msg_error" value="2">
        </form>
        <script type="text/javascript">
            document.formulario.submit();
        </script>

<?php
}
 
    
//Conectar BD
    
include("conectar_bd.php");  
    
conectar_bd();
 
    
//Sacar datos del usuario que ha iniciado sesion"Propietario/a de ".$fila['Direccion']." ".$fila['PuertaLocalGaraje']
    
$sql "SELECT   tx_nombre tx_TipoUsuario,id_usuario, tx_username, tx_password
            FROM tbl_users
            LEFT JOIN ctg_tiposusuario
            ON tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
            WHERE id_usuario = '"
.$_SESSION['uid']."'";         
    
$result     =mysql_query($sql); 
 
    
$nombreUsuario "";



 
    if( 
$fila mysql_fetch_array($result) ){

        
$nombreUsuario "".$fila['tx_nombre'];
}

 


?>






<!DOCTYPE html>
<html lang="es">
<head>
<title>La Nueva
</title>


    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">

 
    <title>Página Web </title>

    <!-- Bootstrap Core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="css/full-width-pics.css" rel="stylesheet">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
<script type="text/javascript">
    <!--
        $().ready(function() {
            $("#frmlogin").validate();
            $("#usuario").focus();
        });
    // -->
    </script>
   
</head>




<body>

    <!-- Navigation -->
    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
               
           
                <a class="navbar-brand" href="principalcero.php">Ce</a>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right" >
                    <li>
                        <a href="politad.php" style="color:#FFF" >Polí</a>
                    </li>
                    <li>
                        <a href="normauso.php" style="color:#FFF">Normas de Uso</a>
                    </li>
                    <li>
                        <a href="contacto.php" style="color:#FFF">Contacto</a>
                    </li>
                      <li align="right">
                   
        <a href="cerrarSesion.php" style="color:#FFF">Cerrar Sesi&oacute;n &nbsp;</a>
 
            </li>
                </ul>
            </div>
            <!-- /.navbar-collapse -->
        </div>
</div>
        <!-- /.container -->
    </nav>

    <!-- Full Width Image Header with Logo -->
    <!-- Image backgrounds are set within the full-width-pics.css file. -->    <header class="image-bg-fluid-height">
   
        <img class="img-responsive img-center" src="img/f.png" alt="">
       
       
    </header>

    <!-- Content Section -->
    <section style="background-color:#E6E6FA; ">
       
       
       
     <div class="container"  margin-bottom=10px>
        <div class="row">
         <div class="col-lg-12 col-lg-12">
           
             


<title> Busqueda </title>
<p>

<form name="form1" method="post" action="expedienteempleado.php" id="cdr">
<h2> Buscar CLIENTE </h2>
<input name="busca" type="text" id="fichaempleado">
<input name="submit" type="submit" value="Buscar">
</p>
</form>

<br>
<br>

<?php

$busca
=utf8_encode("");
$busca=utf8_encode($_POST['busca']);
$conexion=mysql_connect("localhost","ost","@EEE") or die("Problemas en la conexion");
mysql_select_db("joscardef",$conexion) or die("Problemas en la selección de la base de datos");  


if(
$busca!=""){
  $nom=utf8_encode(NOMBRE);
  $ape=utf8_encode(APELLIDOS);
  
$busqueda=mysql_query("SELECT * FROM empleados WHERE concat_ws(' ',$nom$ape) LIKE '%".utf8_encode($busca)."%'  ") ;



  

 
?>





<div class="table-responsive "  border="1" align="left">
<table class="table table-condensed table-hover table-bordered table-striped">
  <tr>
    <td width="226">Nombre</td>
    <td width="252">Apellidos</td>
    <td width="110">Oficina</td>
    <td width="220">Mail</td>
    <td width="212">Seleccionar</td>

  </tr>


  <?php
  

 
  
  
while($muestra=@mysql_fetch_array($busqueda)){
  echo '<tr>';
  echo '<td>'.utf8_encode($muestra['NOMBRE']).'</td>';
  
    echo '<td>'.utf8_encode($muestra['APELLIDOS']).'</td>';


?>

        <td> <form action="oficinaaconsultartres.php?id=<?php echo $muestra['ofi']?>" method="post" name="compra">

<input name="Comprar" type="submit" value="<?php echo $muestra['ofi']?>"></form>
<?php
    echo '<td>'.$muestra['MailBankia'].'</td>';
    
?>



               
<td> <form action="expedienteempleadodef.php?id=<?php echo $MATRICULA ?>" method="post" name="compra">

</form></td>
     
     <?php 

  }
    }
 
?>





<br>


</div>


  <br/>
<br/>
<table width="400" border="0">

<br>
<br>

<option>Si no era esta pantalla la que buscabas...</option>

<br>

</table>




<h4>  <td  width="20px" display="inline" align="left">
        <!-- Proporcionar Link para cerrar sesion -->
          <a href="principalcero.php"><strong> VOLVER A MENU ANTERIOR </strong>&nbsp;</a>
    </td>

</h4>
           
           







</table>



           
           
            </div>
            </div>
           
           
</p>
   

    <!-- Footer -->
    <footer>
        <div class="container">
            <div class="row">
                <div class="col-lg-12">Coo</div>
            </div>
            <!-- /.row -->
        </div>
        <!-- /.container -->
    </footer>

    <!-- jQuery -->
    <script src="js/jquery.js"></script>

    <!-- Bootstrap Core javascript -->
    <script src="js/bootstrap.min.js"></script>

</body>

</html>








Sé que está fatal programado pero he ido aprendiendo poco a poco, y aunque ahora me doy cuenta que lo hacía fatal, como funciona, no lo toco de momento, en la búsqueda sí me reconoce las búsqueda de por ejemplo garcia , bayo, etc pero si lleva ñ o Ç nada tampoco con acentos.

LA apariencia de los "caracteres raros sí es la que toca, pero la búsqueda no los captura no sé porqué.

En phpmyadmin si pongo en búsqueda begoña (en nombre) sí que encuentra a todas las begoñas.

A ver si véis algúna línea de código de tipo charset o meta que debiera poner.

Muchas gracias por adelantado.

bgnumis

Leyendo sobre estos temas, he visto y comprobado que poniendo en la conexion
Código (sql) [Seleccionar]
@mysql_query("SET NAMES 'utf8'");

Ya me funciona la búsqueda con "ñ" por ejemplo pongo BEGOÑA y me busca todas las begoñas pero la apariencia en la web, tanto en la salida de la consulta como los texto en general, en los acentos y las eñes me pone una A y un cuadrado o caracteres extramos

He puesto dejado el utf8_encode(texto); pero no le hace caso. ¿dónde puede estar la omisión o la solución?

bgnumis

Hola,

No me preguntéis cómo pero eliminando y poniendo (a modo resetear) las líneas de código de charter y encoge relacionadas con el y utf ahora sí que va todo bien.

Disculpad el rollo.

bgnumis