
Dudas sobre realizar consultas a una base de datos mysql con php
Hola,
Tengo una tabla en mysql con muchas filas.
Quiero desde PHP llamar cada día a una fila, por orden de ID. Es decir, hoy muestro la fila 1 mañana la fila 2, y cuando acabe vuelvo al principio de la tabla.
¿Alguna idea?
Gracias!
Tengo una tabla en mysql con muchas filas.
Quiero desde PHP llamar cada día a una fila, por orden de ID. Es decir, hoy muestro la fila 1 mañana la fila 2, y cuando acabe vuelvo al principio de la tabla.
¿Alguna idea?
Gracias!
1 Respuesta
Respuesta de Kike Rodríguez
1
1

Kike Rodríguez, Siempre aprendiendo, es lo que hay ;)
Si las filas te coinciden con un número que puedas cuadrar de forma matemática con la fecha lo podrías hacer así, es decir, si hay 30 registros el día 1 sacas el 1 y el día dos sacas el 2.
Si tienes 15:
if dia menor de 15 saco el día
else id día mayor de 15 saco el dia menos 15
Como supongo que no será así, tienes que incluir un contador y una fecha, crea una nueva tabla con un campo que sea numérico y otro de fecha, o dado que no será excesivamente grande le numero de filas puedes incluir el campo en la tabla que tengas, ocupará un poco más de memoria pero te ahorrarás código. Y el código sería algo así (dime si necesitas que te lo haga):
funcion mostrarfila()
dia_hoy = dia de la fecha de hoy
dia_base = dia de la fecha de la base
filas = max filas de la base
si dia_hoy > dia_base (actualizo el contador y la fecha si es un nuevo dia)
{
<span style="white-space: pre;"> </span>si contador menor filas
<span style="white-space: pre;"> </span>{ incremento el contador de la base en una unidad}
<span style="white-space: pre;"> </span>else
<span style="white-space: pre;"> </span>contador de la base a 0
dia_base = dia_hoy (actualizo la base)
}
contador = contador de la base
mostrar fila id= contador
Como te digo lo mejor sería ponerlo en una nueva tabla, el contador y la fecha en que se actualizó el contador. El funcionamiento es:
- Contador a cero, fecha de hoy (valores introducidos por ti en la tabla)
- Entran a la página hoy, la fecha es la misma que la de la tabla, no se incrementa el contador
- Entran mañana, la fecha es mayor que la de la tabla, se actualiza la decha en la tabla y se incrementa el contador en una unidad
- El contador se vuelve a poner a cero al cambiar la fecha de nuevo el contador excediera el número de filas
Si tienes 15:
if dia menor de 15 saco el día
else id día mayor de 15 saco el dia menos 15
Como supongo que no será así, tienes que incluir un contador y una fecha, crea una nueva tabla con un campo que sea numérico y otro de fecha, o dado que no será excesivamente grande le numero de filas puedes incluir el campo en la tabla que tengas, ocupará un poco más de memoria pero te ahorrarás código. Y el código sería algo así (dime si necesitas que te lo haga):
funcion mostrarfila()
dia_hoy = dia de la fecha de hoy
dia_base = dia de la fecha de la base
filas = max filas de la base
si dia_hoy > dia_base (actualizo el contador y la fecha si es un nuevo dia)
{
<span style="white-space: pre;"> </span>si contador menor filas
<span style="white-space: pre;"> </span>{ incremento el contador de la base en una unidad}
<span style="white-space: pre;"> </span>else
<span style="white-space: pre;"> </span>contador de la base a 0
dia_base = dia_hoy (actualizo la base)
}
contador = contador de la base
mostrar fila id= contador
Como te digo lo mejor sería ponerlo en una nueva tabla, el contador y la fecha en que se actualizó el contador. El funcionamiento es:
- Contador a cero, fecha de hoy (valores introducidos por ti en la tabla)
- Entran a la página hoy, la fecha es la misma que la de la tabla, no se incrementa el contador
- Entran mañana, la fecha es mayor que la de la tabla, se actualiza la decha en la tabla y se incrementa el contador en una unidad
- El contador se vuelve a poner a cero al cambiar la fecha de nuevo el contador excediera el número de filas

Creo que lo comprendo, pero el código me seria de ayuda, no me veo capaz de codificarlo bien...
Gracias!
Gracias!

Ahí te va el código, no suelo hacerlo porque se supone que estas consultas son para aprender :-)
Copia y pega el código en una nueva página para problarlo. Si no te quieres liar al cambiarlo, antes debes entenderlo. Debes crear:
- Una base de datos llamada "ejemplo_php"
- Dentro de ella dos tablas, una se llama "contador_dia" y otra "listado". La primera contiene el contador y la fecha en que se modificó. Si la fecha actual es mayor se actualizan los dos campos, si contador es igual al numero de filas de la tabla "listado" se pone a 1.
- En "listado" hay dos campos: "id" de tipo integer autonumérico y "texto" de tipo varchar. Esta es la que debes cambiar y adaptar una vez probado el código a tu base de datos. En este ejemplo solo lista el campo "texto".
- En "contador_dia" hay dos campos: "contador" de tipo integer y "fecha" de tipo date
El código está probado, cambia los valores de la conexión a la base de datos, servidor, usuario y contraseña. Al final de código hay un:
$fecha_actual = "2010/01/01";
Es para que hagas las pruebas, vete incrementndo la fecha para que veas como cambia el contador y la fecha en la base de datos, acuérdate que el formato es año-mes-día.
Un saludo,
Kike
<body>
<?php
$conexion = mysql_connect ("localhost","root",""); //Conectas a la base de datos cambia los valores por los tuyos
mysql_select_db("ejemplo_php",$conexion);
$contador=0; //ponemos a cero los valores
$numero_filas=0;
$fecha_base="";
$fecha_hoy = date("Y-m-d"); //Asignamos el valor de la fecha de hoy a este campo
function consulta_base_contador($base,$campo_contador,$campo_fecha) //Consulta el contador y la fecha de la base
{
global $fecha_hoy;
global $contador;
global $fecha_base;
$consulta = mysql_query("SELECT * FROM $base");
$resultado = mysql_fetch_array($consulta);
print ("La fecha de hoy es : $fecha_hoy<br />");
print ("
<h4>Contador actual y fecha de la base \"$base\"</h4>
");
$contador = $resultado[$campo_contador];
$fecha_base = $resultado[$campo_fecha];
echo ("Contador = $contador<br />Fecha en la base = $fecha_base<br />");
}
function consulta_filas_base($base) //Consulta el numero de filas de la base que contiene los datos
{
global $numero_filas;
$consulta = mysql_query("SELECT * FROM $base");
$numero_filas = mysql_num_rows($consulta);
}
function modifica_contador($base,$campo_contador,$campo_fecha) //Actualiza contador y fecha si es un nuevo día
{
global $contador;
global $numero_filas;
global $fecha_hoy;
global $fecha_base;
if ($fecha_hoy>$fecha_base)
{
if (($contador+1)>$numero_filas)
$contador=1;
else
$contador = $contador+1;
mysql_query("UPDATE $base SET $campo_fecha = '$fecha_hoy',$campo_contador = $contador ");
consulta_base_contador(contador_dia,"contador","fecha");
print("Actualizado. <br />");
}
else
print("No Actualizado. <br />");
}
function listar_datos_base($base,$campo,$valor,$muestra) //Lista un campo de una tabla que creé, cámbialo para la tuya
{
global $numero_filas;
$consulta = mysql_query("SELECT * FROM $base WHERE $campo=$valor");
$resultado = mysql_fetch_array($consulta);
print ("
<h4>Lista de la base \"$base\" para \"contador\" = $valor, se muestra el valor del campo \"$muestra\" de un total de $numero_filas filas:</h4>
<br />");
echo ("{$resultado[$muestra]}<br />");
}
//Úsalo para hacer pruebas y ver como funciona yo cree una tabla llamada "contador_dia" con dos campos fecha de tipo date y contador de tipo integer, y una tabla "listado" con un campo "id" autonumérico y un campo "texto"
consulta_base_contador(contador_dia,"contador","fecha"); //Cunsulta el contador y la fecha
consulta_filas_base(listado); //Consulta el numero de filas, en mi caso de la tabla listado
listar_datos_base(listado,"id",$contador,"texto"); //Listo de la tabla "listado" el valor del campo "texto" el "id" igual a "contador"
$fecha_hoy="2010-01-02"; //Cambio la fecha a un día más para probar que se actualiza la tabla "contador_dia"
modifica_contador(contador_dia,"contador","fecha"); //Entra y si la fecha es mayor que la de la tabla la actualiza, y el contador
listar_datos_base(listado,"id",$contador,"texto"); //Vuelvo a listar los datos para que veas los cambios en las tablas
mysql_close($conexion);
?>
</body>
Copia y pega el código en una nueva página para problarlo. Si no te quieres liar al cambiarlo, antes debes entenderlo. Debes crear:
- Una base de datos llamada "ejemplo_php"
- Dentro de ella dos tablas, una se llama "contador_dia" y otra "listado". La primera contiene el contador y la fecha en que se modificó. Si la fecha actual es mayor se actualizan los dos campos, si contador es igual al numero de filas de la tabla "listado" se pone a 1.
- En "listado" hay dos campos: "id" de tipo integer autonumérico y "texto" de tipo varchar. Esta es la que debes cambiar y adaptar una vez probado el código a tu base de datos. En este ejemplo solo lista el campo "texto".
- En "contador_dia" hay dos campos: "contador" de tipo integer y "fecha" de tipo date
El código está probado, cambia los valores de la conexión a la base de datos, servidor, usuario y contraseña. Al final de código hay un:
$fecha_actual = "2010/01/01";
Es para que hagas las pruebas, vete incrementndo la fecha para que veas como cambia el contador y la fecha en la base de datos, acuérdate que el formato es año-mes-día.
Un saludo,
Kike
<body>
<?php
$conexion = mysql_connect ("localhost","root",""); //Conectas a la base de datos cambia los valores por los tuyos
mysql_select_db("ejemplo_php",$conexion);
$contador=0; //ponemos a cero los valores
$numero_filas=0;
$fecha_base="";
$fecha_hoy = date("Y-m-d"); //Asignamos el valor de la fecha de hoy a este campo
function consulta_base_contador($base,$campo_contador,$campo_fecha) //Consulta el contador y la fecha de la base
{
global $fecha_hoy;
global $contador;
global $fecha_base;
$consulta = mysql_query("SELECT * FROM $base");
$resultado = mysql_fetch_array($consulta);
print ("La fecha de hoy es : $fecha_hoy<br />");
print ("
<h4>Contador actual y fecha de la base \"$base\"</h4>
");
$contador = $resultado[$campo_contador];
$fecha_base = $resultado[$campo_fecha];
echo ("Contador = $contador<br />Fecha en la base = $fecha_base<br />");
}
function consulta_filas_base($base) //Consulta el numero de filas de la base que contiene los datos
{
global $numero_filas;
$consulta = mysql_query("SELECT * FROM $base");
$numero_filas = mysql_num_rows($consulta);
}
function modifica_contador($base,$campo_contador,$campo_fecha) //Actualiza contador y fecha si es un nuevo día
{
global $contador;
global $numero_filas;
global $fecha_hoy;
global $fecha_base;
if ($fecha_hoy>$fecha_base)
{
if (($contador+1)>$numero_filas)
$contador=1;
else
$contador = $contador+1;
mysql_query("UPDATE $base SET $campo_fecha = '$fecha_hoy',$campo_contador = $contador ");
consulta_base_contador(contador_dia,"contador","fecha");
print("Actualizado. <br />");
}
else
print("No Actualizado. <br />");
}
function listar_datos_base($base,$campo,$valor,$muestra) //Lista un campo de una tabla que creé, cámbialo para la tuya
{
global $numero_filas;
$consulta = mysql_query("SELECT * FROM $base WHERE $campo=$valor");
$resultado = mysql_fetch_array($consulta);
print ("
<h4>Lista de la base \"$base\" para \"contador\" = $valor, se muestra el valor del campo \"$muestra\" de un total de $numero_filas filas:</h4>
<br />");
echo ("{$resultado[$muestra]}<br />");
}
//Úsalo para hacer pruebas y ver como funciona yo cree una tabla llamada "contador_dia" con dos campos fecha de tipo date y contador de tipo integer, y una tabla "listado" con un campo "id" autonumérico y un campo "texto"
consulta_base_contador(contador_dia,"contador","fecha"); //Cunsulta el contador y la fecha
consulta_filas_base(listado); //Consulta el numero de filas, en mi caso de la tabla listado
listar_datos_base(listado,"id",$contador,"texto"); //Listo de la tabla "listado" el valor del campo "texto" el "id" igual a "contador"
$fecha_hoy="2010-01-02"; //Cambio la fecha a un día más para probar que se actualiza la tabla "contador_dia"
modifica_contador(contador_dia,"contador","fecha"); //Entra y si la fecha es mayor que la de la tabla la actualiza, y el contador
listar_datos_base(listado,"id",$contador,"texto"); //Vuelvo a listar los datos para que veas los cambios en las tablas
mysql_close($conexion);
?>
</body>
- Compartir respuesta
- Anónimo
ahora mismo
