Base de datos en mysql y php

Buenos Días Experto. Tengo la siguiente duda.
Como puedo hacer lo siguiente en php y mysql. Yo necesito crear una base de datos que contenga información de los extractos de propietarios de una inmobiliaria los cuales cada mes hay que ir alimentando mensualmente por mes, sin borrar los extractos anteriores. Lo que yo quiero es que los propietarios a través de la página puedan consultar los últimos 10 extractos que ellos quieran. Digamos, que ellos quieran conultar enero, entonces a través de un combobox seleccione el mes que deseen y en otra página le muestre todos los detalles de ese extracto correspondiente al mes que el navegante selecciono.
Gracias.
Atentamente,
Wilman
Bogotá - Colombia
Respuesta
1
Espero que quede resuelto con la otra consulta que me has echo.
Si no es así me lo dices.
Buenas tardes experto.
No eso no es lo que yo quiero.
Te cuento de una manera más clara. Yo necesito crear un sistema de consulta de tal manera que los propietarios(nota. Recuerda que un propietario puede tener varios inmuebles, que para nosotros por ejemplo lo manejamos asignándole por ejemplo el código 012345-01, en caso que tenga un segundo inmueble el código sera 012345-02 y así a medida que un propietario tenga más inmuebles.
Entonces lo que se quiere es que el propietario a través de la página, digite su cedula y su clave y pueda entrar al sistema y a su vez le muestre una página con todos los inmuebles que el tenga y que por ejemplo si el quiere ver detalles de un inmueble de el por ejemplo el inmueble 01235-02 de clic ahí y en otra página le muestre la información de ese inmueble. Pero que también tenga la opción de poder mostrarle información de los extractos de ese inmueble para los meses anteriores, es por eso que cuando salga los inmuebles de los propietarios también me salga un combobox para seleccionar el mes que el quiera ver detalles de su extracto anterior. Por ejemplo, enero, feb, marzo, abril, mayo...
Y si quiere ver información de mes actual que también lo pueda ver.
Gracias
Cordialmente,
Sanew
Las bases de datos que tienes que usar son las siguientes. Te pongo algunos campos que deben tener, luego añades el resto que necesites:
Propietarios: Cedula, Clave, Nombre
Inmuebles: Id_inmueble, Cedula, localizacion, metros, mes_alta, anio_alta, etc.
Extractos: id_inmueble, mes, anio, campo1, campo2, etc.
La página de login puede crear la sesión. Sería el archivo login.php:
<?php
session_start();
if (isset($_POST['cedula'])) {
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Propietarios WHERE Cedula = '{$_POST['cedula']}' AND Clave = '{$_POST['clave']}'";
$datos = mysql_query($consulta);
if (mysql_num_rows($resultado) > 0) {
$_SESSION['Cedula'] = $_POST['cedula'];
header("Location: inmuebles.php");
} else {
echo "ERROR: el propietario no está registrado.";
}
} else {
echo "<form name='formulario' method='POST'>";
echo "Cedula: <input type='text' name='cedula'> <br>";
echo "Clave: <input type='password' name='clave'> <br>";
echo "<input type='submit' value='Entrar'>";
echo "</form>";
}
?>
Una vez que el propietario está validado, se tiene que mostrar todos los inmuebles suyos. Se pone una lista para que elija. En este paso no se pone el combo porque es necesario que haya seleccionado un inmueble para ver sus extractos. La página se llama inmuebles.php:
<?php
session_start();
if (!isset( $_SESSION['Cedula'] )) {
header("Location: login.php");
} else {
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Inmuebles WHERE Cedula = '{$_SESSION['Cedula']}'";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "El propietario no tiene inmuebles.";
} else {
$mesActual = date('m');
$anioActual = date('Y');
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Localizacion </td> </tr>";
while( $inmueble = mysql_fetch_array($datos) ) {
$enlace = "<a href='./Datos.php?id={$inmueble['id_inmueble']}&mes=$mesActual&anio=$anioActual'> ";
echo "<tr> <td> $enlace {$inmueble['id_inmueble']} </a> </td>
<td> {$inmueble['localizacion']} </td> </tr>";
}
echo"</table>";
}
// mysql_close
}
?>
Ahora el propietario selecciona un inmueble de la lista, y al pulsar se va a la página datos.php pasando como parámetro GET el identificador de ese inmueble. Se muestran los datos y el extracto del mes actual, y también se pone el combo para mostrar otros extractos. El combo manda los datos en formato POST a esta misma página. El archivo datos.php sería el siguiente:
<?php
session_start();
if ( !isset( $_SESSION['Cedula'] ) ) {
header("Location: login.php");
} else {
if ( !isset( $_GET['id'] ) ) {
header('Location: inmuebles.php');
} else {
$id = $_GET['id'];
if (isset($_POST['mes']) ) {
$mes = $_POST['mes'];
} else {
if (!isset($_GET['mes']) ) {
$mes = date('m');
} else {
$mes = $_GET['mes'];
}
}
if (isset($_POST['anio']) ) {
$anio = $_POST['anio'];
} else {
if (!isset($_GET['anio']) ) {
$anio = date('Y');
} else {
$anio = $_GET['anio'];
}
}
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Inmuebles WHERE id_inmueble = $id";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "Inmueble no valido.";
} else {
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Localizacion </td> <td> Metros </td> ... </tr>";
while( $inmueble = mysql_fetch_array($datos) ) {
echo "<tr> <td> {$inmueble['id_inmueble']} </td>
<td> {$inmueble['localizacion']} </td>
<td> {$inmueble['metros']} </td>
<td> ... </td> </tr>";
}
echo"</table>";
}
$consulta = "SELECT * FROM Extractos WHERE id_inmueble = $id AND mes = $mes AND anio = $anio";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "No hay extracto del mes y año seleccionado.";
} else {
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Mes </td> <td> Año </td> <td> Campo1 </td> <td> Campo2 </td> ... </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</a> </td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ... </td> </tr>";
}
echo"</table>";
}
echo "<form name='fo' method='POST' action='datos.php'>"
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
$totalAnios = $anio - mysql_result($datos, 0,'anio');
for ($i = 1; $i <= $totalAnios $i++ ) {
$anios[$i] = $anio - $i;
}
echo "Mes: <select name='mes'> ";
for( $i = 0; $i <= 11; $i ++) {
$UnMes = ($mes+$i) % 12;
echo "<option value='{$meses[ $UnMes ]}'> {$meses[ $UnMes ]} </option>";
}
echo "</select>";
echo "Año: <select name='anio'> ";
for( $i = 0; $i <= 5; $i++ ){
echo "<option value='{$anios[$i]}'> {$anios[ $i ]} </option>";
}
echo "</select>";
echo "<input type='submit' value='Obtener extracto'>";
echo "</form>";
// mysql_close
}
}
?>
No me funciono, sale una ventana en blanco mira el código
inmuebles.php
<?php
session_start();
if (!isset( $_SESSION['Cedula'] )) {
header("Location: login.php");
} else {
// mysql_connect
// mysql_select_db
function Conectarse()
{
if (!($link=mysql_connect("localhost","odbc")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("ventas",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
$link=Conectarse();
$consulta = "SELECT * FROM Inmuebles2 WHERE Cedula = '{$_SESSION['Cedula']}'";
$datos = mysql_query($consulta);
if ($datos == FALSE) {
echo "El propietario no tiene inmuebles.";
} else {
$mesActual = date('m');
$anioActual = date('Y');
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Localizacion </td> </tr>";
while( $inmueble = mysql_fetch_array($datos) ) {
$enlace = "<a href='Datos2.php?id={$inmueble['id_inmueble']}&mes=$mesActual&anio=$anioActual'> ";
echo "<tr> <td> $enlace {$inmueble['id_inmueble']} </a> </td>
<td> {$inmueble['localizacion']} </td> </tr>";
}
echo"</table>";
}
// mysql_close
}
?>
datos2.php
<?php
session_start();
if ( !isset( $_SESSION['Cedula'] ) ) {
header("Location: login.php");
} else {
if ( !isset( $_GET['id'] ) ) {
header('Location: inmuebles.php');
} else {
$id = $_GET['id'];
if (isset($_POST['mes']) ) {
$mes = $_POST['mes'];
} else {
if (!isset($_GET['mes']) ) {
$mes = date('m');
} else {
$mes = $_GET['mes'];
}
}
if (isset($_POST['anio']) ) {
$anio = $_POST['anio'];
} else {
if (!isset($_GET['anio']) ) {
$anio = date('Y');
} else {
$anio = $_GET['anio'];
}
}
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Inmuebles WHERE id_inmueble = $id";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "Inmueble no valido.";
} else {
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Localizacion </td> <td> Metros </td> ... </tr>";
while( $inmueble = mysql_fetch_array($datos) ) {
echo "<tr> <td> {$inmueble['id_inmueble']} </td>
<td> {$inmueble['localizacion']} </td>
<td> {$inmueble['metros']} </td>
<td> ... </td> </tr>";
}
echo"</table>";
}
$consulta = "SELECT * FROM Extractos WHERE id_inmueble = $id AND mes = $mes AND anio = $anio";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "No hay extracto del mes y año seleccionado.";
} else {
echo "<table border=0>";
Echo " <tr> <td> ID </td> <td> Mes </td> <td> Año </td> <td> Campo1 </td> <td> Campo2 </td> ... </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</a> </td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ... </td> </tr>";
}
echo"</table>";
}
echo "<form name='fo' method='POST' action='datos.php'>"
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
$totalAnios = $anio - mysql_result($datos, 0,'anio');
for ($i = 1; $i <= $totalAnios $i++ ) {
$anios[$i] = $anio - $i;
}
echo "Mes: <select name='mes'> ";
for( $i = 0; $i <= 11; $i ++) {
$UnMes = ($mes+$i) % 12;
echo "<option value='{$meses[ $UnMes ]}'> {$meses[ $UnMes ]} </option>";
}
echo "</select>";
echo "Año: <select name='anio'> ";
for( $i = 0; $i <= 5; $i++ ){
echo "<option value='{$anios[$i]}'> {$anios[ $i ]} </option>";
}
echo "</select>";
echo "<input type='submit' value='Obtener extracto'>";
echo "</form>";
// mysql_close
}
}
?>
No me funciona
He probado el código (quitando todo lo referente a la base de datos) y he detectado dos erratas en el código de datos2.php.
El código que tienes es el siguiente:
$consulta = "SELECT * FROM Extractos WHERE id_inmueble = $id AND mes = $mes AND anio = $anio";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "No hay extracto del mes y año seleccionado.";
} else {
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Mes </td> <td> Año </td> <td> Campo1 </td> <td> Campo2 </td> ... </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</a> </td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ... </td> </tr>";
}
echo"</table>";
}
echo "<form name='fo' method='POST' action='datos.php'>"
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
Y tendría que ser el siguiente:
$consulta = "SELECT * FROM Extractos WHERE id_inmueble = $id AND mes = $mes AND anio = $anio";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "No hay extracto del mes y año seleccionado.";
} else {
echo "<table border=0>";
echo " <tr> <td> ID </td> <td> Mes </td> <td> Año </td> <td> Campo1 </td> <td> Campo2 </td> ... </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</a> </td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ... </td> </tr>";
echo"</table>";
}
echo "<form name='fo' method='POST' action='datos.php'>";
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
Como ves, sobra una llave antes de cerrar la tabla y faltaba un ; en la sentencia de la etiqueta form.
Pruébalo ahora a ver si te funciona.
Experto sigue sin funcionarme. No me sale nada. Ayudame con esto por favor ya que esto es lo ultimo que me falta para terminar mi proyecto de tesis y poder graduarme. O dame un correo para enviarte la base de datos y el mismo script para ya modificado
Cordialmente
Sanew
Yo he probado el código sin la base de datos y si me muestra resultados.
Comprueba las siguientes cosas:
- Si rellenas el formulario de login.php y pasas a inmuebles.php sin regresar a login.php, has creado la sesión de forma correcta.
- En inmuebles.php asegúrate que la función Conectarse() funciona y crea la conexión con la base de datos. Revisa el usuario y la contraseña.
- Después de estas dos líneas:
$consulta = "SELECT * FROM Inmuebles2 WHERE Cedula = '{$_SESSION['Cedula']}'";
$datos = mysql_query($consulta);
añade lo siguiente:
echo "Registros = " . mysql_num_rows($datos);
Lo que consigues así es saber el número de registros que te devuelve la consulta.
- ¿Te muestra la lista de propiedades la página inmuebles?
- En la página datos2.php, comprueba si regresa a login.php por no haber sesión, o si regres a inmuebles.php porque los parámetros pasados no sean correctos.
- También tienes que modificar el código para que se conecte a la base de datos, igual que pusiste la unfion conectarse en inmuebles.php, en datos.php tienes que ponerla también y conectarte a la base de datos antes del primer select.
- En el ejemplo que yo te puse, el select consulta la tabla Inmuebles, mientras que en inmuebles.php se está consultando Inmuebles2. Revisa cual es la tabla correcta que tienes que usar.
- También asegúrate que devuelve registros con la función mysql_num_rows.
Si sigue sin funcionarte, averigua en qué página estás, en qué página no te muestra ningún dato, y puedes ir poniendo sentencias del tipo:
echo "Punto de prueba 1";
...
echo "Punto de prueba 2";
...
Pones esas sentencias a lo largo de tu código para ir mostrando por donde pasa y las partes que se ejecutan y así averiguar en donde está fallando. En cuanto llegue a algún sitio que no muestre lo que debería mostrar, revisas esa zona del código.
Después de comprobar el código y revisar todos esos aspectos, cuando sepas en qué página falla, me pones todo el código tal cual lo tengas y lo reviso. También dime qué tendría que mostrar y donde no lo muestra.
La página de login me redirecciona a una página llamada user.php, la cual me dice que he iniciado sesión con usuario xxxx. No me redirecciona a la página inmuebles ni me muestra nada.
Hice que me redireccionara a la página inmuebles y se queda y no muestra nada. Con respecto a la conexión esta bien. Yo utilizo localhost y usuario odbc no tengo contraseña.
Le ingrese lines echo "Registros = " . mysql_num_rows($datos);
y nada no me hace nada.
Hagamos algo regálame tu dirección de email y te envío mi base de datos mysql y las páginas para ver que esta pasando.
Para que te hagas una idea clara te voy a enviar la situación
SISTEMA DE CONSULTA DE EXTRACTO DE PROPIETARIOS
RV INMOBILIARIA SA, es una inmobiliaria que se dedica a la venta, arriendo, y avaluó de inmuebles. En el cual cada vez que un propietario consigna un inmueble para arriendo y este al ser arrendado, el propietario de ese inmueble deberá recibir mensualmente el extracto( que es el avlor girado al propietario por el canon que el inquilino paga, teniendo en cuenta que la inmobiliaria toma el 8.5% del valor de ese canon, que es lo que en el extracto es el concepto o detalle).
En el sistema actualmente, los propietarios solamente pueden consultar los extractos del ultimo mes. Razón por la cual se desea implementar un sistema utilizando base de datos mysql y php de tal manera que mensualmente se vaya alimentando esa base de datos con los extractos de cada mes obteniendo así una base de datos a medida que pasan los meses de extractos anteriores para que el propietario pueda consultar los extractos de los meses anteriores.
El sistema se desea realizar de la siguiente manera:
1. El propietario ingresa a una página del sitio llamada login.php y debe ingresar su cedula y una clave y presionar el botón Ingresar
2. El usuario al darle clic en INGRESAR, el sistema debe validar esa cedula y ese password en la Base de datos de mysql. Si la consulta trae un resultado entonces debe de mostrarle todos los inmuebles que puede tener ese propietario en la página llamada mostrar_inmueble.php, sino lo debe mandar nuevamente al ventana anterior llamada login.
pagina mostrar_inmuebles.
Esta página va mostrar el código de los inmuebles si tiene más de uno sino solamente muestra el que tiene, la dirección, la fecha del extracto y el valor, si el propietario tiene n inmuebles, n inmuebles deben aparecer en esta página.
Pagiga mostrar_inmuebles.php
Codigo_inmueble Dirección Fecha Valor_pagado
012345-01 Calle 78 12-30 Enero 2005 2000
012345-02 Cra 104b126-30 Enero 2005 421000
Que el campo código del inmueble se el campo LINK(enlace) para ver más detalles del extracto de ese inmueble,. El propietario al darle clic sobre algún código de sus inmuebles lo debe enviar a otra página con más detalles de ese extractos (la página se llamara detalle_extracto.php). Y a un lado un combo de los meses de los extractos anteriores si tiene. Sigamos el ejemplo, el inmueble con código 012345-01 el propietario pudo arrendar sui inmueble en mayo y recibir el extracto en el mes de junio de año 2.004 que en ese periodo en que se arrendo, entonces en el combos debe aparecer las fechas desde junio del 2.004 hasta febrero de 2.005 que es el mes en que estamos y así si el otro inmueble fue arrendado en enero del 2.005 solamente me puede mostrar en el combobox los meses de enero y febrero. De tal forma que el propietario pueda seleccionar una fecha de ese combobox y presionar un botón de ver extracto. El diseño de la página es la siguiente:
Código Dirección Valor fecha Detalle concepto
Fecha
Ver Extracto
012345 Calle 78 12ª-30 1800 Enero 2005 Descuento de inmobiliaria 120, valor girado 1800 y otras cosas más
En el combobox selecciona la fecha y presione ver extracto, para mostrar en otra página los detalles de ese extracto en esa fecha seleccionada.
De esta forma es que se quiere implementar el sistema.
José yo te envíe el diseño de mi base de datos, pero si hay que corregirla me dices que campos hay que agregarle o quitarle y yo la hago, ayúdame con el código solamente.
3.
Gracias cordialmente sanew2
Perdona por la tardanza en responder.
Los scripts que te puse anteriormente se ajustan bastante bien a ese enunciado, sólo tienes que realizar pequeñas modificaciones, pero la estructura es la misma.
Tienes el archivo login.php que se encarga de lo siguiente:
- Primero muestra el formulario.
- Cuando se rellena se envía a si mismo, es decir, se mandan los datos mediante POST a login.php.
- Como ya está definida la variable Cedula, se realiza una consulta a la base de datos.
- Si se obtienen resultados, se crean las variables de sesión y mediante header se salta a mostrar_inmueble.php
- Si no se obtienen resultados se vuelve a mostrar el formulario.
El script modificado sería como sigue:
<?php
session_start();
if (isset($_POST['cedula'])) {
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Propietarios WHERE Cedula =
'{$_POST['cedula']}' AND Clave = '{$_POST['clave']}'";
$datos = mysql_query($consulta);
if (mysql_num_rows($resultado) > 0) {
$_SESSION['Cedula'] = $_POST['cedula'];
header("Location: mostrar_inmueble.php");
}
}
?>
echo "<form name='formulario' method='POST'>";
echo "Cedula: <input type='text' name='cedula'> <br>";
echo "Clave: <input type='password' name='clave'> <br>";
echo "<input type='submit' value='Entrar'>";
echo "</form>";
Una vez realizado el proceso de login, se pasa a mostrar los inmuebles del propietario.
- Hay que comprobar si hay una sesión correcta. En caso que no sea este el caso se vuelve a login.php. Esto se hace para asegurarnos que a la página mostrar_inmueble.php se llega después de haber pasado por login.php y haberse logueado correctamente.
- Se realiza una consulta a la base de datos para obtener todos los inmuebles de ese propietario.
- Solo tienes que ir recorriente la lista de inmuebles y mostrándolos junto con el resto de datos que te piden y que tendrás en distintos campos de la bae de datos.
- Por cada inmueble, al mostrar el código tienes que crear un enlace a la página detalle_extracto.php pasándolo mediante GET el parámetro del código de inmueble. Esto te permite mostrar el extracto correspondiente a ese inmueble.
El código de mostrar_inmueble.php sería muy sencillo:
<?php
session_start();
if (!isset( $_SESSION['Cedula'] )) {
header("Location: login.php");
} else {
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Inmuebles WHERE Cedula = '{$_SESSION['Cedula']}'";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "El propietario no tiene inmuebles.";
} else {
echo "<table border=0>";
echo " <tr> <td> Código </td> <td> Dirección </td> <td> Valor </td> <td> Fecha </td> </tr>";
while( $inmueble = mysql_fetch_array($datos) ) {
$enlace = "<a href='./Datos.php?id={$inmueble['codigo_inmueble']}'> ";
echo "<tr> <td> $enlace {$inmueble['codigo_inmueble']} </a> </td>
<td> {$inmueble['direccion']} </td>
<td> {$inmueble['valor']} </td> <td> {$inmueble['fecha']} </td> </tr>";
}
echo"</table>";
}
// mysql_close
}
?>
Ahora viene la parte algo más complicada que es el script detalle_extracto.php. En este script se tienen que realizar las siguientes tareas:
- Se comprueba que hay una sesión válida y en caso de no haberla se va a login.php.
- Como mínimo necesitamos como parámetro GET el código del inmueble que se pasa en el enlace de los inmuebles de mostrar_inmueble.php. Si no lo tenemos no se puede continuar, pero como hay sesión válida se regresa a mostrar_inmueble.php.
- Luego se tiene que calcular el mes y año del extracto a mostrar. Por defecto será el mes y año actuales, es decir, en caso de haber seleccionado en el combo se usará esos valoes.
- Si se ha seleccionado un mes y año en el combo, se han pasado esos valores mediante POST porque son de un formulario. Se usan esos en vez de los valores por defecto.
- Lo siguiente es realizar una consulta a la base de datos obteniendo los datos del extracto correspondiente al inmueble, mes y año seleccionados.
- A continuación se muestran todos esos datos.
- Por último se crea el formulario con los dos combos para seleccionar el año y el mes. Se puede hacer en un solo combo, pero es algo más complicado. Primero realízalo de esta manera y cuando ya te funcione lo modificas para usar un único combo.
Como ves tampoco es tan complicado. El script detalle_extracto.php modificado sería el siguiente:
<?php
session_start();
if ( !isset( $_SESSION['Cedula'] ) ) {
header("Location: login.php");
} else {
if ( !isset( $_GET['id'] ) ) {
header('Location: mostrar_inmueble.php');
} else {
$id = $_GET['id'];
if (isset($_POST['mes']) ) {
$mes = $_POST['mes'];
} else {
if (!isset($_GET['mes']) ) {
$mes = date('m');
} else {
$mes = $_GET['mes'];
}
}
if (isset($_POST['anio']) ) {
$anio = $_POST['anio'];
} else {
if (!isset($_GET['anio']) ) {
$anio = date('Y');
} else {
$anio = $_GET['anio'];
}
}
// mysql_connect
// mysql_select_db
$consulta = "SELECT * FROM Extractos WHERE codigo_inmueble = $id AND mes = $mes AND anio = $anio";
$datos = mysql_query($consulta);
if ($resultado == FALSE) {
echo "No hay extracto del mes y año seleccionado.";
} else {
echo "<table border=0>";
echo " <tr> <td> Codigo </td> <td> Dirección </td> <td> Valor </td> <td> Fecha </td> <td> Detalle </td> <td> Concepto </td> </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</a> </td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ". mysql_result($datos, 0,5) ." </td> </tr>";
}
echo"</table>";
}
echo "<form name='fo' method='POST' action='detalle_extracto.php'>"
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
$totalAnios = $anio - mysql_result($datos, 0,'anio');
for ($i = 1; $i <= $totalAnios $i++ ) {
$anios[$i] = $anio - $i;
}
echo "Mes: <select name='mes'> ";
for( $i = 0; $i <= 11; $i ++) {
$UnMes = ($mes+$i) % 12;
echo "<option value='{$meses[ $UnMes ]}'> {$meses[ $UnMes ]} </option>";
}
echo "</select>";
echo "Año: <select name='anio'> ";
for( $i = 0; $i <= 5; $i++ ){
echo "<option value='{$anios[$i]}'> {$anios[ $i ]} </option>";
}
echo "</select>";
echo "<input type='submit' value='Obtener extracto'>";
echo "</form>";
// mysql_close
}
}
?>
Te he detallado cada script paso a paso. Ves siguiendo esas explicaciones y ya verás como te sale. No tienes porque usar los scripts que te pongo aquí, son de referencia nada más. Tienes que fijarte en la estructura que tienen y seguirla en tus scripts.
Si te encuentras con algún fallo ves probando poco a poco. Sabes la secuencia que tiene que seguir en cada momento y puedes ir siguiendo el código y ver qué parte se ha ejecutado y cual no, así localizas los problemas.
Primero asegúrate que el script de login.php está correcto. Luego continuas con el script mostrar_inmueble probando todos los casos posibles. Y por último pruebas detalle_extracto cuando te funcionen los anteriores.
Buenas tardes experto, cabe decirte que las dos primeras páginas me funcionan bien el problema esta en la tercera, no me muestra nada
Mi base de datos se llama propietarios y contiene tres tablas:
1. Propietarios, extractos, datos, que es como el datalle del extracto.
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","odbc")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("propietarios",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
<?php
session_start();
if ( !isset( $_SESSION['Cedula'] ) ) {
header("Location: login.php");
} else {
if ( !isset( $_GET['id'] ) ) {
header('Location: mostrar_inmueble.php');
} else {
$id = $_GET['id'];
if (isset($_POST['mes']) ) {
$mes = $_POST['mes'];
} else {
if (!isset($_GET['mes']) ) {
$mes = date('m');
} else {
$mes = $_GET['mes'];
}
}
if (isset($_POST['anio']) ) {
$anio = $_POST['anio'];
} else {
if (!isset($_GET['anio']) ) {
$anio = date('Y');
} else {
$anio = $_GET['anio'];
}
}
// mysql_connect
// mysql_select_db
$link=Conectarse();
$consulta = "SELECT * FROM Extractos WHERE cod_inm = $id AND mes = $mes AND annio = $anio";
$datos = mysql_query($consulta);
if ($datos == FALSE) {
echo "No hay extracto del mes y año seleccionado.";
} else {
echo "<table border=0>";
Echo " <tr> <td> Código </td> <td> Dirección </td> <td> Valor </td> <td> Fecha </td> <td> Detalle </td> <td> Concepto </td> </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</a> </td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ". mysql_result($datos, 0,5) ." </td> </tr>";
}
echo"</table>";
}
echo "<form name='fo' method='POST' action='detalle_extracto.php'>"
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
$totalAnios = $anio - mysql_result($datos, 0,'anio');
for ($i = 1; $i <= $totalAnios $i++ ) {
$anios[$i] = $anio - $i;
}
echo "Mes: <select name='mes'> ";
for( $i = 0; $i <= 11; $i ++) {
$UnMes = ($mes+$i) % 12;
echo "<option value='{$meses[ $UnMes ]}'> {$meses[ $UnMes ]} </option>";
}
echo "</select>";
echo "Año: <select name='anio'> ";
for( $i = 0; $i <= 5; $i++ ){
echo "<option value='{$anios[$i]}'> {$anios[ $i ]} </option>";
}
echo "</select>";
echo "<input type='submit' value='Obtener extracto'>";
echo "</form>";
// mysql_close
}
}
?>
La tabla extractos contiene los siguientes campos.
cod_extracto, annio, mes, cod_inm, consecutivo, cedula, nombre, agencia, seguro.
Cod_extracto, es un autonumerico del extracto que es unico, annio es el año actual del extracto, cod_inm es el codigo del inmueble asigando por la inmobiliaria, consecutivo es un nemuero que se inicia con 01 y asi sucesivamente cuando el usuario tiene varios inmuebles, cedula es la cedula del propietario y nombre es el nombre del propietario, agencia es la sucursal a la cual pertenece en este caso se manejan 6 sucursales que van de 1 al 6, y seguro el tipo deseguro.
Hay otra tabla que llamo datos y que es paracticamente los detalles de extracto del inmueble seleccionado.
El cual contiene los siguientes campos.
cod_extracto, cuenta, detalle, valor
cod_extracto, se relaciona con cod_ext dela tabla extracto, cuenta es un número de cuenta que maneja la inmobiliaria, que son varios para consignar, de todas formas eso sale de un arrchivo, plano, detalle es cual es el descuento osea el nombre de la cuenta y valor es cuanto se le descontó.
Las dos primeras páginas me funcionan la tercera no, te mando el código de la segunda y la tercera ahora ok.
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","odbc")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("propietarios",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
<?php
session_start();
$link=Conectarse();
if (!isset( $_SESSION['Cedula'] )) {
header("Location: login.php");
} else {
$consulta = "SELECT cod_extracto, annio, mes, cedula, cod_inm, consecutivo, nombre FROM extractos WHERE Cedula = '{$_SESSION['Cedula']}'";
$datos = mysql_query($consulta);
if ($datos == FALSE) {
echo "El propietario no tiene inmuebles.";
} else {
echo "<table border=0>";
Echo " <tr> <td> Código </td> <td> Cedula </td> <td> Mes </td> <td> Código del inmuebles </td><td> Cedula </td><td> Nombre del Propietario </td> </tr>";
while( $inmueble = mysql_fetch_array($datos) ) {
$enlace = "<a href='./Datos.php?id={$inmueble['cod_extracto']}'> ";
echo "<tr> <td> $enlace {$inmueble['cod_extracto']} </a> </td>
<td> {$inmueble['cedula']} </td>
<td> {$inmueble['annio']} </td> <td> {$inmueble['mes']} </td><td> {$inmueble['cod_inm']} </td><td> {$inmueble['consecutivo']} </td> <td> {$inmueble['nombre']} </td> </tr>";
}
echo"</table>";
}
// mysql_close
}
?>
Y la tercera es la siguiente
Buenas Tardes experto si mejor te parece, regálame tu cuenta de correo electrónico, donde yo te envío la base de datos y los archivos php, y me ayudas con eso de esta forma no te molestaría más con este tema, Te agradezco ya que esto hace parte de mi tesis y por esto no me quieren firmar en la empresa hasta que yo le termine esto
Gracias
Cordialmente
sanew
Bogotá-Colombia
Perdona por haber tardado tanto tiempo en responder.
Tienes tres páginas: login.php, mostrar_inmueble.php y detalle_extracto.php.
La página primera es muy sencilla y te funciona, sólo crea la sesión validando al usuario.
La página mostrar_inmueble es la última que me has puesto. En ella veo que creas la función Conectarse(), luego compruebas si está definida la variable Cedula. Pasas a buscar en la tabla extractos y muestras los resultados obtenidos. A la hora de mostrar estos resultados creas un enlace mediante la etiqueta <a href='./Datos.php, pero no tendría que apuntar a datos sino a detalle_extracto.php. Revisa ese detalle porque quizá sea eso el problema. Es muy extraño que no te muestre nada, algo debería mostrar aunque sea errores.
Y otro detalle es al hacer las consultas. Cuando pones un dato aunque sea numérico, puedes encerrarlo entre comillas, especialmente cuando insertas datos en la base de datos. Pruébalo por si eso también te falla. Por ejemplo en la siguiente consulta:
$consulta = "SELECT * FROM Extractos WHERE cod_inm = $id AND mes = $mes AND annio = $anio";
Puedes poner lo siguiente:
$consulta = "SELECT * FROM Extractos WHERE cod_inm = $id AND mes = '$mes' AND annio = '$anio'";
Buenos días, experto, me gustaría, mejor que me regalaras tu cuenta de correo electrónico, para enviarte las páginas y la base de datos con los los datos de esta forma cerraríamos esta consulta y así me ayudas con esto que es parte de mi tesis y se me esta acabanado el tiempo para entregarlo,
Te agredzco y que pena contigo en ponerte en esto, Gracias
sanew
Podemos hacer una cosa, sube los archivos a un servidor y me pones la dirección para que vea que es lo que está ocurriendo. También puedes crear una página con enlaces a los archivos para que pueda descargármelos y verlos.
Si no tienes un servidor donde subirlos puedes crearte una cuenta en lycos que te da espacio web con php y mysql de forma gratuita.
entra por ftp:\\www.rvinmobiliariasa.com/bubebu
Entras con usuario:rvinmobiliariasa
password: ftping04
Hay te colocare la base de datos,
Experto yo quiero en página detalle_extrato, me salgan datos de la tabla extractos y datos de la tabla datos, por ejemplo quiero que me sume todos los campos débitos y y todos los campos créditos por cada inmueble y me saque la diferencia entre los dos después de haberlos sumados.
Cordialmente
SAnew
Bogotá-Colombia
Siento que este dando tantos problemas pero no consigo entrar a la dirección que me has dado.
Ok entonces te voy a dar permiso total para que veas todo mi web.
entra por ftp:\\www.rvinmobiliariasa.com
Usuario: rvinmobiliariasa
password:ftping04
Y buscas la carpeta BUBEBU
Te agradezco
Ya he tenido tiempo de revisar el código y he modificado el archivo d_extracto.php. El resultado es el siguiente:
<?php
session_start();
if (!isset( $_SESSION['Cedula'] ) ) {
header("Location: login.php");
exit;
}
if (!isset( $_GET['id'] ) )
{
header('Location: mostrar_inmueble.php');
exit;
}
function Conectarse()
{
if (!($link=mysql_connect("localhost","root",'')))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("propietarios",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$id = $_GET['id'];
if (isset($_POST['mes']) ) {
$mes = $_POST['mes'];
} else {
if (!isset($_GET['mes']) ) {
$nm = date('m');
} else {
$nm = $_GET['mes'];
}
}
if (isset($_POST['anio']) ) {
$anio = $_POST['anio'];
} elseif (!isset($_GET['anio']) ) {
$anio = date('Y');
} else {
$anio = $_GET['anio'];
}
$ced=$_SESSION["Cedula"];
$link=Conectarse();
$consulta = "SELECT * FROM extractos WHERE cedula='$ced' AND mes = $nm AND annio = '$anio'";
echo $consulta;
$datos = mysql_query($consulta,$link);
if ( mysql_num_rows($datos) <= 0 )
{
echo "No hay extracto del mes y año seleccionado.";
}
else
{
echo "<table border=0>";
echo " <tr> <td> Codigo Extracto </td> <td> Año </td> <td> Mes </td> <td> Codigo Inmueble </td> <td> Consecutivo </td> <td> Cedula </td> <td> Nombre </td> <td> Cedula_inq </td> <td> nombre_inq </td> <td> agencia </td> <td> seguro </td> </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ". mysql_result($datos, 0,5) ." </td>
<td> ". mysql_result($datos, 0,6) ." </td>
<td> ". mysql_result($datos, 0,7) ." </td>
<td> ". mysql_result($datos, 0,8) ." </td>
<td> ". mysql_result($datos, 0,9) ." </td>
<td> ". mysql_result($datos, 0,10) ." </td>
</tr>";
echo "</table>";
}
echo "<form name='fo' method='GET' action='d_extracto.php'>";
?>
<form name='fo' method='GET' action='d_extracto.php'>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<?php
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
$row=mysql_fetch_array($datos);
$tanio=$row["annio"];
$totalAnios = $anio - $tanio;
for ($i = 1; $i <= $totalAnios;$i++ )
{
$anios[$i] = $anio - $i;
}
echo "Mes: <select name='mes'> ";
for( $i = 0; $i <= 11; $i ++) {
$UnMes = ($mes+$i) % 12;
$nm=$i+1;
echo "<option value='$nm'> {$meses[ $UnMes ]} </option>";
}
echo "</select>";
echo "Año: <select name='anio'> ";
for( $i = 0; $i <= 5; $i++ ){
echo "<option value='{$anios[$i]}'> {$anios[ $i ]} </option>";
}
echo "</select>";
echo "<input type='submit' value='Obtener extracto'>";
?>
</form>
</body>
</html>
Ahora muestra todos los campos de la tabla extracto. Ten en cuenta un detalle: la primera vez que se llama a este script como se ha pasado un mes, se coge el mes actual, y en tu base de datos no tienes ningún campo con el mes actual, tienes que cambiarlo a diciembre de 2002 para que se vean los resultados.
Perfecto a hora si, tengo una pequeña duda, esta linea que hace
$UnMes = ($mes+$i) % 12;
Y como hago yo en mysql para que por cada propietario me salga la suma de los débitos de su inmueble en una columna y e otra la suma de los créditos y me a parezca una columna que me diga total a pagar=sumatotaldebitos-sumatotalcreditos
Otra duda como hago para mezclar los datos de las dos tablas de tal forma que me saquen datos de la tabla datos y de la tabla extractos. Eso es la ultima duda para finalizar la pregunta
El operador % devuelve el resto de una división. A la variables $mes le vas sumando $i que se va incrementando. Por ejemplo:
si $mes = 3 y $i = 8, el resultado de esa operación será 11,
si $mes = 3 y $i = 9, el resultado en $UnMes de esa operación será 0
La línea
$UnMes = ($mes+$i) % 12
Está dentro de un bucle y sirve para ir obteniendo en $UnMes números que van siempre de 0 hasta 11. En cuando la suma de $mes y $i supera 11, el resultado obtenido comienza de nuevo desde 0.
Para mezclar los datos de las dos tablas es necesario que tengan un campo en común. En tu caso ese campo es cod_extracto (no estoy seguro que lo llames así porque ahora no puede ver la base de datos). Tendrías que sustituir la consulta que realizas por:
$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' AND mes = $nm AND annio = '$anio'";
Acuérdate que para mostrar el resto de campos tienes que poner más columnas y más sentencias mysql_result. Tantas como campos quieras mostrar.
El otro asunto de las sumas no me queda muy claro. En detalle de extractos solo muestras el detalle del extracto de un mes y año determinado. Supongo que las sumas que pides sería de todos los meses de un determinado extracto. Para hacer esto tendrías que realizar otra consulta de la siguiente manera:
$consulta = "SELECT SUM(debito), SUM(credito) FROM datos WHERE cod_extracto = '$id';
$datos = mysql_query($consulta,$link);
if ( mysql_num_rows($datos) <= 0 )
{
echo "Error";
} else {
$sumDebido = mysql_result($datos, 0,0);
$sumCredito = mysql_result($datos, 0,1);
echo "<br> Total Debitos: $sumDebido";
echo "<br> Total Creditos: $sumCredito";
echo "<br> Total a pagar: ". ($sumDebido - $sumCredito);
}
Pruébalo y me comentas.
Ya casi tienes acabada la tesis. Animo.
Todo funciona perfectamente, cuando yo inicializo, perfecto me dice que no tengo inmuebles en esa fecha por lo que el toma la fecha actual, luego tomo la fecha diciembre año 2.002 y listo me saca los resultados, pero si tomo enero del 2.002 hago consulta y luego nuevamente tomo dicmebre y año 2.002 es para que me saque los resultados de diciembre que anteriormente me saco y en la consulta me sale lo siguiente:
SELECT * FROM extractos WHERE cedula='56487' AND mes = 11 AND annio = '2002'
Ya que yo escribo la consulta para ver que es lo que saca
Ayudame con esto para finalizar y gracias por lo de mysql. Eso es lo que necesito
Sanew
Bohota-Colombia
He realizado varias pruebas y no consigo reproducir tu situación:
Al entrar aparece el detalle de los extractos del mes 03 y año 2005. Dice que no hay extracto de ese mes y año.
Luego lo cambio a diciembre de 2002 y me saca el detalle de un extracto. En el combo mes me aparece enero y en año 2002.
Si ejecuto de nuevo la consulta sin cambiar nada me intenta buscar extractos en enero de 2002 y como no hay dice el correcpondiente mensaje indicándolo.
Ahora cambio de nuevo a diciembre de 2002 y me vuelve a sacar el mismo detalle del extracto que correcponde con ese mes, año y cedula.
En ningún momento me saca mes 11. Explicame los pasos exactos que sigues para intentar reproducirlos y ver lo que está ocurriendo.
Gracias por tener en cuenta mis dudas, señor Bubebu, he colocado el código nuevamente en la dirección
ftp:\\www.rvinmobiliariasa.com
usuario: rvinmobiliariasa
password: ftping04
Hay encontraras los archivos y la base de datos que ahora es diferente a la que te envíe anteriormente, con relación a datos +- reales en una carpeta cuyo nombre es bubebu
Te comento mi situación para terminar.
Yo quiero relacionar las dos tablas de tal manera que me muestre campos de la tabla extracto y campos de la tabla datos, como asu vez me muestre en la página php el resultado de la suma de los campos débitos y la suma de los campos créditos y que me muestre un valor en la página con la diferencia entre sumadebitos-sumacreditos. Yo hice la consulta en el pront de mysql y me funciona pero al pasarlo a al código en la página php no me funciona.
Lo que yo te comentaba con relación al combobox es que en la consulta que en la consulta por ejemplo yo selecciono el mes digamos enero año 2003 y le doy consultar al reañlizar la consulta en la pantalla siguiente me sale combox mes febrero año 2003
Ayudame con esto por favor ya que quiero salir de esto lo más pronto posible y no causarte tantas molestias
Señor Bubebu, ya pude solucionar el problema que te comente anteriormente, pero lo que yo no comprendo es porque los meses en ese combox son variantes, has la prueba seleccionando un mes cualquiera y haces la consulta.
Por ejemplo al inciar la página en el combobox me salen los meses desde enero hasta diciembre en orden luego tomo otro mes diferente y el orden del combobox cambia has la prueba consultado primero enero y luego diciembre y posteriormente enero en la posición en la que te la muestra y veraz que no te saca ningún resultado, pero si seleccionas ese valor del primer combobox y miras la consulta que yo escribo que aparece en la página la consulta es diferente.
Hay te va nuevmanet el código
Anoche solucione el inconveniente que tenia también, tengo otra duda pero voy a tratar de solucionarla, este fin de semana, de no poder, te cuento,. Como me fue
oK
Siento no haber podido dedicar apenas tiempo a todoexpertos y no haberte podido ayudar. Me alegra mucho que ya hayas solucionado los problemas que tenias. Y no dudes en preguntarme cualquier cosa que te vaya surgiendo, intentare ir sacando tiempo para mirarlo y ayudarte.
Si no me equivoco, te refieres al código de detalle_extractos.php.
En ese código buscas los extractos del mes y año actual, y lo que quieres es buscar los últimos registros insertados. En este caso lo que tienes que hacer es añadir un nuevo campo a la base de datos indicando la fecha en la que se ha introducido cada registro. Luego modificas la consulta de la forma siguiente:
$numUltimosRegistros = 5; // mostrar últimos 5 registros
$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' ORDER BY fecha DES LIMIT 1," . $numUltimosRegistros;
Esta consulta te devolvería los 5 últios registros introducidos. Tienes el campo fecha en la tabla que indica la fecha cuando se inserto el registro en la base de datos. Se ordena por ese campo de forma descendente.
Esa sería la primera consulta. Pero luego tienes los dos combos con día y mes. Después de seleccionar día y mes, y solicitar nuevos datos con esos valores en los combos, la consulta que tienes que usar es la que tenías antes, es decir:
$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' AND mes = $nm AND annio = '$anio'";
Ponte a realizar esa modificación y si encuentras algún problema me lo comentas.
Como hago para que al loguearme el me saque los últimos registros introducidos en la base de datos correspondientes a ese propietario.ya que actualmente se esta haciendo con la fecha actual y así no lo uqieren ellos si no con los últimos registros de la base de datos por su puesto de de ese peropietario, y que luego de tal manera que de salida muestre algo y que luego si puedan seleccionar los meses que ellos quieran consultar ayudame para cerrar esta pregunta ya que eso es lo único que me falta lo de más es maquillar esa página para verla bonita, gracias
sanew
bogotá colombia
Experto provee con eso y no me funciono, ayudame, te envío los tres archivos a mi servidor web en la carpeta bubebu con una bd más actualizada y ayudame con esto el al momento de seleccionar(darle clic) a un inmueble en la página mostrar inmueble me mande a la página d_extracto.php con el resultado de la ultima fecha. Yo manejo en la base de datos un campo que se llama annio y un campo que se llama mes, quiero que por ahí sea la idea.
¿Es qué como tu lo hiciste me saca es la fecha actual pero que pasa cuando en la bd no hay todavía un campo con esa fecha actual? No muestra nada.
Ayudame
el usuarioes: rvinmobiliariasa
password: ftping04
Gracias
sanew
bogotá - colombia
En la página login.php entras como usuario 56487
clave:sanew
Experto provee con eso y no me funciono, ayudame, te envío los tres archivos a mi servidor web en la carpeta bubebu con una bd más actualizada y ayudame con esto el al momento de seleccionar(darle clic) a un inmueble en la página mostrar inmueble me mande a la página d_extracto.php con el resultado de la ultima fecha. Yo manejo en la base de datos un campo que se llama annio y un campo que se llama mes, quiero que por ahí sea la idea.
¿Es qué como tu lo hiciste me saca es la fecha actual pero que pasa cuando en la bd no hay todavía un campo con esa fecha actual? No muestra nada.
Ayudame
el usuarioes: rvinmobiliariasa
password: ftping04
Gracias
sanew
bogotá - colombia
Últimamente estoy demasiado ocupado y no tengo apenas tiempo para todoexpertos.
He entrado en tu servidor y no he encontrado los archivos. Te voy a poner las modificaciones que he realizado sobre d_extracto.php.
Solo hay que modificar la consulta:
$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' AND mes = $nm AND annio = '$anio'";
por:
$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' ORDER BY annio, mes DESC";
De esta forma obtienes todos los detalles de extractos de esa cedula y los ordenas por año y mes en orden descendiente. Luego se muestran los datos sólo del primer registro obtenido.
El código completo que tengo sería el siguiente:
<?php
session_start();
if (!isset( $_SESSION['Cedula'] ) ) {
header("Location: login.php");
exit;
}
if (!isset( $_GET['id'] ) )
{
header('Location: mostrar_inmueble.php');
exit;
}
function Conectarse()
{
if (!($link=mysql_connect("localhost","root",'')))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("propietarios",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$id = $_GET['id'];
if (isset($_POST['mes']) ) {
$mes = $_POST['mes'];
} else {
if (!isset($_GET['mes']) ) {
$nm = date('m');
} else {
$nm = $_GET['mes'];
}
}
if (isset($_POST['anio']) ) {
$anio = $_POST['anio'];
} elseif (!isset($_GET['anio']) ) {
$anio = date('Y');
} else {
$anio = $_GET['anio'];
}
$ced=$_SESSION["Cedula"];
$link=Conectarse();
//$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' AND mes = $nm AND annio = '$anio'";
$consulta = "SELECT * FROM extractos E, datos D WHERE E.cod_extracto = D.cod_extracto AND cedula='$ced' ORDER BY annio, mes DESC";
echo $consulta;
$datos = mysql_query($consulta,$link);
if ( mysql_num_rows($datos) <= 0 )
{
echo "No hay extractos.";
} else {
echo "<table border=0>";
echo " <tr> <td> Codigo Extracto </td> <td> Año </td> <td> Mes </td> <td> Codigo Inmueble </td> <td> Consecutivo </td> <td> Cedula </td> <td> Nombre </td> <td> Cedula_inq </td> <td> nombre_inq </td> <td> agencia </td> <td> seguro </td> </tr>";
echo "<tr> <td> " . mysql_result($datos, 0,0) . "</td>
<td> ". mysql_result($datos, 0,1) ."</td>
<td> ". mysql_result($datos, 0,2) ." </td>
<td> ". mysql_result($datos, 0,3) ." </td>
<td> ". mysql_result($datos, 0,4) ." </td>
<td> ". mysql_result($datos, 0,5) ." </td>
<td> ". mysql_result($datos, 0,6) ." </td>
<td> ". mysql_result($datos, 0,7) ." </td>
<td> ". mysql_result($datos, 0,8) ." </td>
<td> ". mysql_result($datos, 0,9) ." </td>
<td> ". mysql_result($datos, 0,10) ." </td>
</tr>";
echo "</table>";
}
echo "<form name='fo' method='GET' action='d_extracto.php'>";
?>
<form name='fo' method='GET' action='d_extracto.php'>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<?php
$meses = array ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre' );
$anios = array ( $anio );
$row=mysql_fetch_array($datos);
$tanio=$row["annio"];
$totalAnios = $anio - $tanio;
for ($i = 1; $i <= $totalAnios;$i++ )
{
$anios[$i] = $anio - $i;
}
echo "Mes: <select name='mes'> ";
for( $i = 0; $i <= 11; $i ++) {
$UnMes = ($mes+$i) % 12;
$nm=$i+1;
echo "<option value='$nm'> {$meses[ $UnMes ]} </option>";
echo "<option value='{$anios[$i]}'> {$anios[ $i ]} </option>";
}
echo "</select>";
echo "<input type='submit' value='Obtener extracto'>";
?>
</form>
</body>
</html>
Experto buenos días. Con seguridad entre por ftp a www.rvinmobiliariasa.com
Usuario:rvinmobiliariasa
Contraseña:ftping04
Experto buenos días. Con seguridad entre por ftp a www.rvinmobiliariasa.com
Usuario:rvinmobiliariasa
Contraseña:ftping04
Buscar la carpeta pruebas donde estará las tres páginas en php y la bd comprimida
OK
Gracias
Con esa instrucción ordenas los registros por año y luego por mes en orden descendente.
Pero esto no los agrupa, aunque tampoco lo necesitas porque sólo te vas a quedar con el primer registro, que va a ser el que muestres. Si fueses a mostrar más si tendría sentido agruparlos.
Yo puedo ordernar y luego agrupar. utilizarndo esta instrucción
$consulta = "SELECT cod_extracto,cedula, cod_inm, mes, annio,consecutivo, dir_inmueble, valorporpagar, nombre FROM extratos WHERE cod_inm = '{$_SESSION['Cedula']}' order by annio, mes DESC ";
Gracias
Si necesito ordenarlos por mes y agruparlos por el campo consecutivo ya que el campo cod_inm, es un numero que se le asigna al usuario en caso de tener más de un inmueble
se combina el cod_inm+consecutivo
ejemplp
005022+01
005022+02
Este propietario tené dos inmuebles por esa razón es que quiero ordenar por mes y por consecutivo
Gracias como lo hago
En ese caso si es necesario agrupar. Lo puedes hacer con la siguiente consulta:
$consulta = "SELECT cod_extracto,cedula, cod_inm, mes, annio,consecutivo, dir_inmueble, valorporpagar, nombre FROM extratos WHERE cod_inm = '{$_SESSION['Cedula']}' GROUP BY consecutivo ORDER BY annio, mes DESC";
Gracias por tu ayuda, me gustaría estar en contacto con vos ya que para mi concepto eres el mejor experto. Si gustas y tu respuesta es aceptable, mi correo es [email protected] Gracias. OK

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas