gainax0 Posted April 9, 2020 Share Posted April 9, 2020 (edited) Hola, soy nuevo en el sitio, pero ya tengo 5 años con creacion (3) de sitios en prestashop, me agradaría saber si alguien tiene una idea de cómo insertar usuarios nuevos (en que tablas) en prestashop, directamente desde un formulario ajeno pero dentro del mismo hosting lo he intentado varias veces, pero me marca el ultimo error hasta ahorita es: "SQLSTATE[HY000]: General error: 1364 Field 'id_gender' doesn't have a default value" les platico mi idea: a falta de algún plugin, modulo, o webservices que CONECTE Y sirva para los 3 CMS, se me ocurrió la idea de hacer un formulario genérico (usuario, correo, password) que apunte a 3 sitios diferentes (joomla, prestashop, moodle) y que al registrase en ese formulario se de de alta en los 3 sitios. si alguien tiene una idea de cómo se hace en prestashop el registro de usuarios fuera del formulario habitual de prestashop agradecería mucho su ayuda. Gracias y feliz programación. Edited April 9, 2020 by gainax0 (see edit history) Link to comment Share on other sites More sharing options...
Prescol Posted April 9, 2020 Share Posted April 9, 2020 El error que te da es porque el campo id_gender tiene que tener un valor si o si. Link to comment Share on other sites More sharing options...
gainax0 Posted April 9, 2020 Author Share Posted April 9, 2020 18 minutes ago, Prescol said: El error que te da es porque el campo id_gender tiene que tener un valor si o si. Sí, olvide mecionar esto... de hecho eso note, pero aun pasandole valor a la tabla me seguía marcando error, por ende borre la tabla gender y sigo sin poder eliminar ese error, de hecho el error que marcaba era otro, algo así, y buscando una solución decía que había que transformar las tablas o la BD en un formato X$# que no entendí, por eso opte por el formulario antes mencionado Link to comment Share on other sites More sharing options...
Prescol Posted April 10, 2020 Share Posted April 10, 2020 Quote borre la tabla gender No hay que borrar tablas. Lo único que necesitas es pasar los parámetros correctos a la query. Link to comment Share on other sites More sharing options...
gainax0 Posted April 13, 2020 Author Share Posted April 13, 2020 On 4/10/2020 at 11:40 AM, Prescol said: No hay que borrar tablas. Lo único que necesitas es pasar los parámetros correctos a la query. Ok, pero porqué me sigue mandando ese mensaje, si la tabla ya no existe? habrá otra forma de insertar un usuario en prestashop solo con los datos de: usuario, mail, passsword, fuera del entorno de prestashop? Link to comment Share on other sites More sharing options...
Prescol Posted April 13, 2020 Share Posted April 13, 2020 Si el mensaje de error comienza con SQLSTATE es porque quien lo arroja es MySQL o MaríaDB Link to comment Share on other sites More sharing options...
gainax0 Posted April 13, 2020 Author Share Posted April 13, 2020 11 minutes ago, Prescol said: Si el mensaje de error comienza con SQLSTATE es porque quien lo arroja es MySQL o MaríaDB alguna solución para eso? o por donde empezar? , porque no tengo idea!! Link to comment Share on other sites More sharing options...
Juanjomg Posted April 14, 2020 Share Posted April 14, 2020 Muy buenas. Si indicas la sentencia SQL quizás se te pueda ayudar. Link to comment Share on other sites More sharing options...
Prescol Posted April 14, 2020 Share Posted April 14, 2020 Como dice Juanjo, es importante que indiques la sentencia SQL para poder ayudarte. Link to comment Share on other sites More sharing options...
ventura Posted April 14, 2020 Share Posted April 14, 2020 También es muy practico añadir registros mediante las funciones que incluye Prestashop por defecto. eg <?php use PrestaShop\PrestaShop\Adapter\ServiceLocator; use PrestaShop\PrestaShop\Adapter\CoreException; use PrestaShop\PrestaShop\Core\Crypto\Hashing; require 'config/config.inc.php'; try { $crypto = ServiceLocator::get('\\PrestaShop\\PrestaShop\\Core\\Crypto\\Hashing'); $customer = new Customer(); $customer->lastname = 'Doe'; $customer->firstname= 'Jane'; $customer->email = '[email protected]'; $customer->passwd = $crypto->hash('janedoepassword'); $customer->add(); } catch (Exception $e) { die( $e->getMessage() ); } print 'Successfully created new customer '.$customer->firstname.' '.$customer->lastname.''; Link to comment Share on other sites More sharing options...
gainax0 Posted April 14, 2020 Author Share Posted April 14, 2020 12 hours ago, Juanjomg said: Muy buenas. Si indicas la sentencia SQL quizás se te pueda ayudar. Hola, OK! tienen razón!. dejo aquí el código que ocupo para insertar un usuario en prestashop <?php $a = 'juanito'; ----->usuario $b = 0; -----> genero dónde 1 es hombre y 0 es mujer me parece!!! // conectar la base da datos $db = 'shop0'; $host = 'localhost'; $user = shop0'; $pass = 'kuHwP0'; $conn = new PDO("mysql:dbname=".$db.";host=".$host,$user, $pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // iniciar transacción $conn->beginTransaction(); try { // tabla user $sql = 'INSERT INTO ps_customer (firstname) VALUES (:firstname);'; $result = $conn->prepare($sql); $result->bindValue(':firstname', $a, PDO::PARAM_STR); $result->execute(); //tabla genero// $sql = 'INSERT INTO ps_customer (id_gender) VALUES (:id_gender);'; // $result = $conn->prepare($sql); // $result->bindValue(':id_gender', $b, PDO::PARAM_STR); // $result->execute(); $conn->commit(); echo 'Datos insertados'; } catch (PDOException $e) { // si ocurre un error hacemos rollback para anular todos los insert $conn->rollback(); echo $e->getMessage();; } echo $b->getMessage(); ?> al ejecutar el código y finalizar marca: SQLSTATE[HY000]: General error: 1364 Field 'id_gender' doesn't have a default value lo raro es!! que ya elimine la tabla gender y me sigue pidiendo ese dato... ojala me allá explicado bien Link to comment Share on other sites More sharing options...
Prescol Posted April 15, 2020 Share Posted April 15, 2020 El parámetro $b, en alguna iteración, está vacío, y como la columna id_gender está definida como "NOT NULL", necesica un parámetro. Normalmente se define un valor por defecto a nivel de base de datos, pero en esta ocasión no aplica, porque no hay un defecto para el género, por lo que te pide si o si un valor. Link to comment Share on other sites More sharing options...
ventura Posted April 19, 2020 Share Posted April 19, 2020 On 4/14/2020 at 9:06 PM, gainax0 said: Hola, OK! tienen razón!. dejo aquí el código que ocupo para insertar un usuario en prestashop <?php $a = 'juanito'; ----->usuario $b = 0; -----> genero dónde 1 es hombre y 0 es mujer me parece!!! // conectar la base da datos $db = 'shop0'; $host = 'localhost'; $user = shop0'; $pass = 'kuHwP0'; $conn = new PDO("mysql:dbname=".$db.";host=".$host,$user, $pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // iniciar transacción $conn->beginTransaction(); try { // tabla user $sql = 'INSERT INTO ps_customer (firstname) VALUES (:firstname);'; $result = $conn->prepare($sql); $result->bindValue(':firstname', $a, PDO::PARAM_STR); $result->execute(); //tabla genero// $sql = 'INSERT INTO ps_customer (id_gender) VALUES (:id_gender);'; // $result = $conn->prepare($sql); // $result->bindValue(':id_gender', $b, PDO::PARAM_STR); // $result->execute(); $conn->commit(); echo 'Datos insertados'; } catch (PDOException $e) { // si ocurre un error hacemos rollback para anular todos los insert $conn->rollback(); echo $e->getMessage();; } echo $b->getMessage(); ?> al ejecutar el código y finalizar marca: SQLSTATE[HY000]: General error: 1364 Field 'id_gender' doesn't have a default value lo raro es!! que ya elimine la tabla gender y me sigue pidiendo ese dato... ojala me allá explicado bien No creo que sea una buena practica añadir contraseñas de usuario sin encriptar 1 Link to comment Share on other sites More sharing options...
Prescol Posted April 19, 2020 Share Posted April 19, 2020 2 minutes ago, ventura said: No creo que sea una buena practica añadir contraseñas de usuario sin encriptar De hecho no va a funcionar el login en Prestashop si lo haces así. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now