Foros del Web » Programando para Internet » PHP »

Carácteres ñáéÃ*ó

Estas en el tema de Carácteres ñáéÃ*ó en el foro de PHP en Foros del Web. Bien, supongo que mi problema tendrá que ver con el collation de la bbdd. Explico. Al insertar vía formulario (POST) un registro en mi bbdd, ...
  #1 (permalink)  
Antiguo 05/05/2010, 16:34
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
Carácteres ñáéÃ*ó

Bien, supongo que mi problema tendrá que ver con el collation de la bbdd. Explico.

Al insertar vía formulario (POST) un registro en mi bbdd, esta me interpreta los títulos así:

TÃ*tulos

el cotejamiento está en utf8_general_ci

a la hora de hacer echo en mi página el resultado es:

Títulos, pues tengo en charset en utf-8

Me gustaría saber porqué me guarda los registros con esos carácteres.


Ahora bien, he hecho un buscador que se basa en una página de form y otra que recoge los resultados. En esta última, pretendo hacer un str-replace. El caso es que al parecer, la página formulario al buscar ñ no me pasa por post "ñ", ni "ñ", ni tan solo "ñ", pero si que me devuelve ñ en la página de resultados, por lo que no puedo hacer el replace, puesto que no se que coño reemplazar. El resto de carcateres comunes me los busca bien.

Os paso las páginas:

form.php
------------------------------------------------------------------------------------

echo "<form id=\"form_global\" name=\"form_global\" method=\"post\" action=\"?m=buscador&a=resultados\">";


echo "<div class=\"borde\">
echo "Buscar&nbsp;<input type=\"text\" name=\"palabri\" />
<input type=\"submit\" class=\"button\" name=\"Buscar_global\" value=\"Buscar\" /></div></div>";

echo "</form>";


resultados.php
--------------------------------------------------------------------------------------

<?php
include "configuracion_news.php";
if (isset($_POST['Buscar_global'])) {

$resultado=mysql_query("SELECT * FROM navalcarnero_bienes
WHERE CONCAT(nav_denominacion,'',nav_descripcion_bien,'' ,nav_domiciliacion,'',nav_municipio,'',nav_titular idad,'',nav_pl_declaracion,'',nav_pl_expregistro,' ',nav_pl_fechapub,'',nav_valor,'',nav_calambi,'',n av_antigu,'',nav_estado_conservacion,'',nav_indice s_onomastico1,'',nav_indices_onomastico2,'',nav_in dices_onomastico3,'',nav_indices_onomastico4,'',na v_indices_onomastico5,'',nav_indices_onomastico6,' ',nav_indices_materia1,'',nav_indices_materia2,'', nav_indices_materia3,'',nav_indices_materia4,'',na v_indices_materia5,'',nav_indices_materia6,'',nav_ tipolog,'',nav_estilo,'',nav_uso,'',nav_orname,'', nav_nota_id_bien,'',nav_grado,'',nav_nota_prot_bie n,'',nav_estado,'',nav_propie,'',nav_bienes) LIKE '%$_POST[palabri]%'


UNION ALL SELECT * FROM chinchon_bienes
WHERE CONCAT(chin_denominacion,'',chin_descripcion_bien, '',chin_domiciliacion,'',chin_municipio,'',chin_ti tularidad,'',chin_pl_declaracion,'',chin_pl_expreg istro,'',chin_pl_fechapub,'',chin_valor,'',chin_ca lambi,'',chin_antigu,'',chin_estado_conservacion,' ',chin_indices_onomastico1,'',chin_indices_onomast ico2,'',chin_indices_onomastico3,'',chin_indices_o nomastico4,'',chin_indices_onomastico5,'',chin_ind ices_onomastico6,'',chin_indices_materia1,'',chin_ indices_materia2,'',chin_indices_materia3,'',chin_ indices_materia4,'',chin_indices_materia5,'',chin_ indices_materia6,'',chin_tipolog,'',chin_estilo,'' ,chin_uso,'',chin_orname,'',chin_nota_id_bien,'',c hin_grado,'',chin_nota_prot_bien,'',chin_estado,'' ,chin_propie,'',chin_bienes) LIKE '%$_POST[palabri]%'
", $conn);



if ($row = mysql_fetch_array($resultado)){
while ($field = mysql_fetch_field($resultado)){
echo "$field->name";} do {
if ($row['id_r']=='2'){
echo "<p class=\"results\"><img src=images/ico_n.jpg /> ";
} else {
echo "<p class=\"results\"><img src=/images/ico_ch.jpg /> ";
}
echo "<a rel=\"facebox[]\" href=\"modules/documentos/detallesfacebienes.php?id=$row[id]&id_r=$row[id_r]\" class=\"nav_titulo_registro\">".$row["nav_denominacion"]."</a></p> \n";

} while ($row = mysql_fetch_array($resultado)); } else {
echo "<p class=\"results\">¡ No se ha encontrado ningún registro !</p>";
}
}


Gracias a quien pueda aportar una sugerencia.
Saludos
  #2 (permalink)  
Antiguo 06/05/2010, 08:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Hola, kadet.

Por favor, no coloque código de programación en la sección de bases de datos.
Traslado el tema a la sección de PHP.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/05/2010, 08:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Carácteres ñáéÃ*ó

Cita:
Iniciado por David Ver Mensaje
Hola, kadet.

Por favor, no coloque código de programación en la sección de bases de datos.
Traslado el tema a la sección de PHP.

Saludos.

Querido amigo, la consulta es sobre mysql, el código lo pongo para ilustrar la acción posterior.
  #4 (permalink)  
Antiguo 06/05/2010, 08:20
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Carácteres ñáéÃ*ó

puedes usar 2 funciones

1.- htmlentities para pasar tus caracteres a entidades html y guardarlas asi en la database
2.- utf8_encode para transformar la codificacion a utf8

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 06/05/2010, 12:19
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Respuesta: Carácteres ñáéÃ*ó

kadet te voy a dar una solucion que me dieron en este mismo foro, y estoy usando ya desde hace casi un año y ME FUNCIONA DE LUJO.

debes de editar tu archivo my.cnf y poner estas lineas
Código:
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
default-character-set=utf8
default-collation=utf8_general_ci
reinicia mysql

ahora inserta desde tu formulario una palabrota de esas con acentos y ñññ y mira aver q tal se inserto

Etiquetas: Ninguno
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 10:15.