Inicio > PHP > bubebu > base de datos en mysql y php

base de datos en mysql y php

Experto:
Usuario:
Fecha: 29/04/2005
Valoración: (5,00 sobre 5) Categoría: PHP
09/02/2005
sanewilman2, usuario preguntando en PHP
Usuario
Buenos Dias Experto. Tengo la siguiente duda.

Como puedo hacer lo siguiente en php y mysql. Yo necesesito crear una base de datos que contenga informacion 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 traves de la pagina puedan consultar los ultimos 10 extractos que ellos quieran. Digamos, que ellos quieran conultar enero, entonces atraves de un combobox seleccione el mes que deseen y en otra pagina le muestre todos los detalles de ese estracto correspondiente al mes que el navegante selecciono.

Gracias.

Atentamente,

Wilman
Bogota - Colombia
14/02/2005
sanewilman2, experto respondiendo en PHP
Experto
Hola

Espero que quede resuelto con la otra consulta que me has echo.

Si no es así me lo dices.

Saludos.
14/02/2005
sanewilman2, usuario preguntando en PHP
Usuario
Buenas tardes experto.

No eso no es lo que yo quiero.
Te cuento de una manera mas 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 nostros por ejemplo lo manejamos asignandole por jemplo el codigo 012345-01, en caso que tenga un segundo inmueble el codigo sera 012345-02 y asi a medida que un propietario tenga mas inmuebles.
enonces lo que se quiere es que el propietario atraves de la pagina, digite su cedula y su clave y pueda entrar al sistema y a su vez le muestre una pagina 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 ahi y en otra pagina le muestre la infromacion de ese inmueble. Pero que tambien tenga la opcion de poder mostrarle informacion de los extractos de ese inmueble para los meses anteriores, es por eso que cuando salga los inmuebles de los propietarios tambien me salga un combobox para seleccionar el mes que el quiera ver detalles de su extracto anterior. Por ejemlo, enero, feb, marzo, abril, mayo....
y si quiere ver informacion de mes actual que tambien lo pueda ver.

Gracias

Cordialmente,
Sanew
15/02/2005
sanewilman2, experto respondiendo en PHP
Experto
Hola

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 tambien 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
}
}
?>

Saludos.
16/02/2005
sanewilman2, usuario preguntando en PHP
Usuario
No me funciono, sale una ventana en blanco mira el codigo
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
17/02/2005
sanewilman2, experto respondiendo en PHP
Experto
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.

Pruebalo ahora a ver si te funciona.

Saludos.
17/02/2005
sanewilman2, usuario preguntando en PHP
Usuario
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
18/02/2005
sanewilman2, experto respondiendo en PHP
Experto
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 funcion Conectarse() funciona y crea la conexión con la base de datos. Revisa el usuario y la contraseña.

- Despues 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.

- Tambien tienes qe 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 tambien 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.

- Tambien 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 algun sitio que no muestre lo que debería mostrar, revisas esa zona del código.

Despues 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. Tambien dime qué tendría que mostrar y donde no lo muestra.

Saludos.
18/02/2005
sanewilman2, usuario preguntando en PHP
Usuario
La pagina de login me redirecciona a una pagina llamada user.php, la cual me dice que he iniciado sesion con usuario xxxx. No me redirecciona a la pagina inmuebles ni me muestra nada.
Hice que me redireccionara a la pagina inmuebles y se queda y no muestra nada. con respecto a la conexion 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 regalame tu direccion de email y te envio mi base de datos mysql y las paginas para ver que esta pasando.

Para que te hagas una idea clara te voy a enviar la situacion
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 debera 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 estracto es el concepto o detalle).

En el sistema actualmente, los propietarios solamente pueden consultar los extractos del ultimo mes. Razon 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 asi 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 pagina del sitio llamada login.php y debe ingresar su cedula y una clave y presionar el boton 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 pagina llamada mostrar_inmueble.php, sino lo debe mandar nuevamente al ventana anterior llamada login.


pagina mostrar_inmuebles.

Esta pagina va mostrar el codigo de los inmuebles si tiene mas 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 pagina.










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 codigo del inmueble se el campo LINK(enlace) para ver mas detalles del extracto de ese inmueble,. El propietario al darle clic sobre algun codigo de sus inmuebles lo debe enviar a otra pagina con mas detalles de ese extractos (la pagina 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 codigo 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 asi 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 boton de ver extracto. El diseño de la pagina es la siguiente:

Codigo Dirección Valor fecha Detalle concepto
Fecha







Ver Extracto

012345 Calle 78 12ª-30 1800 Enero 2005 Descuento de inmobiliria 120, valor girado 1800 y otras cosas mas



En el combobox selecciona la fecha y presione ver extracto ,para mostrar en otra pagina 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
25/02/2005
sanewilman2, experto respondiendo en PHP
Experto
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 envia 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 despues de haber pasado por login.php y haberse logeado 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 mostrandolos 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 pasandolo 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 formualrio. 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 realizalo 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 mas. Tienes que fijarte en la estructura que tienen y seguirla en tus scripts.

Si te encuentras con algun 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.

Saludos.
07/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
Buenas tardes experto, cabe decirte que las dos primeras paginas me funcionan bien el proble 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> 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
}
}
?>
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 siguintes campos.

cod_extracto,cuenta, detalle, valor

cod_extracto, se relaciona con cod_ext dela tabla extracto, cuenta es un nuemro 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 desconto.

las dos priemras paginas me funcionan la tercera no, te mando el codigo de la segunta 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> Codigo 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
08/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
Buenas Tardes experto si mejor te parece, regalame tu cuenta de correo electronico, donde yo te envio la base de datos y los archivos php, y me ayudas con eso de esta forma no te molestaria mas con este tema, Te agredezco 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
BOGOTA-COLOMBIA
11/03/2005
sanewilman2, experto respondiendo en PHP
Experto
Hola

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. Pruebalo por si eso tambien 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'";

Saludos.
14/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
Buenos dias, experto, me gustaria, mejor que me regalaras tu cuenta de correo electronico, para enviarte las paginas y la base de datos con los los datos de esta forma cerrariamos esta consulta y asi 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
15/03/2005
sanewilman2, experto respondiendo en PHP
Experto
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 descargarmelos 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.

Saludos.
15/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
entra por ftp:\\www.rvinmobiliariasa.com/bubebu

entras con usuario:rvinmobiliariasa
password: ftping04

hay te colocare la base de datos,

Experto yo quiero en pagina detalle_extrato, me salgan datos de la tabla extractos y datos de la tabla datos, por ejemplo quiero que me sume todos los campos debitos y y todos los campos creditos por cada inmueble y me saque la diferencia entre los dos despues de haberlos sumados.

Cordialmente
SAnew
Bogota-Colombia
16/03/2005
sanewilman2, experto respondiendo en PHP
Experto
Siento que este dando tantos problemas pero no consigo entrar a la dirección que me has dado.

Saludos.
16/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
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
17/03/2005
sanewilman2, experto respondiendo en PHP
Experto
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 ningun campo con el mes actual, tienes que cambiarlo a diciembre de 2002 para que se vean los resultados.

Saludos.
17/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
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 debitos de su inmueble en una columna y e otra la suma de los creditos 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
18/03/2005
sanewilman2, experto respondiendo en PHP
Experto
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í pq ahora no puede ver la base de datos). Tendrias 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'";

Acuerdate 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);
}


Pruebalo y me comentas.
Ya casi tienes acabada la tesis. Animo.
18/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
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 sgte:
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
22/03/2005
sanewilman2, experto respondiendo en PHP
Experto
Hola de nuevo

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.

Saludos.
31/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
Gracias por tener en cuenta mis dudas, señor Bubebu, he colocado el codigo nuevamente en la direccion
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 envie anteriormente, con relacion a datos +- reales en una carpeta cuyo nombre es bubebu

Te comento mi situacion 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 pagina php el resultado de la suma de los campos debitos y la suma de los campos creditos y que me muestre un valor en la pagina con la diferencia entre sumadebitos-sumacreditos. Yo hice la consulta en el pront de mysql y me funciona pero al pasarlo a al codigo en la pagina php no me funciona.

Lo que yo te comentaba con relacion 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 mas pronto posible y no causarte tantas molestias
31/03/2005
sanewilman2, usuario preguntando en PHP
Usuario
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 pagina en el combobox me salen los meses desde enero hasta dicienbre 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 posicion en la que te la muestra y veraz que no te saca ningun resultado, pero si seleccionas ese valor del primer combobox y miras la consulta que yo escribo que aparece en la pagina la consulta es diferente.

Hay te va nuevmanet el codigo
01/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Anoche solucione el inconveniente que tenia tambien, tengo otra duda pero voy a tratar de solucionarla, este fin de semana, de no poder, te cuento,. como me fue

oK
03/04/2005
sanewilman2, experto respondiendo en PHP
Experto
Hola

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.

Saludos.
06/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Como hago para que al loguearme el me saque los ultimos regitros introducidos en la base de datos correspondientes a ese propietario.ya que actualmente se esta haciendo con la fecha actual y asi no lo uqieren ellos si no con los ultimos 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 unico que me falta lo de mas es maquillar esa pagina para verla bonita, gracias

sanew
bogota colombia
06/04/2005
sanewilman2, experto respondiendo en PHP
Experto
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 dia y mes. Después de seleccionar dia 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 algun problema me lo comentas.


Saludos.
07/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Experto probee con eso y no me funciono, ayudame, te envio los tres archivos a mi servidor web en la carpeta bubebu con una bd mas actualizada y ayudame con esto el al momento de seleccionar(darle clic) a un inmueble en la pagina mostrar inmueble me mande a la pagina 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 ahi sea la idea.

es que como tu lo hicistes me saca es la fecha actual pero que pasa cuando en la bd no hay todavia un campo con esa fecha actual? no muestra nada.

ayudame

el usuarioes: rvinmobiliariasa
password: ftping04

gracias

sanew
bogota - colombia
07/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
en la pagina login.php entras como usuario 56487
clave:sanew
Experto probee con eso y no me funciono, ayudame, te envio los tres archivos a mi servidor web en la carpeta bubebu con una bd mas actualizada y ayudame con esto el al momento de seleccionar(darle clic) a un inmueble en la pagina mostrar inmueble me mande a la pagina 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 ahi sea la idea.

es que como tu lo hicistes me saca es la fecha actual pero que pasa cuando en la bd no hay todavia un campo con esa fecha actual? no muestra nada.

ayudame

el usuarioes: rvinmobiliariasa
password: ftping04



gracias

sanew
bogota - colombia
21/04/2005
sanewilman2, experto respondiendo en PHP
Experto
Hola

Ultimamente 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 "</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>


Saludos.
23/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Yo puedo ordernar y luego agrupar. utilizarndo esta instruccion
$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
23/04/2005
sanewilman2, experto respondiendo en PHP
Experto
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.

Saludos.
23/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Experto buenos dias. Con seguridad entre por ftp a www.rvinmobiliariasa.com
usuario:rvinmobiliariasa
contraseña:ftping04
23/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Experto buenos dias. Con seguridad entre por ftp a www.rvinmobiliariasa.com
usuario:rvinmobiliariasa
contraseña:ftping04

buscar la carpeta pruebas donde estara las tres paginas en php y la bd comprimida

OK

Gracias
23/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
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 mas de un inmueble
se combina el cod_inm+consecutivo
ejemplp

005022+01
005022+02

este propietario tene dos inmuebles por esa razon es que quiero ordenar por mes y por consecutivo

Gracias como lo hago
25/04/2005
sanewilman2, experto respondiendo en PHP
Experto
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";

Saludos.
29/04/2005
sanewilman2, usuario preguntando en PHP
Usuario
Gracias por tu ayuda, me gustaria estar en contacto con vos ya que para mi concepto eres el mejor experto. Si gustas y tu respuesta es aceptable, mi correo es wsantiagoe@yahoo.com Gracias. OK
Más opciones
Enlaces patrocinados