Foros del Web » Programando para Internet » PHP »

Caracteres en base de datos

Estas en el tema de Caracteres en base de datos en el foro de PHP en Foros del Web. Hola a todos, tengo una duda estoy tratando de que los datos cargados en la base de datos (textos con mayusculas y acentos) se puedan ...
  #1 (permalink)  
Antiguo 07/01/2013, 22:31
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Pregunta Caracteres en base de datos

Hola a todos, tengo una duda estoy tratando de que los datos cargados en la base de datos (textos con mayusculas y acentos) se puedan ver bien al mostrarlos en una lista...

busque y encontre algo como esto:
Código PHP:
    <?php
        $string 
'Hola como estas. Que lindo dia';
        
$string preg_replace('/([A-Z])/''<br />$1'$string);
        echo 
$string;
    
?>
y esto:
Código PHP:
preg_replace('/((?:http|https|ftp):\/\/(?:[A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?[^\s\"\']+)/i' 
pero nose como colocarlo en el div;

Código PHP:

<?php

$conexion   
mysql_connect ('localhost','root','') or die ('No hay conexión a la base de datos');
$db         mysql_select_db ('textos',$conexion) or die ('no existe la base de datos.');

$consulta   "SELECT * FROM apuntes ORDER BY id DESC";
$resultado  mysql_query($consulta);
$cant       mysql_num_rows($resultado);

while(
$fila=mysql_fetch_array($resultado))
{
$id $fila['id'];
?>

<div class="apunte"><?php echo $fila['apunte']; ?></div>

<br />

<?php
mysql_close();
?>
si me puedes ayudar, gracias
__________________
Zreep
  #2 (permalink)  
Antiguo 07/01/2013, 22:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracteres en base de datos

Necesitas aprender a usar funciones, bien podrías hacer una con los códigos que tienes, y donde la quieras usar simplemente llamarla y pasarle los valores que necesitas.

Así es como funciona, ¿ya consultaste el manual?
http://php.net/manual/en/functions.user-defined.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/01/2013, 23:01
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

ok... voy a hacer eso!... en un rato los molesto!! Gracias...
__________________
Zreep
  #4 (permalink)  
Antiguo 07/01/2013, 23:49
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

Bueno esto me que voy a decir es muy triste, pero la verdad es que nose hacer funciones, perdon pero no logro encontrar como hacerlas solo me sale en "Hola mundo" y es por eso que todo lo que hago lo hago sin ellas....
Y al no tener mas alternativas, hice esto:

Código PHP:
<?php

$conexion   
mysql_connect ('localhost','root','') or die ('No hay conexión a la base de datos');
$db         mysql_select_db ('bnotte',$conexion) or die ('no existe la base de datos.');

$consulta    "SELECT * FROM textos ORDER BY id DESC";
$resultado   mysql_query($consulta);
$cant           mysql_num_rows($resultado);

while(
$fila=mysql_fetch_array($resultado))
{
$patron '/((?:http|https|ftp):\/\/(?:[A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?[^\s\"\']+)/i';
$sub '<a href="$1" rel="nofollow" target="blank">$1</a>';
$id    $fila['id'];
$apu $fila['apunte'];
?>

<div class="apunte"><?php echo preg_replace($patron$sub$apu);?>

<?php
mysql_close();
?>
y por supuesto no funciona, trate de entender la funcion "preg_replace" e hice esto pero bueno...

Soy un poco duro y autodidacta, pero trato de ingeniarmelas como puedo y de forma prolija....
__________________
Zreep
  #5 (permalink)  
Antiguo 08/01/2013, 00:59
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

Tengo algo que voy a compartir... lo probe y funciona...

Código PHP:
<?php
function quitarAcentos($text)
    {
        
$text htmlentities($textENT_QUOTES'UTF-8');
        
$text strtolower($text);
        
$patron = array (
            
// Espacios, puntos y comas por guion
            
'/[\., ]+/' => ' ',
 
            
// Vocales
            
'/&agrave;/' => '&agrave;',
            
'/&egrave;/' => '&egrave;',
            
'/&igrave;/' => '&igrave;',
            
'/&ograve;/' => '&ograve;',
            
'/&ugrave;/' => '&ugrave;',
 
            
'/&aacute;/' => '&aacute;',
            
'/&eacute;/' => '&eacute;',
            
'/&iacute;/' => '&iacute;',
            
'/&oacute;/' => '&oacute;',
            
'/&uacute;/' => '&uacute;',
 
            
'/&acirc;/' => '&acirc;',
            
'/&ecirc;/' => '&ecirc;',
            
'/&icirc;/' => '&icirc;',
            
'/&ocirc;/' => '&ocirc;',
            
'/&ucirc;/' => '&ucirc;',
 
            
'/&atilde;/' => '&atilde;',
            
'/&etilde;/' => '&etilde;',
            
'/&itilde;/' => '&itilde;',
            
'/&otilde;/' => '&otilde;',
            
'/&utilde;/' => '&utilde;',
 
            
'/&auml;/' => '&auml;',
            
'/&euml;/' => '&euml;',
            
'/&iuml;/' => '&iuml;',
            
'/&ouml;/' => '&ouml;',
            
'/&uuml;/' => '&uuml',
 
            
// Otras letras y caracteres especiales
            
'/&aring;/' => '&aring;',
            
'/&ntilde;/' => '&ntilde;',
 
            
// Agregar aqui mas caracteres si es necesario
            
            
'/@/' => '@',
 
        );
 
        
$text preg_replace(array_keys($patron),array_values($patron),$text);
        return 
$text;
    }
?>
fuente

Yo lo modifique... y funciona bien cuando pongo acentos... pero no como hacer para que no me cambie las mayusculas...

aca comparto todo... espero sirva... y ayuden

Código PHP:
require 'functions.php';

$conexion   = mysql_connect ('localhost','root','') or die ('No hay conexión a la base de datos');
$db         = mysql_select_db ('bnotte',$conexion) or die ('no existe la base de datos.');

$consulta   = "SELECT * FROM tu_tabla ORDER BY id DESC";
$resultado  = mysql_query($consulta);
$cant       = mysql_num_rows($resultado);
while($fila=mysql_fetch_array($resultado))
{
$id    = $fila['id'];
$apu = $fila['text'];
?>

<div><?php echo quitarAcentos($apu);?>
</div>
<br />

<?php
mysql_close();
?>
__________________
Zreep
  #6 (permalink)  
Antiguo 08/01/2013, 01:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracteres en base de datos

Te sugiero que leas el manual de cada función que veas, de otra forma no vas a llegar lejos.

La función strtolower() precisamente cambia todo el texto a minúsculas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 08/01/2013, 01:13
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

Buen consejo pateketrueke!!!
__________________
Zreep
  #8 (permalink)  
Antiguo 08/01/2013, 01:18
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

entonces trim() elimina los saltos de linea... "\n" y como puedo hacer para no tener que escribir <br />?
__________________
Zreep
  #9 (permalink)  
Antiguo 08/01/2013, 01:57
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

Tengo una funcion que fuciona mejor

Código PHP:
function setLinks($txt) {
 
$tex preg_replace('`(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&amp;//=]+)`i''<a rel="external" href="\\1">\\1</a>'$txt);
$tex preg_replace('`([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&amp;//=]+)`i''\\1<a rel="external" href="http://\\2">\\2</a>'$tex);
$tex preg_replace('`([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})`i''<a rel="external" href="mailto:\\1">\\1</a>'$tex);
 
return 
$tex;

pero tengo problema con los enlases y los saltos de lines.... y tengo otra cadena que quiero reemplazar pero cualdo lo hago no me muestra ningun dato...

Código PHP:
preg_replace('/((?:http|https|ftp):\/\/(?:[A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?[^\s\"\']+)/i','<a href="$1" rel="nofollow" target="blank">$1</a>',$textodebase
y creo que el problema esta en $textodebase que es el texto que biene de la BD... como hago?

este el otro...

Código PHP:
require 'functions.php';

$conexion   = mysql_connect ('localhost','root','') or die ('No hay conexión a la base de datos');
$db         = mysql_select_db ('bnotte',$conexion) or die ('no existe la base de datos.');

$consulta   = "SELECT * FROM tabla ORDER BY id DESC";
$resultado  = mysql_query($consulta);
$cant       = mysql_num_rows($resultado);

while($fila=mysql_fetch_array($resultado))
{
$id  = $fila['id'];
$textodebase = $fila['texto'];
?>

<div class="apunte"><?php echo setLinks($textodebase);?>

<?php
mysql_close();
?>
__________________
Zreep
  #10 (permalink)  
Antiguo 08/01/2013, 08:56
sgr
 
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 77
Antigüedad: 21 años
Puntos: 11
Respuesta: Caracteres en base de datos

Disculpame, pero hay algo que no me cierra. Leo todo tu post, y en un punto decis que no sabes trabajar con funciones (algo basico en programacion), y por curiosidad voy al sitio que figura en tu firma, y lo primero que veo es:

"Soy programador web desde hace 5 años. Me expecializo en PHP, Mysql, HTML5 y CSS3. Actualmente estudio OOP (PHP orientado a objetos) y mi objetivo es redir el Zend Certification en Marzo de 2013."

O sea que nos estas vendiendo un buzon, ya que un especialista en php no puede estar haciendo estas preguntas.
No tengo nada que aportar al post, salvo esto.
__________________
Informática Integral
  #11 (permalink)  
Antiguo 08/01/2013, 09:30
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

sgr, Hice hace años un curso de php y años despues el OOP, ambos duran 12 horas, son cursos que necesitan mas de 12 hs, y mi parte autodidacta, que depende de cada persona, me lleva tiempo... me anote con el objetivo de aprender algo; que una clase no sirve si no se instancia, que las variables son propiedades y las funciones métodos, que los metodos pueden ser publicos o privados y demas cosas que no recuerdo... Hice varias cosas gracias a eso y a este foro, pero las funciones y los objetos no los tengo muy claro, tenia la idea de que el curso iba a ser algo como explicar que es una funcion (que lo hicieron) y despues practica y despues practica mas avanzada, pero derrepente empeso lindo y despues se fue a al carajo y me di cuenta que no estaba preparado y me falata un lago camino... pero si hice cosas simples como, subir imagenes (con sesiones), sistema de logueo, resgistro de usuario al iniciar su cuenta (hora de trabajo) y finalizacion, vista de usuarios online (no esta completo), contador de visitas determinando; ip, pais, sistema operativo, explorador, tiempo de visita y promedio por pais... y estoy tratando de terminar un carrito de compras... y todo eso (que es poco), lo hice sin funciones, arrays ni objetos... se que son importates y hacen el trabajo mas dinamico, pero las voy a ir aprendiendo de a poco...

Tendria que poner en mi sitio; "Hice todo eso, pero no se usarlo".

Perdon y gracias
__________________
Zreep

Última edición por zreep; 08/01/2013 a las 12:18
  #12 (permalink)  
Antiguo 08/01/2013, 12:23
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Caracteres en base de datos

Por otro lado el tema lo pude terminar, con ayuda y un poco de mi pobre conocimiento... queria terminar el tema con las expreciones...

lei en el sitio de php sobre "preg_replace" pero no se escribirlas bien... miro otros ejemplos ya que no quiero depender de algo que ya esta hecho;

Código PHP:
function setLinks($txt) {
$tex preg_replace('`(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&amp;//=]+)`i''<a rel="external" href="\\1">\\1</a>'$txt);
$tex preg_replace('`([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&amp;//=]+)`i''\\1<a rel="external" href="http://\\2">\\2</a>'$tex);
$tex preg_replace('`([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})`i''<a rel="external" href="mailto:\\1">\\1</a>'$tex); 
 
return 
$tex;

y poder hacer que funcione los saltos de linea y los enlases.... Solo pido que me ayuden a entender como se escribe... Gracias
__________________
Zreep

Etiquetas: caracteres, mysql
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 01:58.