Numero máximo del campo id

Perdón por molestar de nuevo me atore con el siguiente problema, explico mi duda hasta el final estos son mis códigos

$subnombre = substr($nombre, 0, 2); //substraigo las dos primeras letras del 1er nombre
$subapellidos = substr($apellidos, 0, 2); //substraigo las dos primeras letras del 1er apellido
$subsexo = substr($apellidos, 0, 1); //substraigo la primera letra del sexo
$conc1 = $subnombre.$subapellidos.$subsexo; //concateno las substracciones
$conc = strtoupper($conc1); //paso a mayus toda la concatenacion
$ultimo="SELECT  MAX(id) +1 FROM  hhus_pacientes"; // selecciono el ultimo numero del id autonumerico y le sumo 1
$no_usuario = $conc."-".$ultimo; // concateno cadena de texto - id ya sumado

La primera parte me funciona super, pero la segunda lo que quiero es obtener el ultimo id autoincremetable de la tabla para luego sumarle 1 y así se auto-incremente el numero que quiero concatenar, al momento de hacerlo no me produce ningún error y al guardarlo en la tabla me guarda lo siguiente:

Tal vez se que sea por el juego de comillas simples paréntesis o "X" error de escritura pero ya intente ponerlo de diferentes formas y no puedo, lo que quiero es que se guarde por ejemplo, el ultimo ID es 50, y al hacer un nuevo registro se guarde VIMUM-60, si vuelve a registrarse otra persona sea ABCDE-61 y así consecutivamente ABCDE-62... En que estoy mal o como puedo corregirlo.

2 Respuestas

Respuesta
1

Hay un pequeño gran detalle en tu script. La variable $ultimo contiene el sql de la consulta a la base de datos, pero nunca ejecutas esa consulta, por lo cual es lógico que cuando concatenes todo te aparezca el texto de la consulta.

Por otro lado para tener ese id auto incrementable necesitas primero hacer el insert y en función de el id generado en ese registro, hacer un update donde puedas ingresar el campo con el id incrementado en 1.

El script quedaría más o menos así:

$subnombre = substr($nombre, 0, 2); //substraigo las dos primeras letras del 1er nombre
$subapellidos = substr($apellidos, 0, 2); //substraigo las dos primeras letras del 1er apellido
$subsexo = substr($apellidos, 0, 1); //substraigo la primera letra del sexo
$conc1 = $subnombre.$subapellidos.$subsexo; //concateno las substracciones
$conc = strtoupper($conc1); //paso a mayus toda la concatenacion
//guardas el registro sin el campo $no_usuario
//como desconozco los nombres de los campos haré una consulta genérica, tu la
//modificas para que funcione en tu base de datos
$sql = "insert into tabla (campos) values (valores)";
mysqli_query($conn, $sql);
//vamos a tomar el último id desde mysql
$ultimo = mysqli_insert_id($conn);
// concateno cadena de texto - id y lo incremento en 1
$no_usuario = $conc."-".($ultimo+1); 
//hacemos el update del campo sobre el ultimo id generado
$sql2= "update tabla set no_usuario='".$no_usuario."' where id=".$ultimo;
Mysqli_query($conn, $sql2);

Espero que esa sea la lógica que necesitas, si no funciona o no es lo que esperas me avisas y mejoramos esto.

Respuesta
1

Entiendo que esa query la estas ejecutando a parte y luego lo metes en la variable de php.

¿Me puedes eenseñar algo más de código?

De todas formas, en vez de hacerlo del tirón, ¿por qué no lo haces por pasos? Primer obtén el resultado y luego le sumas uno. BBásicamente hacer la suma en php e vez de en sql.

Manda el código completo y lo miramos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas