Foros del Web » Programando para Internet » PHP »

caracteres especiales PHP

Estas en el tema de caracteres especiales PHP en el foro de PHP en Foros del Web. Hola amigos tengo una duda tengo una funcion insert a la base de datos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original function agregar_servicio ( $titulo , ...
  #1 (permalink)  
Antiguo 23/09/2013, 15:38
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 11 años, 3 meses
Puntos: 1
caracteres especiales PHP

Hola amigos tengo una duda

tengo una funcion insert a la base de datos

Código PHP:
Ver original
  1. function agregar_servicio($titulo,$precio,$descripcion){
  2.          $this->con = new DB;
  3.         if ($this->con->conectar() == true) {
  4.        
  5.             $insertar_servicio = "INSERT INTO servicio VALUES(NULL,'".$titulo."',".$precio.",'". $descripcion."')";
  6.            
  7.             if(!mysql_query($insertar_servicio)){
  8.                 return "error";
  9.             }else{
  10.                 return "ok";
  11.             }
  12.            
  13.         }
  14.      }

Esta funcion entra en accion cuando se trabaja con un formulario con dos input titulo,precio y un texarea que es descripcion

Cual es el problema ....el problema es que algunos usuarios copian información de documentos de word al formulario y pero hay textos que tienen viñetas

la viñetas son :
  • Soy una viñeta
  • Soy otra viñeta

que son la de arriba si hago una inserción a la base de datos me marca error pero si quito la viñetas el error desaparece creo que es error en codificación utf-8 o algo así por que estuve buscando y la verdad no encontré nada alguien tiene una idea de como se debe hacer ??

Muchas gracias por ayuda
  #2 (permalink)  
Antiguo 23/09/2013, 15:54
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: caracteres especiales PHP

Intenta usar las funciones utf8_encode() o utf8_decode() para convertir las cadenas e intenta grabar
  #3 (permalink)  
Antiguo 23/09/2013, 22:12
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: caracteres especiales PHP

Ya lo probe y no funciona :( sera que tengo cambiar algo en el phpmyadmin ?
  #4 (permalink)  
Antiguo 23/09/2013, 23:25
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: caracteres especiales PHP

ok mira para poder ayudarte necesitamos conocer la estructura de tu base de dato en tal caso en que cotejamiento esta ... latin o spanish... y aparte de eso saber si tienes la cabecera utf8 en la parte superior del documento... aun y asi si te sigue provocando errores de insercion seria justo que imprimas el error con or die (error)... y lo posteas
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 24/09/2013, 08:09
Mariuch
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: caracteres especiales PHP

Proba pasando la cadena por la función htmlspecialchars() antes de hacer el ingreso a la base de datos. Esta función codifica cualquier caracter extraño.

Saludos!
  #6 (permalink)  
Antiguo 24/09/2013, 11:13
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: caracteres especiales PHP

Cita:
Iniciado por arcanisgk122 Ver Mensaje
ok mira para poder ayudarte necesitamos conocer la estructura de tu base de dato en tal caso en que cotejamiento esta ... latin o spanish... y aparte de eso saber si tienes la cabecera utf8 en la parte superior del documento... aun y asi si te sigue provocando errores de insercion seria justo que imprimas el error con or die (error)... y lo posteas
Mira aqui esta la estructura de la tabla

Formato => dinámico/a
Cotejamiento => latin1_swedish_ci
Filas => 3
Longitud de la fila => 26 B
Tamaño de la fila => 709 B
Índice automático siguiente => 4
Creación => 19-09-2013 a las 17:21:16
Última actualización => 23-09-2013 a las 15:33:02
  #7 (permalink)  
Antiguo 24/09/2013, 11:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: caracteres especiales PHP

Sinceramente este tema es tratado en muchos temas, solo tienes que indicar de principio a fin cual es charset que quieres usar en todo. La razón es simple en algunos programas tienen unca codifición por defecto que en otras no. Por lo que es necesario que en todos lados indiques el charset que se está enviando, debes indicar archivo, meta, encabezados y base de datos con la codificación que vas a usar.

Lo demás es sencillamente buscar en internet para que veas un sin número de temas que te van a decir como resolverlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 25/09/2013, 00:06
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: caracteres especiales PHP

ok tienes varias soluciones:

para el php : mysql_query("SET NAMES utf8");

o

$dblink->query("SET NAMES 'utf8'");

o

<head>
<meta charset="utf-8"> ya tu sabe

y para la base de datos te recomiendo:

base de datos en utf8_unicode_ci
y el cotejamiento de las tablas en utf8_general_ci
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Etiquetas: caracteres, especiales, formulario, sql, usuarios
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 17:00.