PHP - crear correlativo

   
Vista:

crear correlativo

Publicado por movick (824 intervenciones) el 15/09/2014 19:24:37
Estoy desarrollando este codigo para crear un numero correlativo.
La idea es que no sea necesario incluir el Nro de Historia Manual sino que lo haga de manera automatica
Si alguien pudiera ayudarme en este caso.
incluyo la imagen
paciente

este es el codigo:

En negrita esta el codigo en cuestion.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<title>Pacientes</title>
</head>
 
<body>
<form action="cargapacientes.php" method="POST" name="myform">
<fieldset style='width:auto'><LEGEND>Ingreso Paciente</LEGEND>
   <table align='center'>
      <tr>
	    <td class="sr" align='right' style="text-decoration:none">Nro de Historia:</td>
<?php
$NroHistoria = "SELECT nrohistoria FROM pacienteprueba ORDER BY nrohistoria DESC";
$NroHistoria + 1;
 
        echo"<td class='sr'><input type='text' name='$NroHistoria' size='10' maxlength='10' align='right'/></td>
		
      </tr>";
?>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Nombre:</td>
		<td class="sr"><input type="text" name="nombre" size="50" maxlength="50" align="right"/></td>
	  </tr>
<!-- CREAR EL APELLIDO -->
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Direccion:</td>
		<td class="sr"><input type="text" name="direccion" size="120" maxlength="120" align="right"/>
		</td>
	  </tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Telefono:</td>
		<td class="sr"><input type="text" name="telefono" size="10" maxlength="10" align="right"/>
		</td>
	  </tr>
	  <tr>
<!--	  calcular la edad
-->		<td class="sr" align='right' style="text-decoration:none">Fecha de Nac.:</td>
		<td class="sr"><input type="text" name="fechanac" size="10" maxlength="10" align="right"/>
		</td>
	  </tr>

<tr>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 15/09/2014 20:29:52
faltan ordenes, sobre todo donde lees la base de datos, me imagino que recortaste el codigo para explicar el problema mas rapido asi que me voy a basar en el ejemplo para explicar mi propuesta aclarando que asi como esta esta mal, hacen falta las ordenes para mandar llamar el query y leer el resultado.

$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
$NroHistoria= $Rs["MaxNroHistoria"];

o tambien

$NroHistoria="SELECT max(nrohistoria) as MaxNroHistoria FROM pacienteprueba";
$NroHistoria= $Rs["MaxNroHistoria"]+1;

y ponerlo como label en lugar de usar input.

espero sea de ayuda, suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 15/09/2014 21:05:39
Si es para explicar mas rapidamente,
llevé el ejemplo del query que me enviaste al pgAdmin ya que trabajo con Postgresql,y si funciona
Pero debo colocarlo asi:
1
$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba ORDER BY nrohistoria DESC ";
?

y como pudiera agragarle ceros delante del numero para que no quede tan solo un digito?

Claro debo hacer conexion a la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 15/09/2014 22:29:39
en un select donde tienes un max, min o averange en un query como ese se va a regresar solamente 1 registro, asi que el order by no es absolutamente necesario, lo puedes omitir si asi lo consideras.

a menos que pidas que te de un campo y la cuenta o suma de otro campo entonces tendrias que agrupar y ahi si puedes ordenarlo, pero en esta orden no es necesario ya que es unicamente el maximo de 1 solo campo.

suponiendo que el registro lo lees con $Rs["MaxNroHistoria"] entonces para ajustarlo con ceros a la izquierda te recomendaria que usaras esta orden

$NroHistoria=str_pad($Rs["MaxNroHistoria", 10, "0", STR_PAD_LEFT);

si el max = 150 esa orden regresaria ese numero ajustado a 10 posiciones llenando con ceros a la izquierda.

'0000000150'

hay otras ordenes como el fprint, pero en lo personal entiendo mejor como funciona esta orden.

espero sea de ayuda, suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 15/09/2014 23:26:42
Bueno muchas gracias Gonzalo, voy a ajustar todo el codigo y luego te comento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 16:54:53
Que tal Gonzalo, te comento que no esta trayendo el registro.

Lo ajuste de esta manera:
en realidad no trae nada, no puedo ver el error.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=1234");
 
$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
echo $NroHistoria1= $Rs["MaxNroHistoria"];
 
$NroHistoria1 = @pg_query($connect,$NroHistoria1);
$selectNro = @pg_fetch_array($NroHistoria1);
 
        echo"<td class='sr'><input type='text' name='nrohistoria' value= '$selectNro' size='10' maxlength='10' align='right'/></td>
		
      </tr>";
?>
si puedes ayudarme en este caso, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 17/09/2014 17:11:17
posiblemente el error esta dentro de la tabla.

busca en las herramientas "developer tools", ve a html y abre todos los +, ahi vas a encontrar el error.

el problema de mandar un query dentro de una tabla es que si reporta un error dentro de un tr o un td el error se queda como parte de <td "mensaje de error" >

para poder ver el mensaje entonces manda el query dentro del td

<td>
query
fetch
echo
</td>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 17:27:54
Lo estoy impriemiendo asi:
echo"<td class='sr'><input type='text' name='nrohistoria' value= '$selectNro' size='10' maxlength='10' align='right'/></td>
Abri tambien el developer tools pero no vi nada extraño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 17/09/2014 17:22:00
ok, ya viendo el codigo parece no estar completo.

no se como usar ese codigo, yo entiendo mejor mysqli, asi que me imagino que deberias hacer este cambio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<tr>
<td>
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=1234");
 
$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
echo $NroHistoria1= $Rs["MaxNroHistoria"];
 
$NroHistoria1 = @pg_query($connect,$NroHistoria1);
$selectNro = @pg_fetch_array($NroHistoria1);// aqui lees el registro con todos los campos(1,2 o los que regrese mysql)
//ahora debes imprimir solo el campo MaxNroHistoria
 
echo"<input type='text' name='nrohistoria' value= '$selectNro["MaxNroHistoria"]' size='10' maxlength='10' align='right'/>
		
?>
</td>
</tr>


asi deberia funcionar, suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 17:48:33
me arroja este error;
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\pediatria\pacientes.php on line 75

hay un problema con las comillas
con esta linea de codigo que me enviaste.
1
echo"<input type='text' name='nrohistoria' value= '$selectNro["MaxNroHistoria"]' size='10' maxlength='10' align='right'/>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 17/09/2014 17:55:25
echo"<input type='text' name='nrohistoria' value= '$selectNro["MaxNroHistoria"]' size='10' maxlength='10' align='right'/>

me concentre solo en agregar el campo, no revise toda la linea, mis disculpas, ahora corregi varios " por '.
ok, veamos de esta forma

echo '<input type="text" name="nrohistoria" value= " ' . $selectNro["MaxNroHistoria"] . " ' size="10" maxlength="10" align="right"/>';

revisala.

salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 17/09/2014 17:50:42
parece que la linea marcada con <-- - - - - - - - - sale sobrando.

para poder usar esa linea la variable $Rs["MaxNroHistoria"] deberia contener algun valor, es posible que aqui tengas un error y el interprete de php se detenga en esa linea.

estas usando MsSql o MySql?

<?
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=1234");

$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
echo $NroHistoria1= $Rs["MaxNroHistoria"]; // < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$NroHistoria1 = @pg_query($connect,$NroHistoria1);
$selectNro = @pg_fetch_array($NroHistoria1);// aqui lees el registro con todos los campos(1,2 o los que regrese mysql)
//ahora debes imprimir solo el campo MaxNroHistoria

echo"<input type='text' name='nrohistoria' value= '$selectNro["MaxNroHistoria"]' size='10' maxlength='10' align='right'/>
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 17:58:38
yo trabajo con Postgresql,

pero no veo cual es la linea marcada que sobra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 17/09/2014 18:05:23
la que esta marcada con < - - - - - - - - - - - - - - - -


echo $NroHistoria1= $Rs["MaxNroHistoria"]; // < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 18:18:26
te envio nuevamente el trozo de codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<body>
<form action="cargapacientes.php" method="POST" name="myform">
<fieldset style='width:auto'><LEGEND>Ingreso Paciente</LEGEND>
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=1234");
 
$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
 
$NroHistoria1= $Rs['MaxNroHistoria'];
 
$NroHistoria1 = @pg_query($connect,$NroHistoria1);
$selectNro = @pg_fetch_array($NroHistoria1);
?>
   <table align='center'>
      <tr>
	    <td class="sr" align='right' style="text-decoration:none">Nro de Historia:</td>
<?php
 
  echo"<td class='sr'><input type='text' name='nrohistoria' value='$selectNro' size='10' maxlength='10' align='right'/>
  </td>
		
      </tr>";
?>
asi como va no arroja errores, pero tampoco imprime nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por Gonzalo (339 intervenciones) el 17/09/2014 18:31:20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<body>
<form action="cargapacientes.php" method="POST" name="myform">
<fieldset style='width:auto'><LEGEND>Ingreso Paciente</LEGEND>
 
<?php
 
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=1234");// conecta con bd
 
$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
 
$NroHistoria1= $Rs['MaxNroHistoria']; // <------------------------- esta linea, no la entiendo, porque va aqui??
 
$NroHistoria1 = @pg_query($connect,$NroHistoria1); // pide los datos, ok
$selectNro = @pg_fetch_array($NroHistoria1);// guarda el resultado del query, ok
?>
 
<table align='center'>
<tr>
 
<td class="sr" align='right' style="text-decoration:none">Nro de Historia:</td>
 
<td class='sr'>
 
<input type='text' name='nrohistoria' value=' <?php echo($selectNro["MaxNroHistoria"] ); ?> ' size='10'  xlength='10' lign='right'/>
 
</td>
</tr>
</table>
 
</form>
 
</body>
 
</html>

revisalo, deberia funcionar, sigo con la duda, para que usas la linea que esta marcada con <----------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 19:07:03
ya quite la linea, pero recuerdo que me enviaste esa linea al principio. per ya la removi.

y coloque esta forma:
1
2
echo"<td class='sr'><input type='text' name='nrohistoria'  value= '$selectNro' size='10' maxlength='10' align='right'/>
y ahora me trae el termino Array en el input type text.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

crear correlativo

Publicado por movick (824 intervenciones) el 17/09/2014 19:53:05
Bueno lo coloque en un While
y modifiqué el <td> que esta en negrita.
pero tampoco imprime nada.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=1234");
 
$NroHistoria="SELECT max(nrohistoria)+1 as MaxNroHistoria FROM pacienteprueba";
 
$NroHistoria1 = @pg_query($connect,$NroHistoria);
 
   while($propietario=@pg_fetch_array($NroHistoria1)):
       echo $codigoNro  =$propietario['nrohistoria'];
   endwhile;
 
?>
   <table align='center'>
      <tr>
	    <td class="sr" align='right' style="text-decoration:none">Nro de Historia:</td>
 
 
<td class='sr'><input type='text' name='nrohistoria'  value="<?php echo $codigoNro ?>" size='10' maxlength='10' align='right'/>
  </td>
      </tr>
Es extraño, tengo otros codigos con esta forma y funcionan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar