Foros del Web » Programando para Internet » PHP »

Optimisar base de datos

Estas en el tema de Optimisar base de datos en el foro de PHP en Foros del Web. Hola chicos recuro a usted ya que estoy comenzando a trabajar con bases de datos y estoy utilizando mysql del paquete de host XAmp. primero ...
  #1 (permalink)  
Antiguo 20/01/2013, 01:03
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Información Optimisar base de datos

Hola chicos recuro a usted ya que estoy comenzando a trabajar con bases de datos y estoy utilizando mysql del paquete de host XAmp.

primero mi pregunta es aparte del Xamp que otro paquete de host local me recomiendan para trabajar como Host Web Local y que sea compatible con la mayoría de los host de pagos.(opinión personal y comparativa)


ahora al grano, la base de datos debe ser compatible con UTF-8 sin Bom, y que muestre la mayor cantidad de caracteres Latinos (español principalmente) sin dar inconveniente de símbolos extraños.

Aquí les presento la estructura de la Base de Datos:


Código SQL:
Ver original
  1. DROP TABLE IF EXISTS `user`;
  2. CREATE TABLE IF NOT EXISTS `user` (
  3.   `id` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID de usuario',
  4.   `username` VARCHAR(50) COLLATE utf8_spanish_ci NOT NULL,
  5.   `password` VARCHAR(100) COLLATE utf8_spanish_ci NOT NULL,
  6.   `nombre` text COLLATE utf8_spanish_ci NOT NULL,
  7.   `apellido` text COLLATE utf8_spanish_ci NOT NULL,
  8.   `email` VARCHAR(150) COLLATE utf8_spanish_ci NOT NULL,
  9.   `telefono` INT(25) NOT NULL,
  10.   `foto` INT(11) NOT NULL,
  11.   `direccion` VARCHAR(400) COLLATE utf8_spanish_ci NOT NULL,
  12.   `firma` VARCHAR(300) COLLATE utf8_spanish_ci NOT NULL,
  13.   `interes0` INT(1) NOT NULL,
  14.   `interes1` INT(1) NOT NULL,
  15.   `interes2` INT(1) NOT NULL,
  16.   `interes3` INT(1) NOT NULL,
  17.   `interes4` INT(1) NOT NULL,
  18.   `interes5` INT(1) NOT NULL,
  19.   `interes6` INT(1) NOT NULL,
  20.   `interes7` INT(1) NOT NULL,
  21.   `interes8` INT(1) NOT NULL,
  22.   `interes9` INT(1) NOT NULL,
  23.   `tuser` INT(3) NOT NULL DEFAULT '0',
  24.   PRIMARY KEY (`id`),
  25.   UNIQUE KEY `id` (`id`),
  26.   UNIQUE KEY `username` (`username`),
  27.   UNIQUE KEY `email` (`email`)
  28. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci COMMENT='Tabla Usuarios y Perfil' AUTO_INCREMENT=11 ;

Supongo que tendre cosas faltantes o demas la idea es que me den una mejor idea de como usar el mysql y que estoy asiendo mal, no tengo actualmente ningun problema con la base de datos pero busco optimisarla y aprender un poco mas.

incluyendo tambien hacerca de esto:

Código SQL:
Ver original
  1. ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_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
  #2 (permalink)  
Antiguo 21/01/2013, 21:51
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Optimisar base de datos

alquilen que me aporte algo?
__________________
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
  #3 (permalink)  
Antiguo 22/01/2013, 05:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimisar base de datos

Código MySQL:
Ver original
  1. ...
  2.   `interes0` int(1) NOT NULL,
  3.   `interes1` int(1) NOT NULL,
  4.   `interes2` int(1) NOT NULL,
  5.   `interes3` int(1) NOT NULL,
  6.   `interes4` int(1) NOT NULL,
  7.   `interes5` int(1) NOT NULL,
  8.   `interes6` int(1) NOT NULL,
  9.   `interes7` int(1) NOT NULL,
  10.   `interes8` int(1) NOT NULL,
  11.   `interes9` int(1) NOT NULL,
  12.   `tuser` int(3) NOT NULL DEFAULT '0',
  13. ...

Esta parte se resulve mucho mejor con una tabla para los "intereses" y una tabla de relación entre user y intereses, esto te permitiria fichar n intereses no solo 9 y sobretodo sin desperdiciar espacio

User
id
...

Intereses
id
nombre

RelUserInteres
idrel
idUser FK referencia user(id)
idInteres FK referencia intereses(id)

Al usuario que solo tenga un interes no se le guarda el espacio para los ocho restantes y al usuario que tenga 100 intereses se los podras registrar....

tuser supongo que quiere decir tipo usuario, esto tambien se soluciona mejor con una tabla auxiliar con los tipos de usuario y guardando el id de esa tabla en la tabla user.


Para

ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

Manual
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 23/01/2013, 12:38
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Optimisar base de datos

gracias entendi vastante , me quedo con MyISAM ya que casi todo se basa en consultas,

pero sigo con algunas dudas por ejemplo:
Tengo en la misma base de datos esta tabla:

Código SQL:
Ver original
  1. DROP TABLE IF EXISTS `no_categorias`;
  2. CREATE TABLE IF NOT EXISTS `no_categorias` (
  3.   `cat_ID` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'ID de Categoria',
  4.   `catCatego` VARCHAR(100) COLLATE utf8_spanish_ci NOT NULL,
  5.   `idAutor` INT(10) NOT NULL,
  6.   PRIMARY KEY (`cat_ID`),
  7.   UNIQUE KEY `cat_ID` (`cat_ID`),
  8.   UNIQUE KEY `catCatego` (`catCatego`)
  9. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci COMMENT='Tabla Categoria de Noticias' AUTO_INCREMENT=15 ;
  10.  
  11. --
  12. -- Volcado de datos para la tabla `no_categorias`
  13. --
  14.  
  15. INSERT INTO `no_categorias` (`cat_ID`, `catCatego`, `idAutor`) VALUES
  16. (1, 'Hardware', 1),
  17. (2, 'Soft. Gratis', 1),
  18. (3, 'Soft. Venta', 1),
  19. (4, 'News. I+D', 1),
  20. (5, 'Social', 1),
  21. (6, 'Gadged', 1),
  22. (7, 'Diseño', 1),
  23. (8, 'Modding', 1),
  24. (9, 'Ofertas', 1),
  25. (10, 'Juegos PC', 1),
  26. (11, 'Juegos Role', 1),
  27. (12, 'Juegos Cons.', 1),
  28. (13, 'Trabajo', 1),
  29. (14, 'Otros', 1);

la cabecera de la pagina es html5:

Código HTML:
Ver original
  1. <meta charset="utf-8">
  2. <title>Icaros Net S.A - Desarrollo WEB - Soporte Tecnico - Consultoria</title>
  3. <link rel="stylesheet" type="text/css" href="css/main.css">
  4. <link rel="stylesheet" type="text/css" href="css/menu.css">
  5. <link rel="stylesheet" type="text/css" href="css/slider.css">
  6. <link rel="stylesheet" type="text/css" href="css/madm.css">
  7. <link rel="stylesheet" type="text/css" href="css/globalcontainer.css">
  8. <script src="js/slider1.js"></script>
  9. <script src="js/jquery-1.8.3.js"></script>
  10. <script src="ckeditor/ckeditor.js"></script>

yo cargo de esta forma el select option:

Código PHP:
Ver original
  1. <?php
  2.             $consulta = mysql_query("SELECT cat_ID,catCatego FROM no_categorias ORDER BY cat_ID ASC", $link);
  3.             //Llenas el combo
  4.             ?>
  5.             <select id="cat_ID" name="cat_ID" required>
  6.             <?php
  7.             while($row = mysql_fetch_array($consulta)){
  8.                 echo '<option value= "'.$row["cat_ID"].'">'.$row["catCatego"].'</option>';
  9.             }
  10.         ?>
  11.             </select>

aun asi a la hora de imprimir en pantalla me sale esto: Dise�o...

Código HTML:
Ver original
  1. <option value="7">Diseo</option>

como lo corrijo?
__________________
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/01/2013, 02:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimisar base de datos

Código PHP:
Ver original
  1. echo '<option value= "'.$row["cat_ID"].'">'.htmlentities($row["catCatego"], ENT_QUOTES, "UTF-8").'</option>';

http://php.net/manual/es/function.htmlentities.php

http://php.net/manual/en/function.utf8-decode.php

http://php.net/manual/en/function.utf8-encode.php
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 24/01/2013, 02:41
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Optimisar base de datos

que mal puse el codigo que me mandaste y ahora no me imprime nada en pantalla que raro... y si uso
Código PHP:
Ver original
  1. $input = utf8_encode($input);
tampoco me funciona
__________________
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

Última edición por arcanisgk122; 24/01/2013 a las 02:51
  #7 (permalink)  
Antiguo 24/01/2013, 02:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimisar base de datos

???? algo deberia imprimir....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 24/01/2013, 03:34
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Optimisar base de datos

niet no imprime nada simplemente deja el string vacio revisa el codigo el que me diste no limpia el utf-8 lo que haces es borrar todo y devolver un sting vacio... lo que yo quiero es imprimir la Ñ que no me la tira por ningun lado.... estas seguro que esto no debe llevar algunas comillas o algo:

Código PHP:
Ver original
  1. htmlentities($row["catCatego"], ENT_QUOTES, "UTF-8")

o almenos que esto este mal....
`catCatego` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
__________________
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
  #9 (permalink)  
Antiguo 24/01/2013, 04:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimisar base de datos

Yo uso utf8_unicode_ci.

Por otro lado mira que dicen aqui....

http://php.net/manual/es/function.ht...ies.php#106929

intenta


echo '<option value= "'.$row["cat_ID"].'">'.htmlentities($row["catCatego"]).'</option>';
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 24/01/2013, 13:17
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Optimisar base de datos

listo con la ultima opción ya se resolvió el problema, pero esto para mi no es una solución viable ya que el error sigue estando hay... no debería de ser necesarios correr la función htmlentities()
__________________
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
  #11 (permalink)  
Antiguo 07/05/2013, 14:16
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Optimisar base de datos

resuelto : la base de dato debe estar formateada a utf8-unicode-ci y las tablas o expreciones deben estar formateada a utf8-latina-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: mysql, sql
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 23:53.