Duda sobre bajas y altas en un formulario de programación

Hola maltzurra te vuelvo a molestar ahora mi duda y en lo que pido ayuda es en lo siguiente:
Tengo el mismos códigos por cierto muchas gracias por tu ayuda anterior m sirvió mucho gracias! Te explico pero ahora le estoy agregando una cosa más lo que quiero hacer es que ahora que ya me cambia el estatus a "no" quiero que me guarde al mismo tiempo la fecha en que se esta dando de alta en este caso es el año porque las bajas son anuales... Ok lo que le agregue a mi código que se llama checkox.php fue lo que esta remarcado en negritas y queda así :

<script type="text/javascript"><!--
function obtiene_fecha() {
var fecha_actual = new Date()
var anio = fecha_actual.getFullYear() -1
return (anio)
}
function MostrarFecha() {
document.write ( obtiene_fecha() )
document.form1.fecha_baja.value = obtiene_fecha();
}
// --></script>


<script language="javascript" type="text/javascript">
function obtiene_fecha() {
var fecha_actual = new Date()
var anio = fecha_actual.getFullYear() -1
return (anio)
}
function MostrarFecha() {
document.write ( obtiene_fecha() )
document.form1.fecha_baja.value = obtiene_fecha();
}
</script>

<div align="center">
<h1> <b>
<br>LISTA DE SOCIOS DEL AÑO <input type="hidden" name="fecha_baja" id="fecha_baja">
<script language="JavaScript" type="text/javascript">
MostrarFecha();
</script>
PARA DAR DE BAJA
</b></h1>
</div>
<div align="left">
<?php
include("connecc.php");
$Enlace=CONECTARSE();
$estatus=$HTTP_POST_VARS[estatus];
$variable3=mysql_query("select * from datps where estatus='si'");
echo "<form action=\"baja.php\" method=\"POST\">\n";
while ($row=mysql_fetch_array($variable3))
{
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['id']."\">".$row['nombre'].$row['apellido_paterno'].$row['apellido_materno']."<BR>";
}
echo "<br>";
$id=mysql_num_rows($variable3);
printf("
<p><B>TOTAL DE SOCIOS ACTIVOS:%s</B></p>
",$id);
echo"</div>
";
echo "<center>";
echo "<input type=\"submit\" name=\"submit\" value=\"DAR DE BAJA\">";
echo "</form>";
?>
</form>
</body>
</html>
<div>
No me guarda la fecha_baja en mi tabla osea el año en el que se les esta dando de baja que por cierto te explico que el año de baja es una año atrasado
<div>
include("connecc.php");
$Enlace=CONECTARSE();
$seleccion=$_POST['seleccion'];
$fecha_baja=$HTTP_POST_VARS['fecha_baja'];
for ($i=0; $i<=count($seleccion)-1; $i++) {
mysql_query("UPDATE datps SET estatus = 'no' AND fecha_baja='$fecha_baja' WHERE id = $seleccion[$i]")or die ("ERROR");
}
?>
</div>
</div>
<div>te pido por favor si me puedes ayudar en esta parte y me agas saber si lo que estoy asiendo esta bien o mal y me orientaras a como hacerlo </div>
<div> espero tu respuesta pronto</div>
<div>=)
</div>

1 Respuesta

Respuesta
1
Si he entendido bien, lo que quieres es realmente guardar 2 fechas. Lo primero que te comentaré es que evites el uso de JavaScript ya que no todo el mundo lo tiene o si alguien lo desconectara, no habría fecha.
En cambio te recomiendo que utilices la función date(). Por ejemplo: '$anyo = date("Y");' nos devolvería '2009'.
Si he entendido bien lo que quieres hacer, a la hora de dar de alta a un usuario añádele el año en la sentencia MySQL. Y en cambio, a la hora de dar de baja, haces el UPDATE añadiendo la fecha de la baja.
Así por ejemplo podrías tener luego (por ejemplo), otro archivo estadisticas.php en el que podrías recorrer todos los socios con estatus = 'no' y hacer algo como:
// estadisticas.php
mysql_connect($a, $b, $c);
mysql_select_db($d);
$resultado = mysql_query("SELECT * FROM datps where estatus = 'no' ");
while ($row = mysql_fetch_array($resultado)) {
$duracion = (int) $row['año_baja'] - (int) $row['fecha_alta'];
echo "El socio con ID ".$row['id']." fue socio durante $duracion años";
}
Cabe destacar que fecha alta debería ser un año para poder hacer la resta y obtener así el número de años. Por otro lado, aunque el código se puede depurar y mucho, creo que así es más claro :)
Hola hola te envío de nuevo mi dua porque en la anterior copie dos veces y puede que no me entiendas una disculpa =)
Hola maltzurra te vuelvo a molestar ahora mi duda y en lo que pido ayuda es en lo siguiente:
Tengo el mismos códigos por cierto muchas gracias por tu ayuda anterior m sirvió mucho gracias! Te explico pero ahora le estoy agregando una cosa más lo que quiero hacer es que ahora que ya me cambia el estatus a "no" quiero que me guarde al mismo tiempo la fecha en que se esta dando de alta en este caso es el año porque las bajas son anuales... ok lo que le agregue a mi código que se llama checkox.php fue lo que esta remarcado en negritas y queda así :

<script type="text/javascript"><!--
function obtiene_fecha() {
var fecha_actual = new Date()
var anio = fecha_actual.getFullYear() -1
return (anio)
}
function MostrarFecha() {
document.write ( obtiene_fecha() )
document.form1.fecha_baja.value = obtiene_fecha();
}
// --></script>
<script type="text/javascript"><!--
function obtiene_fecha() {
var fecha_actual = new Date()
var anio = fecha_actual.getFullYear() -1
return (anio)
}
function MostrarFecha() {
document.write ( obtiene_fecha() )
document.form1.fecha_baja.value = obtiene_fecha();
}
// --></script>

<div>
<h1>
LISTA DE SOCIOS DEL AÑO <input id="fecha_baja" name="fecha_baja" type="hidden" />
<script type="text/javascript"><!--
MostrarFecha();
// --></script>

PARA DAR DE BAJA
</h1>
</div>
<div>
include("connecc.php");
$Enlace=CONECTARSE();
$estatus=$HTTP_POST_VARS[estatus];
$variable3=mysql_query("select * from datps where estatus='si'");
echo "<form action="\"baja.php\"" method="\"POST\"">\n";
while ($row=mysql_fetch_array($variable3))
{
echo "<input name="\"seleccion[]\"" type="\"checkbox\"" value="\"".$row['id']."\"" />".$row['nombre'].$row['apellido_paterno'].$row['apellido_materno']."
";
}
echo "
";
$id=mysql_num_rows($variable3);
printf("
TOTAL DE SOCIOS ACTIVOS:%s
",$id);
echo"</form>
";
echo "";
echo "<input name="\"submit\"" type="\"submit\"" value="\"DAR" />";
echo "";
?>
<div>
No me guarda la fecha_baja en mi tabla osea el año en el que se les esta dando de baja que por cierto te explico que el año de baja es una año atrasado
<div>
include("connecc.php");
$Enlace=CONECTARSE();
$seleccion=$_POST['seleccion'];
$fecha_baja=$HTTP_POST_VARS['fecha_baja'];
for ($i=0; $i<=count($seleccion)-1; $i++) {
mysql_query("UPDATE datps SET estatus = 'no' AND fecha_baja='$fecha_baja' WHERE id = $seleccion[$i]")or die ("ERROR");
}
?>
</div>
</div>
<div>te pido por favor si me puedes ayudar en esta parte y me agas saber si lo que estoy asiendo esta bien o mal y me orientaras a como hacerlo </div>
<div> espero tu respuesta pronto</div>
<div>=)
</div>
</div>
Hola muchas gracias por dedicarme un poco de tu tiempo y ayudarme
¿Entendí lo que me explicaste pero tengo otra duda y una disculpa por seguir molestándote pero en que parte manado a llarmar el archivo estadísticas.php en el archivo checkbox.php o en el de baja.php?
 gracias y espero tu respuesta pronto =)
Creo que es más fácil que me facilites el archivo donde añades socios y el archivo donde los das de baja para que retoque el código pues sino es más complicado.
Oki en donde agrego al socio es el siguiente:::
Alta de socios
include("connecc.php");
$Enlace=CONECTARSE();
$id=$HTTP_POST_VARS[id];
$nombre=$HTTP_POST_VARS[nombre];
$apellido_paterno=$HTTP_POST_VARS[apellido_paterno];
$apellido_materno=$HTTP_POST_VARS[apellido_materno];
$calle=$HTTP_POST_VARS[calle];
$numero=$HTTP_POST_VARS[numero];
$colonia=$HTTP_POST_VARS[colonia];
$c_p=$HTTP_POST_VARS[c_p];
$id_pais=$HTTP_POST_VARS[id_pais];
$id_provincia=$HTTP_POST_VARS[id_provincia];
$id_localidad=$HTTP_POST_VARS[id_localidad];
$actividad=$HTTP_POST_VARS[actividad];
$tipopredio=$HTTP_POST_VARS[tipopredio];
$ubicacion_predio=$HTTP_POST_VARS[ubicacion_predio];
$nombre_predio1=$HTTP_POST_VARS[nombre_predio1];
$vacuno=$HTTP_POST_VARS[vacuno];
$caballar=$HTTP_POST_VARS[caballar];
$status=$HTTP_POST_VARS[status];
if(!is_null($id))
{
$sentencia="Insert into datps (id,nombre,apellido_paterno,apellido_materno,calle,numero,colonia,c_p,id_pais,id_provincia,id_localidad,tipopredio,ubicacion_predio,nombre_predio1,actividad,caballar,vacuno,status)values('$id','$nombre','$apellido_paterno','$apellido_materno','$calle','$numero','$colonia','$c_p','$id_pais','$id_provincia','$id_localidad','$tipopredio','$ubicacion_predio','$nombre_predio1','$actividad','$caballar','$vacuno','$status');";
ECHO "
";
$ejecutar=mysql_query($sentencia,$Enlace);
$status=mysql_affected_rows($Enlace);
if($status>0)
{
echo"id=",$id."
";
echo"registro almacenado con exito";
}
ELSE
{
echo"
ERROR: NO SE PUDO ALMACENAR REGISTRO
";
}
}
?>
Ir al administrador de datos
Te aclaro que en ese archivo de arriba se llama alta_datos.php y es donde doy de alta a los socios lo que es estatus es predeterminado "si" y fecha_baja pues lo que pretendo es que se guarde cuando al mismo tiempo en el que estoy dando de baja osea que es cuando estoy modificando el estatus de si a no.
Este de abajo se llama checkbox.php y es en donde me debe de aparecer la listas de aquellos socios en el que tienen el estatus de "si", y es cuando escojo a varios socios.
<script type="text/javascript"><!--
function obtiene_fecha() {
var fecha_actual = new Date()
var anio = fecha_actual.getFullYear() -1
return (anio)
}
function MostrarFecha() {
document.write ( obtiene_fecha() )
document.form1.fecha_baja.value = obtiene_fecha();
}
// --></script>
include("connecc.php");
$Enlace=CONECTARSE();
$estatus=$HTTP_POST_VARS[estatus];
$variable3=mysql_query("select * from datps where estatus='si'");
echo "
<form action="\"baja.php\"" method="\"POST\"">\n";
while ($row=mysql_fetch_array($variable3))
{
echo "<input name="\"seleccion[]\"" type="\"checkbox\"" value="\"".$row['id']."\"" />".$row['nombre'].$row['apellido_paterno'].$row['apellido_materno']."
";
}
echo "
";
$id=mysql_num_rows($variable3);
printf("
TOTAL DE SOCIOS ACTIVOS:%s
",$id);
echo"
";
echo "";
echo "<input name="\"submit\"" type="\"submit\"" value="\"DAR" />";
echo "";
?>
en  este de abajo que se llama baja.php es donde estoy dandoles de baja al socio seleccionado que fue en el que tu me ayudaste: </form><form action="\"baja.php\"" method="\"POST\"">
<HTML>
<TITLE></TITLE><HEAD></HEAD></HEAD>
<BODY>
<?
include("connecc.php");
$Enlace=CONECTARSE();
$seleccion=$_POST['seleccion'];
$fecha_baja=$HTTP_POST_VARS['fecha_baja'];
for ($i=0; $i<=count($seleccion)-1; $i++) {
mysql_query("UPDATE datps SET estatus = 'no',fecha_baja='$fecha_baja' WHERE id = $seleccion[$i]")or die ("ERROR");
}
?>
</BODY>
</HTML></form><form action="\"baja.php\"" method="\"POST\"">
</form><form action="\"baja.php\"" method="\"POST\"">esa parte de ", fecha_baja='$fecha_baja' se lo agregue para ver si asi al mismo tiempo que estoy cambiandole al socio seleccionado el estatus de si a no me agregue al mismo tiempo  el año en el que les estoy dando de baja en este caso que me guarde el año del 2008 no del 2009 porque esto se da de baja con año atras... espero y me este explicando no e agregado la parte que me diste porque no se en donde llamarlo y como utilizarlo. mcuhas gracias por tu disposicion. gracias gracias !!! =)
</form>
Bien, en la tabla 'datps' deberías tener entonces 2 años (por ejemplo, fecha_alta y fecha_baja), la de alta y la de baja. Lo que debes hacer es ANTES de hacer el INSERT del usuario, añadir esta sentencia: $anyo = date("Y");
Con esto lo que consigues es guardar el año en el que el usuario a sido añadido. Es decir, haces el INSERT y el INSERT coge el año actual. Evidentemente, guardará el año en el que se ha guardado al socio.
Por otro lado, si lo que quieres es dar de baja. Lo que haría es cambiar '$fecha_baja=$HTTP_POST_VARS['fecha_baja'];' por $fecha_baja = date("Y").
El código JavaScript lo puedes eliminar íntegramente. Con el código PHP puedes obtener el año exactamente igual y de hecho es mejor.
Entonces, después, para los cálculo simplemente tienes que elegir los socios con estatus='no', es decir, se han dado de baja. Sabemos que si el estatus es 'no' tenemos una fecha de baja (al modificar de si a no) y otra de alta (al dar de alta al socio).
Así, simplemente tenemos que hacer un SELECT con los 2 valores y restar la fecha de baja menos la de alta. Es decir, imaginemos que tenemos un socio con ID 12. Si lo dimos de alta el 2005, la fecha de alta será 2005. Si lo queremos dar de baja ahora, la fecha_baja será 2009.
Si obtenemos los dos valores y restamos baja-alta, tenemos 2009-2005 = 4. Luego sabemos que ha sido socio durante 4 años.
Creo que a eso es a lo que te refieres así que si tienes alguna duda, tranquila, no dudes en preguntar!
Disculpa por tadar en darte tu puntuación pero ai te va muchas gracias por tu ayuda gracias gracias gracias por compartir tus conocimientos y ayudarme gracias =)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas