clicky Posted March 12, 2015 Share Posted March 12, 2015 Buenas noches, he borrado esa tabla en phpmyadmin ya que de bases de datos no se. Ahora, habiendo aprendido que ántes de tocar hay que aprender, os pido vuestra generosa ayuda ya que estoy agobiado; os comento la situación: En mi web habían 4 categorías que correspondían a las categorías iniciales de la plantilla por defecto. Éstas categorías eran de vestidos de noche, de primavera, de verano... etc. Salían como subcategorías de una categoría creada para productos para bodas y era imposible borrarlas ya que no aparecían en las categorías dentro del backoffice. Tras consultarlo me comentaron que borrara lo que viera de "vestidos" dentro de la base de datos, así que conecté por phpmyadmin, la guardé en mi ordenador. Pero en phpmyadmin busqué la palabra vestido y la encontré dentro de ps_category_lang ( creo, porque es lo que ahora me dice el backoffice que no encuentra ) y borré ps_category_lang entero. Hecha esta idiotez, me he quedado con que todo seguía aparentemente bien, pero cuando en el menú superior clickabas en una categoría te daba error ya que no existía. Pero si cargabas la web, clicando en algún producto destacado o popular, etc, si que te metías en el producto, ya que no se habían tocado éstos. Mi problema es que no se crear esa tabla en la base de datos y conectarla de nuevo con los productos. Y otro problema nuevo...me fuí a parámetros avanzados, importar csv, y probé subir un csv de prueba creado por mí. Esta última tontería ha logrado eliminar el menú superior del frontoffice. Sin más, he aprendido bestialmente la lección y voy a poner cartas en el asunto haciendo algún curso de phpmyadmin... pero de entrada, os digo que tengo la base de datos íntegra en mi ordenador y que al tratar de importarla también da error, no logrando ningún efecto. No se que mas info dar, estoy a vuestra disposición totalmente; perdón por el tocho y muchas gracias por su lectura. Link to comment Share on other sites More sharing options...
moraira Posted March 12, 2015 Share Posted March 12, 2015 No pasa nada hombre (o mujer) es una tabla menor, pero te toca estudiar un poco, esta tabla se crearía así: -- -- Estructura de tabla para la tabla `ps_category_lang` -- CREATE TABLE IF NOT EXISTS `ps_category_lang` ( `id_category` int(10) unsigned NOT NULL, `id_shop` int(11) unsigned NOT NULL DEFAULT '1', `id_lang` int(10) unsigned NOT NULL, `name` varchar(128) NOT NULL, `description` text, `link_rewrite` varchar(128) NOT NULL, `meta_title` varchar(128) DEFAULT NULL, `meta_keywords` varchar(255) DEFAULT NULL, `meta_description` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Volcado de datos para la tabla `ps_category_lang` -- INSERT INTO `ps_category_lang` (`id_category`, `id_shop`, `id_lang`, `name`, `description`, `link_rewrite`, `meta_title`, `meta_keywords`, `meta_description`) VALUES (1, 1, 1, 'Root', NULL, 'root', NULL, NULL, NULL), (2, 1, 1, 'categoria1', NULL, 'categoria1', NULL, NULL, NULL), (3, 1, 1, 'categoria2', NULL, 'categoria2', NULL, NULL, NULL), (4, 1, 1, 'categoria3', NULL, 'categoria3', NULL, NULL, NULL), (5, 1, 1, 'categoria4', NULL, 'categoria4', NULL, NULL, NULL); -- -- Índices para tablas volcadas -- -- -- Indices de la tabla `ps_category_lang` -- ALTER TABLE `ps_category_lang` ADD PRIMARY KEY (`id_category`,`id_shop`,`id_lang`), ADD KEY `category_name` (`name`), ADD KEY `link_rewrite` (`link_rewrite`); La primera parte crea la tabla, la segunda le pone los datos y la tercera establece los indices Puedes copiar este código en la ventana SQL de tu MyPhpAdmin o mejor directamente importas en MyPhpAdmin, para ello te colocas en la base de datos (es decir que ves todas las tablas de la misma en el centro de la pantalla) y le das a importar. Tendráss que cambiarle el nombre al fichero de ps_category_lang.txt a ps_category_lang.sql (no me ha dejado adjuntarlo como sql. PERO, antes edítalo y ponlo a tu gusto, yo te lo he hecho con 5 categorias y en un sólo idioma,dando por hecho que el idioma es el 1 y que las categorías van del 1 al 5, pero seguro que no las tienes así... te doy una clase rápida. Esta tabla simplemente contiene el nombre y la url amigable de las categorías (en cada idioma) normalmente es igual el nombre que la url amigable no puede tener espacios, ni mayusculas ni caracteres ratos como acentos paréntesis etc, en todo caso lo importante es que crees los registros luego desde prestashop ya le pones el nombre que quieras. Pero antes para no liarla debes revisar la tabla categorías ya que puedes tener alguna categoría borrada y entonces mis datos no te valen. Es muy sencillo, en el código lo que debes editar y ampliar o reducir son las lineas como esta: (2, 1, 1, 'categoria1', NULL, 'categoria1', NULL, NULL, NULL), debes crear una linea por cada categoría por idioma, si solo tienes español te bastan estas 5 lineas, pero si tienes dos idiomas entonces simplemente duplica las lineas (en lugar de 5 debes tener 10) y el valor del tercer numero debe ser el código del idioma nuevo. Es decir: 1) he dado por hecho que tienes un idioma y es el ID 1, por ello debes entran en la tabla ps_lang y anota el código de tus idiomas, en la tabla ps_lang_category es el tercer valor si tienes un sólo idioma y es el código 4 (por ejemplo) debes cambiar el tercer valor 1 por un 4 en todas las lineas 2) he dado por hecho que tienes 5 categorias (1 categoría padre y 4 por debajo) y que van del código 1 al 5 eso lo ves en la tabla ps_category por ejemplo si has borrado y creado categorias al crear tu tienda puede ser que tengas 5 lineas pero con los códigos 1,5,6,7,9,12 si es así cambia el primer valor de cada linea (1,2,3,4,5) por los que tengas en tu tabla ps_category 3) imagino que no tienes multitienda con lo que la columna 2 (id_shop) sera siempre valor 1 4) por el nombre y la url amigable a cada linea (aunque eso lo puedes cambiar luego desde prestashop. Ahora un caso practico, imagina que en idiomas tienes 2, con el código 3 castellano y el 5 ingles, y en la tabla categorías tienes 5 categorías con los id 1,5,6,9,12 entonces debes cambiar las 5 líneas que insertan datos: (1, 1, 1, 'Root', NULL, 'root', NULL, NULL, NULL), (2, 1, 1, 'categoria1', NULL, 'categoria1', NULL, NULL, NULL), (3, 1, 1, 'categoria2', NULL, 'categoria2', NULL, NULL, NULL), (4, 1, 1, 'categoria3', NULL, 'categoria3', NULL, NULL, NULL), (5, 1, 1, 'categoria4', NULL, 'categoria4', NULL, NULL, NULL); por estas (1, 1, 3, 'Vestidos de Noche', NULL, 'vestidos_de_noche', NULL, NULL, NULL), (1, 1, 5, 'Evening Dresses', NULL, 'evening_dresses', NULL, NULL, NULL), (5, 1, 3, 'Primavera', NULL, 'primavera', NULL, NULL, NULL), (5, 1, 5, 'Spring', NULL, 'spring', NULL, NULL, NULL), (6, 1, 3, 'Verano', NULL, 'verano', NULL, NULL, NULL), (6, 1, 5, 'Summer', NULL, 'summer', NULL, NULL, NULL), (9, 1, 3, 'Otoño', NULL, 'otoño', NULL, NULL, NULL), (9, 1, 5, 'Autumn', NULL, 'autumn', NULL, NULL, NULL), (12, 1, 3, 'Invierno', NULL, 'invierno', NULL, NULL, NULL), (12, 1, 5, 'Winter', NULL, 'winter', NULL, NULL, NULL); Como ves esta chupao, si lo haces una vez no podrás parar, al final es más rápido llenas las tablas de prestashop que desde el programa. Fíjate que en el nombre lo puedes poner "bonito" es decir con mayúsculas y espaciós, pero en la url amigable debe estar en minúsculas y sin espacios (y no tengo muy claro si se puede poner la ñ) OJO si te fijas al final de cada linea una "coma" pero en la última un "paténtesis" Siempre antes una copia de la base de datos, si te sale mal borras la tabla y la creas de nuevo, los datos los puedes meter en myphpadmin pero es un poco pesado... suerte ps_category_lang.txt 1 Link to comment Share on other sites More sharing options...
clicky Posted March 12, 2015 Author Share Posted March 12, 2015 Moraria muchas gracias, soy como tú en cuanto a ayudar, pero nos separan varios universos en conocimiento sobre este tema, espero algún día manejarme parecido Me ha quedado claro lo que expones, en principio en mi web hay sólo un lenguaje y lo que dices corresponde a lo que hay, pero me surge una duda... y si la importo desde el phpmyadmin directamente?? cómo debería proceder? como dije, ántes del desaguisado guardé la BBDD en mi ordenador pero me daba error cuando la volvía a subir y ahora creo que es porque le cambié el nombre. Pero siendo el nombre ahora tal como aparece en el phpmyadmin, me surge la duda de si subirla a pelo sin mas, o voy a provocar duplicidad de tablas y datos amargándome la vida mas aún. Muchas gracias Link to comment Share on other sites More sharing options...
clicky Posted March 13, 2015 Author Share Posted March 13, 2015 up! Link to comment Share on other sites More sharing options...
clicky Posted March 13, 2015 Author Share Posted March 13, 2015 Saludos, no se dónde puedo colocar el código que me plantea moreira y me explico. Si descargo la base de datos, veo perfectamente todos los datos que me dice moreira, pero después no se qué hacer, es decir... la base de datos sigue teniendo la tabla ps_category_lang, pero en phpmyadmin no la veo que es donde la borré. Entonces debería crear la tabla en phpmyadmin?? si es así, estoy estudiando la forma de hacerlo con otro hosting que tengo de prueba y al que le he borrado la misma tabla. Me da el mismo error evidentemente, después para volver a crearla me pide unos datos que no entiendo ni tampoco encuentro en documentación por google. Es donde me pierdo. Alguien me puede ayudar? Muchas gracias Link to comment Share on other sites More sharing options...
moraira Posted March 13, 2015 Share Posted March 13, 2015 Hola Clicky, el código SQL lo ejecutas en MyPhpAdmin en el apartado SQL (tercera pestaña por la izquierda) no es necesario que este ubicado en la tabla donde quieres trabajar ya que el SQL lo especifica, es decir que si estas en la tabla ps_customer y pulsas la opcion SQL puedes hacer una carga de datos en otra table, esto es porque el SQL especifica en el propio código donde vamos a trabajar. Es decir que si vas a insertar datos en ps_category_lang y estas en ps_category no pasa nada, ya que la secuencia sql sera así: INSERT INTO `ps_category_lang` (`id_ca..... hazlo sobre una copia y así no te cargas nada. Para hacer una copia de nuestra base de datos, debemos exportarla, CREAR UNA NUEVA, ir a esa nueva base de datos e importar el fichero que hemos exportado antes. Link to comment Share on other sites More sharing options...
clicky Posted March 13, 2015 Author Share Posted March 13, 2015 moraira gracias por volver, voy a tratar de hacer lo que me acabas de escribir y te digo )) Link to comment Share on other sites More sharing options...
clicky Posted March 13, 2015 Author Share Posted March 13, 2015 He probado esto en otro hosting que tengo de pruebas donde instalé la plantilla por defecto para esto mismo y ahora cuando te metes en algún vestido te dice que SI que está dentro de alguna categoría, lo que es un logro enorme! porque después sería asociarlos o lo que fuera. Pero el problema está en que no me aparece el menú superior, desapareció. Y sigue sin salir. Voy a introducir la tabla que me falta por SQL como dices pero sin hacerlo sobre una nueva porque sólo me permite tener 1 BBDD Link to comment Share on other sites More sharing options...
clicky Posted March 13, 2015 Author Share Posted March 13, 2015 Moreira parece que funciona! pero me sale este error: Errorconsulta SQL: ---- Índices para tablas volcadas------ Indices de la tabla `ps_category_lang`--ALTER TABLE `ps_category_lang` ADD PRIMARY KEY ( `id_category` , `id_shop` , `id_lang` ) ,ADD KEY `category_name` ( `name` ) ,ADD KEY `link_rewrite` ( `link_rewrite` ) ; MySQL ha dicho: #1068 - Multiple primary key defined --------------- Ahora Lo que no sale es el menu superior en el frontoffice nada mas cargar la página, pero si clickas en algún producto si que sale Link to comment Share on other sites More sharing options...
clicky Posted March 13, 2015 Author Share Posted March 13, 2015 "Antes de nada volver a dar las gracias mas grandes a moreira en particular por su atención y un modo de explicación tan acertado" El resumen de los pasos a realizar es el siguiente: -------------------------------------------------- Moreira dijo: El código SQL lo ejecutas en MyPhpAdmin en el apartado SQL (tercera pestaña por la izquierda) no es necesario que este ubicado en la tabla donde quieres trabajar ya que el SQL lo especifica, es decir que si estas en la tabla ps_customer y pulsas la opcion SQL puedes hacer una carga de datos en otra table, esto es porque el SQL especifica en el propio código donde vamos a trabajar. Es decir que si vas a insertar datos en ps_category_lang y estas en ps_category no pasa nada, ya que la secuencia sql sera así: INSERT INTO `ps_category_lang` (`id_ca..... hazlo sobre una copia y así no te cargas nada. Para hacer una copia de nuestra base de datos, debemos exportarla, CREAR UNA NUEVA, ir a esa nueva base de datos e importar el fichero que hemos exportado antes. -- -- Estructura de tabla para la tabla `ps_category_lang` -- CREATE TABLE IF NOT EXISTS `ps_category_lang` ( `id_category` int(10) unsigned NOT NULL, `id_shop` int(11) unsigned NOT NULL DEFAULT '1', `id_lang` int(10) unsigned NOT NULL, `name` varchar(128) NOT NULL, `description` text, `link_rewrite` varchar(128) NOT NULL, `meta_title` varchar(128) DEFAULT NULL, `meta_keywords` varchar(255) DEFAULT NULL, `meta_description` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Volcado de datos para la tabla `ps_category_lang` -- INSERT INTO `ps_category_lang` (`id_category`, `id_shop`, `id_lang`, `name`, `description`, `link_rewrite`, `meta_title`, `meta_keywords`, `meta_description`) VALUES (1, 1, 1, 'Root', NULL, 'root', NULL, NULL, NULL), (2, 1, 1, 'categoria1', NULL, 'categoria1', NULL, NULL, NULL), (3, 1, 1, 'categoria2', NULL, 'categoria2', NULL, NULL, NULL), (4, 1, 1, 'categoria3', NULL, 'categoria3', NULL, NULL, NULL), (5, 1, 1, 'categoria4', NULL, 'categoria4', NULL, NULL, NULL); -- -- Índices para tablas volcadas -- -- -- Indices de la tabla `ps_category_lang` -- ALTER TABLE `ps_category_lang` ADD PRIMARY KEY (`id_category`,`id_shop`,`id_lang`), ADD KEY `category_name` (`name`), ADD KEY `link_rewrite` (`link_rewrite`); La primera parte crea la tabla, la segunda le pone los datos y la tercera establece los indices Puedes copiar este código en la ventana SQL de tu MyPhpAdmin o mejor directamente importas en MyPhpAdmin, para ello te colocas en la base de datos (es decir que ves todas las tablas de la misma en el centro de la pantalla) y le das a importar. Tendráss que cambiarle el nombre al fichero de ps_category_lang.txt a ps_category_lang.sql (no me ha dejado adjuntarlo como sql. PERO, antes edítalo y ponlo a tu gusto, yo te lo he hecho con 5 categorias y en un sólo idioma,dando por hecho que el idioma es el 1 y que las categorías van del 1 al 5, pero seguro que no las tienes así... te doy una clase rápida. Esta tabla simplemente contiene el nombre y la url amigable de las categorías (en cada idioma) normalmente es igual el nombre que la url amigable no puede tener espacios, ni mayusculas ni caracteres ratos como acentos paréntesis etc, en todo caso lo importante es que crees los registros luego desde prestashop ya le pones el nombre que quieras. Pero antes para no liarla debes revisar la tabla categorías ya que puedes tener alguna categoría borrada y entonces mis datos no te valen. Es muy sencillo, en el código lo que debes editar y ampliar o reducir son las lineas como esta: (2, 1, 1, 'categoria1', NULL, 'categoria1', NULL, NULL, NULL), debes crear una linea por cada categoría por idioma, si solo tienes español te bastan estas 5 lineas, pero si tienes dos idiomas entonces simplemente duplica las lineas (en lugar de 5 debes tener 10) y el valor del tercer numero debe ser el código del idioma nuevo. Es decir: 1) he dado por hecho que tienes un idioma y es el ID 1, por ello debes entran en la tabla ps_lang y anota el código de tus idiomas, en la tabla ps_lang_category es el tercer valor si tienes un sólo idioma y es el código 4 (por ejemplo) debes cambiar el tercer valor 1 por un 4 en todas las lineas 2) he dado por hecho que tienes 5 categorias (1 categoría padre y 4 por debajo) y que van del código 1 al 5 eso lo ves en la tabla ps_category por ejemplo si has borrado y creado categorias al crear tu tienda puede ser que tengas 5 lineas pero con los códigos 1,5,6,7,9,12 si es así cambia el primer valor de cada linea (1,2,3,4,5) por los que tengas en tu tabla ps_category 3) imagino que no tienes multitienda con lo que la columna 2 (id_shop) sera siempre valor 1 4) por el nombre y la url amigable a cada linea (aunque eso lo puedes cambiar luego desde prestashop. Ahora un caso practico, imagina que en idiomas tienes 2, con el código 3 castellano y el 5 ingles, y en la tabla categorías tienes 5 categorías con los id 1,5,6,9,12 entonces debes cambiar las 5 líneas que insertan datos: (1, 1, 1, 'Root', NULL, 'root', NULL, NULL, NULL), (2, 1, 1, 'categoria1', NULL, 'categoria1', NULL, NULL, NULL), (3, 1, 1, 'categoria2', NULL, 'categoria2', NULL, NULL, NULL), (4, 1, 1, 'categoria3', NULL, 'categoria3', NULL, NULL, NULL), (5, 1, 1, 'categoria4', NULL, 'categoria4', NULL, NULL, NULL); por estas (1, 1, 3, 'Vestidos de Noche', NULL, 'vestidos_de_noche', NULL, NULL, NULL), (1, 1, 5, 'Evening Dresses', NULL, 'evening_dresses', NULL, NULL, NULL), (5, 1, 3, 'Primavera', NULL, 'primavera', NULL, NULL, NULL), (5, 1, 5, 'Spring', NULL, 'spring', NULL, NULL, NULL), (6, 1, 3, 'Verano', NULL, 'verano', NULL, NULL, NULL), (6, 1, 5, 'Summer', NULL, 'summer', NULL, NULL, NULL), (9, 1, 3, 'Otoño', NULL, 'otoño', NULL, NULL, NULL), (9, 1, 5, 'Autumn', NULL, 'autumn', NULL, NULL, NULL), (12, 1, 3, 'Invierno', NULL, 'invierno', NULL, NULL, NULL), (12, 1, 5, 'Winter', NULL, 'winter', NULL, NULL, NULL); Como ves esta chupao, si lo haces una vez no podrás parar, al final es más rápido llenas las tablas de prestashop que desde el programa. Fíjate que en el nombre lo puedes poner "bonito" es decir con mayúsculas y espaciós, pero en la url amigable debe estar en minúsculas y sin espacios (y no tengo muy claro si se puede poner la ñ) OJO si te fijas al final de cada linea una "coma" pero en la última un "paténtesis" Siempre antes una copia de la base de datos, si te sale mal borras la tabla y la creas de nuevo, los datos los puedes meter en myphpadmin pero es un poco pesado... suerte -------------------------------------------------- Link to comment Share on other sites More sharing options...
Recommended Posts