elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Ayuda para traductor, hecho en php y mysql.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para traductor, hecho en php y mysql.  (Leído 5,728 veces)
gigamurki

Desconectado Desconectado

Mensajes: 11


El sueño es para los débiles.


Ver Perfil
Ayuda para traductor, hecho en php y mysql.
« en: 13 Diciembre 2013, 18:36 pm »

Hola Programadores y desarrolladores web, bueno pues paso por aquí solicitando su ayuda, para que me ayuden a resolver este pequeño problema que tengo con php y mysql.

Bueno voy al grano, estoy haciendo un traductor de palabras Español-Maya y viceversa, pero el problema es que en los cotejamientos que elijo en la base de datos mysql no me dan los resultados que deseo, por ejemplo en la base de datos tengo una tabla con una lista de palabras que utilizan los siguientes caracteres.

Caracteres:  Ĥ ř Ű Ϋ Ũ Œ ē Ü
Palabras:
Plátano = Huwa
Naranja = Aranxax
Papaya = U’tun'
 Anona = Kewexa
Nance = Tapa
Piojo = Tümalh
Regar = Tz’ümü
Armadillo = k`üso


Bueno y pues cuando en los resultados de la traducción de la pagina php no me muestra las traducciones como debe de ser como por ejemplo en la palabra, “Regar = Tz’ümü” no me la muestra así, si no que de la siguiente manera, “Regar = Tz??m?”.  Y la verdad yo ya probé con varios tipos de cotejamiento como lo es el “utf_generl_ci”   “utf_unicode_ci” .

Sin nada más que decir abajo les dejo el código de la base de datos, y los códigos de la conexión php. Espero su ayuda y gracias por leer.

Aquí el codigo de la base de datos en Mysql:

Código
  1.  
  2. -- phpMyAdmin SQL Dump
  3. -- version 4.0.4.2
  4. -- http://www.phpmyadmin.net
  5. --
  6. -- Servidor: localhost
  7. -- Tiempo de generación: 13-12-2013 a las 05:38:47
  8. -- Versión del servidor: 5.6.13
  9. -- Versión de PHP: 5.4.17
  10.  
  11. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  12. SET time_zone = "+00:00";
  13.  
  14.  
  15. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  16. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  17. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  18. /*!40101 SET NAMES utf8 */;
  19.  
  20. --
  21. -- Base de datos: `dbtra`
  22. --
  23.  
  24. -- --------------------------------------------------------
  25.  
  26. --
  27. -- Estructura de tabla para la tabla `words`
  28. --
  29.  
  30. CREATE TABLE IF NOT EXISTS `words` (
  31.  `elregistro_id` INT(11) NOT NULL AUTO_INCREMENT,
  32.  `traduccion` text NOT NULL,
  33.  PRIMARY KEY (`elregistro_id`)
  34. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
  35.  
  36. --
  37. -- Volcado de datos para la tabla `words`
  38. --
  39.  
  40. INSERT INTO `words` (`elregistro_id`, `traduccion`) VALUES
  41. (1, 'Plátano = Huwa'),
  42. (2, 'Naranja = Aranxax'),
  43. (3, 'Papaya = U’tun'),
  44. (4, 'Anona = Kewexa'),
  45. (5, 'Nance = Tapa'),
  46. (6, 'Guayaba = Turu’x');
  47.  
  48. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  49. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  50. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  51.  
  52.  
  53.  



Aquí el Codigo php.


Código
  1.  
  2.  
  3. <style>
  4. h3{color:blue;}
  5. </style>
  6. <?php
  7. error_reporting(E_ALL ^ E_NOTICE);
  8. //conexion a db
  9. $conexion = mysql_connect('localhost','root','usbw');
  10. $db= mysql_select_db('dbtra',$conexion);
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18. $palabra = $_GET['variable'];
  19. if($palabra == ''){
  20. echo 'No ha escrito ninguna palabra.';
  21. }else{
  22. $query = "SELECT elregistro_id, traduccion FROM words where traduccion like '%$palabra%'";
  23. $resultado = mysql_query ($query) or die(mysql_error());
  24. if (mysql_fetch_assoc ($resultado)<=0) {
  25.  
  26. echo "No se encontraron resultados del t&eacute;rmino. ".'<b>'.$palabra.'<b>'.".";
  27. }else {
  28.  
  29.  
  30.  
  31.  
  32. $resultado = mysql_query ($query) or die(mysql_error());
  33. while($row = mysql_fetch_array($resultado))
  34. {
  35. echo '<p>';
  36.  
  37. echo $row['traduccion'];
  38. echo '</p>';
  39. }
  40. }mysql_free_result($resultado);
  41. }
  42. ?>
  43.  
  44.  
  45.  


« Última modificación: 13 Diciembre 2013, 18:45 pm por gigamurki » En línea

El mundo es mejor si compartes lo que sabes !
i-node

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Ayuda para traductor, hecho en php y mysql.
« Respuesta #1 en: 30 Diciembre 2013, 12:32 pm »

Deberias especificar el charset a utilizar despues de conectar a la bd mediante la funcion mysql_set_charset.

http://www.php.net/manual/es/function.mysql-set-charset.php

P.D: Como bien dicen en la documentacion de php, ese grupo de funciones estan obsoletas. Deberias utilizar las API MySQLi o PDO.

<?php
try {
    $gbd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', $usuario, $contraseña);
    foreach($gbd->query('SELECT * from FOO') as $fila) {
        print_r($fila);
    }
    $gbd = null;
} catch (PDOException $e) {
    print "¡Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>


En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Ayuda para traductor, hecho en php y mysql.
« Respuesta #2 en: 1 Enero 2014, 18:10 pm »

¿Has probado con utf8mb4_spanish_ci? Permite tildes y la 'ñ' a parte de otros caracteres especiales...

También decirte...
Citar
Advertencia

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL.

Aproposito...
Código
  1. if($palabra == ''){

Utiliza  Isset o empty...

http://es1.php.net/manual/es/function.empty.php
http://es1.php.net/isset

Código
  1. if (!empty($palabra)) {/* Código bla bla bla */}else{echo "Campo vacio";}

Aunque cabe destacar que empty no reconoce variables con valor 0 como definidas. En caso de necesitar dicho valor (0) puedes usar isset.
Código
  1. if(isset($palabra) && strlen($palabra)>0){/* Código bla ba bla */}else{echo "Campo vacio";}
En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines