Foros del Web » Programando para Internet » PHP »

numero autoincrementable por mes y al iniciar el mes siguiente empiece de uno

Estas en el tema de numero autoincrementable por mes y al iniciar el mes siguiente empiece de uno en el foro de PHP en Foros del Web. Buenos dias: mire necesito realizar lo siguiente: necesito hacer un campo autoincrementable por mes y que al terminar el mes vuelva a uno y siga ...
  #1 (permalink)  
Antiguo 12/01/2012, 07:24
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
numero autoincrementable por mes y al iniciar el mes siguiente empiece de uno

Buenos dias:

mire necesito realizar lo siguiente:
necesito hacer un campo autoincrementable por mes y que al terminar el mes vuelva a uno y siga incrementando desde 1 en el mes siguiente ejemplo:
1 01-01-2012
2 02-01-2012
3 24-01-2012
4 31-01-2012
1 01-02-2012
2 03-02-2012
3 y asi hasta terminar el mes
esto se guardara en una BD mysql.

espero que me puedan ayudar, gracias.
  #2 (permalink)  
Antiguo 12/01/2012, 07:33
Avatar de prodan  
Fecha de Ingreso: junio-2008
Mensajes: 85
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

la fecha va a ir cambiando por dia o aleatoreamente?
  #3 (permalink)  
Antiguo 12/01/2012, 07:45
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

hola gracias por responder, mira se ingresan registros en el dia y este numero debe ir autoincrementando, en un dia puede haber varios registros la idea de estos que al terminar el mes el contador de registro vuelva a comenzar en 1 para seguir contando los registro del mes siguiente, estos registros no se borran se guardan en una base de datos.

ejemplo:
1 01-01-2012
2 01-01-2012
3 04-01-2012
4 y asii......
5 31-01-2012
1 01-02-2012 y vuelva a contar desde uno , esto puede ser en fecha como lo muestro, por mes mayo(05)..

gracias.
  #4 (permalink)  
Antiguo 12/01/2012, 07:54
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Tendrás q hacerlo manualmente...

Cuando vayas a insertar, tendrás q buscar el último de ese mes...

algo así como
Código PHP:
$mes date('m'); //Devuelve el mes actual;
$anyo date('Y'); //Devuelve el año actual
$sql "SELECT registro FROM `tabla` WHERE `fecha`>='01-$mes-$anyo' ORDER BY `registro` DESC LIMIT 1";
$r mysql_query($sql$link);
$arr mysql_fetch_array($r);
$registro int($arr[0]);
$registro++;
//Y ya tendrías en $registro el valor a insertar! 
Esto suponiendo que el campo que quieres se llame "registro", por ejemplo!
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 12/01/2012, 08:02
Avatar de prodan  
Fecha de Ingreso: junio-2008
Mensajes: 85
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

fijate si te sirve esto:

Código PHP:
<?php 

$fechas 
= array('01-01-2012','02-01-2012','20-01-2012','05-02-2012','21-02-2012','06-03-2012','15-03-2012','26-03-2012');

$i=0;
foreach(
$fechas as $key => $val
{    
    
$x explode('-',$fechas[$key]);
    
$mes $x[1];

    switch(
$mes)
    {
        case 
01:
            
$c1++;
            
$fecha[$i]['fecha'] = $fechas[$key];
            
$fecha[$i]['mes'] = $mes;        
            
$fecha[$i]['id'] = $c1;
            break;
        case 
02:
            
$c2++;
            
$fecha[$i]['fecha'] = $fechas[$key];
            
$fecha[$i]['mes'] = $mes;        
            
$fecha[$i]['id'] = $c2;
            break;
        case 
03:
            
$c3++;
            
$fecha[$i]['fecha'] = $fechas[$key];
            
$fecha[$i]['mes'] = $mes;        
            
$fecha[$i]['id'] = $c3;
            break;
    }
    
    
$i++;
}

/*
 *  
Esto quedaria:

 Array
(
    [0] => Array
        (
            [fecha] => 01-01-2012
            [mes] => 01
            [id] => 1
        )

    [1] => Array
        (
            [fecha] => 02-01-2012
            [mes] => 01
            [id] => 2
        )

    [2] => Array
        (
            [fecha] => 20-01-2012
            [mes] => 01
            [id] => 3
        )

    [3] => Array
        (
            [fecha] => 05-02-2012
            [mes] => 02
            [id] => 1
        )

    [4] => Array
        (
            [fecha] => 21-02-2012
            [mes] => 02
            [id] => 2
        )

    [5] => Array
        (
            [fecha] => 06-03-2012
            [mes] => 03
            [id] => 1
        )

    [6] => Array
        (
            [fecha] => 15-03-2012
            [mes] => 03
            [id] => 2
        )

    [7] => Array
        (
            [fecha] => 26-03-2012
            [mes] => 03
            [id] => 3
        )

)
 */
?>
  #6 (permalink)  
Antiguo 12/01/2012, 08:34
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Eleazan hice lo que mencionas pero no me funciona al cambiar la fecha en la base de datos sigue sumando 1 y no vuelve a cero, puede ser por que no a cambiado de mes ya que calcula el mes actual, probare el siguiente codigo a ver como me va..

gracias.
  #7 (permalink)  
Antiguo 12/01/2012, 08:38
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Hola Bizo21.

Yo tengo hecho eso pero para un en lugar de reiniciarlo mensualmente, lo reinicio anualmente.

Yo lo hago más o menos como te ha comentado Eleazan; es decir, cojo el año (en tu caso año y mes) y busco el valor máximo que tengo para el contador. Si no tengo ningún valor, es porque he cambiado de año (en tu caso de mes), con lo cual le asigno el uno.

Puedes probar insertando dos registros hoy, te asignará el secuencial 1 y el 2, si ejecutas en localserver cambia la fecha de tu ordenador al mes siguiente y debe asignarte el secuencial 1.

Un saludo.
  #8 (permalink)  
Antiguo 12/01/2012, 08:52
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

hola lo probe como me dice, cambie la fecha de mi ordenador pero sigue ingresando el registro correlativo aunque cambie de mes, asi :

1 01-01-2012
2 07-01-2012
3 02-02-2012

....
  #9 (permalink)  
Antiguo 12/01/2012, 10:18
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Hola Bizo21.

A mi me funciona perfectamente. ¿Estas haciendo mas o menos esto?

Código HTML:
$annoHoy = date ("Y");
$mesHoy = date ("m");
$query = mysql_query("SELECT MAX(contador) as contador FROM tabla WHERE fecha >= '01-$mesHoy-$annoHoy';
$registro = mysql_fetch_array($query);
$contador = $registro['contador'];
if ($contador != null){
	$contador++
}
else
{
	$contador = 1;
}
Un saludo.
  #10 (permalink)  
Antiguo 12/01/2012, 10:37
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

hola gracias por las respuestas, pero sigue sumando igual a un que cambie de mes en el input o cambio de mes en mi equipo, probe tu codigo que al no encontrar nada va sumando uno, pero al cambiar de mes no vuelve a 1 sino sigue contando normal, como en el where uno le dice si es mayor o igual a 01 sigue sumando, pero en ningun lado se le dice que si cambia de mes que vuelva a uno.. no se si esto de no dormir no me deja razonar bien o tengo algo malo en mi codigo.. que es el mismo que me muestran UD.

gracias.
  #11 (permalink)  
Antiguo 12/01/2012, 10:58
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Hola Bizo21.

¿Puedes poner el código tuyo?

Un saludo.
  #12 (permalink)  
Antiguo 12/01/2012, 11:00
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

gracias a todos, hasta el momento me a funcionado lo hice de esta manera, calcule el primer y ultimo dia del mes y lo ingrese asi :

Código PHP:
Ver original
  1. if(isset($_POST['aceptar']))
  2. {
  3. $primerdiamesactual= date('Y-m-1');
  4. $mesactual= date('m');
  5. $anoactual= date('Y');
  6. function ultimo_dia($mes,$ano)
  7. {return strftime("%d", mktime(0, 0, 0, $mes+1, 0, $ano));
  8. }
  9. $ultimodia=ultimo_dia($mesactual,$anoactual);
  10. $ultimodiamesactual = date('Y-m-')."".$ultimodia;
  11. echo $ultimodiamesactual."<br>";
  12. echo $primerdiamesactual;
  13.  
  14. conectarDB();
  15. $query = mysql_query("SELECT MAX(folio) as contador FROM prueba WHERE fecha>='$primerdiamesactual' AND fecha<='$ultimodiamesactual'");
  16. $registro = mysql_fetch_array($query);
  17. $contador = $registro['contador'];
  18. if ($contador != null){
  19.        $contador++;
  20. }
  21. else
  22. {
  23.        $contador = 1;
  24. }
  25.  
  26. $_POST['fecha']=date("Y-m-d",strtotime($_POST['fecha']));
  27. $sql_ins="INSERT INTO prueba(folio,fecha) VALUE('$contador','$_POST[fecha]')";
  28. echo nl2br($sql_ins);
  29. conectarDB();
  30. $query=mysql_query($sql_ins)or die("Error al insertar los datos:".mysql_error());
  31. }
  32. ?>
  #13 (permalink)  
Antiguo 12/01/2012, 11:17
 
Fecha de Ingreso: enero-2008
Mensajes: 27
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Hola Bizo21.

Me alegro que te haya funcionado, pero la verdad no entiendo porque no te funcionaba poniendo sólo WHERE fecha>='$primerdiamesactual' y sí te funciona poniendo WHERE fecha>='$primerdiamesactual' AND fecha<='$ultimodiamesactual'.

En fín, esta tarde estoy demasiado espeso.

Lo importante es que te funcione.

Un saludo.
  #14 (permalink)  
Antiguo 12/01/2012, 16:51
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

Cita:
Iniciado por QuiqueGr Ver Mensaje
Hola Bizo21.

Me alegro que te haya funcionado, pero la verdad no entiendo porque no te funcionaba poniendo sólo WHERE fecha>='$primerdiamesactual' y sí te funciona poniendo WHERE fecha>='$primerdiamesactual' AND fecha<='$ultimodiamesactual'.

En fín, esta tarde estoy demasiado espeso.

Lo importante es que te funcione.

Un saludo.
Creo q el problema es q tanto tu como yo creíamos que la fecha tenia q ver con la actual... y no que pudiesen haber más ya metidas.. en plan de "Selecciono una fecha, y la guardo en la bbdd!". Sino, tampoco entiendo el pq del ultimo dia del mes xD
__________________
>> Eleazan's Source
>> @Eleazan
  #15 (permalink)  
Antiguo 12/01/2012, 19:17
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: numero autoincrementable por mes y al iniciar el mes siguiente empiece de

La verdad que la fecha se agregaba de un input y con esto iba incrementando, puede ser por esto que no funcionaba lo que Ud. me entregaron.. pero en fin funciona y eso es lo importante, saben tengo otro problema con $_SESSIONES, abri una consulta en este foro, pero nadie me a dado respuesta de lo ultimo que escribí les dejo el links Gracias:

http://www.forosdelweb.com/f18/probl...ession-969397/

Etiquetas: autoincrementable, mysql, numero, siguiente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.