Buen dia con todos, disculpen mi ignorancia, pero podrian ayudarme con lo siguiente:
Tengo una tabla de productos a la cual necesito generarle un codigo correlativo, segun la familia y subfamilia, hay una tabla familias y otra tabla subfamilias, las cuales contienen id, descripcion, codigo. lo que necesito es que cuando genere un producto nuevo y seleccione la familia y subfamilia, me genere el codigo para el producto, pero que sea el correlativo segun lo seleccionado, ejemplo:
Familias
id | descripcion | codigo
1 | herramientas | HE
2 | Electricos | EL
Subfamilias
id | descripcion | codigo
1 | desarmador estrella 2" | 01
2 | martillo pequeno | 02
3 | Tomacorrientes aereos | 01
4 | juego de llaves estil | 03
5 | cable #14 | 02
Productos
id | descripcion | codigo
1 | desarmador estrella 2" | HE01
2 | martillo pequeno | HE02
3 | Tomacorrientes aereos | EL01
4 | juego de llaves estil | HE03
5 | cable #14 | EL02
algo como este ejemplo, pero generar el codigo de producto con php, tambien poder editarlo, muchas gracias, espero me puedan ayudar.
Hola,
Mirando tu propio ejemplo, en realidad no necesitas un correlativo que vaya sumando número a número: el código de producto es simplemente el código de la familia pegado al código de la subfamilia. Fijáte: «desarmador estrella» es familia HE + subfamilia 01 = HE01. «Tomacorrientes aéreos» es familia EL + subfamilia 01 = EL01. No hace falta contar nada, solo consultar los dos códigos y concatenarlos:
$id_familia = $_POST['id_familia'];
$id_subfamilia = $_POST['id_subfamilia'];
$stmt = $pdo->prepare("
SELECT f.codigo AS cod_familia, s.codigo AS cod_subfamilia
FROM familias f, subfamilias s
WHERE f.id = ? AND s.id = ?
");
$stmt->execute([$id_familia, $id_subfamilia]);
$fila = $stmt->fetch();
$codigo_producto = $fila['cod_familia'] . $fila['cod_subfamilia'];
Con esto, cuando guardes el producto nuevo, insertas $codigo_producto directamente en el campo codigo de la tabla Productos. Y para editar es exactamente la misma lógica: si el usuario cambia la familia o subfamilia del producto, recalculas $codigo_producto con la misma consulta y actualizas ese campo.
Si en el futuro necesitas de verdad un correlativo (por ejemplo, si dos productos distintos pudieran caer en la misma familia+subfamilia y necesitaras distinguirlos con un número al final), entonces sí te haría falta contar cuántos productos existen ya con ese mismo prefijo y sumarle uno, pero por tu ejemplo no parece ser el caso.
Carlos