[Php-avanzado] Actualizar pagina desde otra

Leandro Schereik lschereik en hotmail.com
Sab Jun 19 00:04:05 ART 2010


Hola Leo, PERFECTO incluyendo login.php arriba anda barbaro.

El problema es que tendria que cambiar el layout no? Para colocar login.php primero.
O tendria que cambiar la logica de lo programado para no modificar el 
layout?
Como pudiste ver en index.php tengo un menu a la izquieda de la pagina donde estan las categorias, en el medio los articulos y a la derecha de la pagina el login.


Muchisimas Gracias por la ayuda

Leandro


> From: leonardot en pegasusnet.com.ar
> To: php-avanzado en pato2.fi.mdp.edu.ar
> Date: Fri, 18 Jun 2010 23:16:13 -0300
> Subject: Re: [Php-avanzado] Actualizar pagina desde otra
> 
> Hola Leandro,
> 
> 	tenés un problema en el orden de las llamadas.
> 	Fijate que en show.php, mostrás los productos solo si if
> (isset($_SESSION['id'])){
> 	El $_SESSION['id'] se determina en login.php, 
>   if (($pass==$usuario['pass'])&&($usuario['id_tip_user']==2)){
> 	$_SESSION['id']=$usuario['id'];
> 	etc
> 
> 	pero login.php incluido después de categorias.php que incluye a
> art_show.php, que a su vez incluye a show.php, que cuando se ejecuta, no
> pasa por el isset($_SESSION['id'])
> 
> 	Como es una variable de sesión, la segunda vez que vas a la página, sí
> está seteada y por eso ves que al recargar sí se ven las cosas...
> 
> 	Ahora bien, esto te pasa porque tenés un código endiabladamente
> complejo!!!
> 	La idea del concepto de layout, es que tengas muchas, repito, muchas
> páginas, y que al tener todas el mismo layout, sea fácil cambiarle lo
> que muestran adentro, porque en su cuerpo incluyen diferentes cosas...
> tu aplicación siempre le muestra al usuario index.php en el url, con lo
> que tu sitio es imposible de bookmarkear (perdón por el anglicismo) y
> además te ganaste un montón de complejidad innecesaria, porque no agrega
> funcionalidad.
> 
> 	Dicen los que sabes que "depurar el código es mucho más difícil que
> escribirlo, por eso, si escribimos el código más complejo de que somos
> capaces, no seremos capaces de depurarlo si tiene un error". 
> 	Este principio fue elevado a "metodología de programación" y se llama
> KISS.
> 
> 	Solución: el código de login tiene que estar arriba del todo (lo que
> además es lógico, porque si no la aplicación te permite hacer lo que
> esté antes del login aunque no estés logueado)
> 
> 	Seguimos!
> 
> 
> 
> 
> El vie, 18-06-2010 a las 21:15 +0000, Leandro Schereik escribió:
> > Hola Leo te agrego index.php y art_show.php la query esta bien genera
> > lo correcto.
> > El sabado no puedo ir pero en la semana si en que dias y horarios
> > podria pasar?
> > 
> > 
> > index.php
> > ---------
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> >  "http://www.w3.org/TR/html4/loose.dtd">
> > <html>
> > <head>
> > <title>Inicio</title>
> > <meta http-equiv="content-type" content="text/html; charset=UTF-8">
> > <link rel="stylesheet" type="text/css" href="css/styles.css">
> > </head>
> > 
> > <body>
> > 
> > <!-- Wrapper -->
> > <div id="wrapper">    
> >     
> >     <!-- Header -->
> >     <div id="header">    
> >         <? include("header.php"); ?>
> >     </div>
> >     <!-- Header -->
> >     
> >     <!-- Content -->
> >     <div id="content">
> >         <img src="images/tail-top.gif">
> >     
> >         <!-- Categorias -->
> >         <div id="categorias">
> >           
> >           <?  include("categorias.php"); ?>
> >         </div>
> >         <!-- Categorias -->
> >         
> >         <!-- Medio -->
> >         <div id="medio">
> >     
> > 
> >         </div>
> >         <!-- Medio -->
> >     
> >             
> >     
> >         <!-- Carrito -->
> >         <div id="carrito">
> >             <? include("login.php"); ?>
> >         
> >          </div>
> >         <!-- Carrito -->    
> >     
> >     
> >     </div>
> >     <!-- Content -->
> >     
> > 
> > </div>
> > <!-- Wrapper -->
> > 
> > <? // session_destroy(); ?>    
> > </body>
> > 
> > art_show.php
> > -------------
> > 
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> >  "http://www.w3.org/TR/html4/loose.dtd">
> > <html>
> > <head>
> > <title>Inicio</title>
> > <meta http-equiv="content-type" content="text/html; charset=UTF-8">
> > <link rel="stylesheet" type="text/css" href="css/styles.css">
> > </head>
> > 
> > <body>
> > <!-- Wrapper -->
> > <div id="wrapper">    
> >     
> >     <!-- Header -->
> >     <div id="header">    
> >         <? include("header.php"); ?>
> >     </div>
> >     <!-- Header -->
> >     
> >     <!-- Content -->
> >     <div id="content">
> >         <img src="images/tail-top.gif">
> >     
> >         <!-- Categorias -->
> >         <div id="categorias">
> >           
> >           <?  include("categorias.php"); ?>
> >         </div>
> >         <!-- Categorias -->
> >         
> >         <!-- Medio -->
> >         <div id="medio">
> >             <? include("show.php"); ?>
> >         </div>
> >         <!-- Medio -->
> >         
> >             
> >     
> >         <!-- Carrito -->
> >         <div id="carrito">
> >             <? include("login.php"); ?>
> >             <? include("micarro.php");?>
> >         
> >          </div>
> >         <!-- Carrito -->    
> >     
> >     
> >     </div>
> >     <!-- Content -->
> >     
> > 
> > </div>
> > <!-- Wrapper -->
> > 
> > <? // session_destroy(); ?>    
> > </body>
> > </html>
> > 
> > 
> > > From: leonardot en pegasusnet.com.ar
> > > To: php-avanzado en pato2.fi.mdp.edu.ar
> > > Date: Fri, 18 Jun 2010 18:01:14 -0300
> > > Subject: Re: [Php-avanzado] Actualizar pagina desde otra
> > > 
> > > Hola Leandro,
> > > 
> > > tiene pinta de ser un problema del orden de las inclusiones.
> > > 
> > > Enviá el index.php, para ver el flujo de las llamadas, y el
> > > art_show.php
> > > 
> > > Fijate también se estás recibiendo el "id" de la categoría para
> > armar
> > > el primer SELECT * FROM articulos where id_categ='$id' en show.php
> > > De hecho, hace un print de esta query, y fijate si se genera o no la
> > > query correcta...
> > > 
> > > También, si andás con tiempo, pasate el sábado entre las 11 y las
> > 13hs
> > > por la FI, que estamos en la 2da parte de la clase de PHP Inicial,
> > > instálas lo que tenés hecho hasta ahora en el server de la facu, y
> > lo
> > > vemos juntos con el código corriendo.
> > > 
> > > Seguimos!
> > > 
> > > El vie, 18-06-2010 a las 16:26 +0000, Leandro Schereik escribió:
> > > > Hola Leo paso algo de codigo por aca asi me puedo explicar mejor.
> > > > Cuando me logueo desde index.php esta perfecto ya que cuando hago
> > > > click en el menu categoria me lleva a art_show.php y carga
> > show.php
> > > > con los datos de session y carga los articulos junto con la imagen
> > de
> > > > comprar el mismo.
> > > > El problema surge cuando cuando estoy en art_show.php?1,
> > > > art_show.php?2, .. art_show.php?N con el comprador sin iniciar
> > sesion
> > > > al hacerlo, se loguea y no aparecen las imagenes para poder
> > comprar el
> > > > articulo y el usuario esta logueado, actulizo la pagina con f5 y
> > carga
> > > > articlos con las imagenes. 
> > > > Me explico?
> > > > 
> > > > 
> > > > 
> > > > 
> > > > categorias.php :
> > > > --------------
> > > > <!-- Esta dentro de index.php y arma un menu con las categorias,
> > le
> > > > pasa a art_show.php?id el id de la categoria a mostrar sus
> > articulos
> > > > -->
> > > > 
> > > > <p class="p">Categorias<p>
> > > > <br>
> > > > <ul class="list">
> > > > <?
> > > > include_once("conexion.php");
> > > > 
> > > > //selecciona todos los nombres de las categorias, si no hay
> > categorias
> > > > emite un mensaje
> > > > $sql=mysql_query("SELECT * FROM categorias ORDER BY nom");
> > > > 
> > > > while($categ=mysql_fetch_row($sql)){
> > > > ?>
> > > > <li><span><a href="art_show.php?id=<?=$categ[0];?>"><?
> > > > echo($categ[1]."<br>"); ?></a></span></li> 
> > > > 
> > > > <?
> > > > }
> > > > mysql_close();
> > > > 
> > > > 
> > > > ?>
> > > > </ul>
> > > > 
> > > > 
> > > > login.php
> > > > ---------
> > > > 
> > > > <?php 
> > > > include("funciones.php");
> > > > 
> > > > $_SESSION['user'] = (isset($_SESSION['user'])) ?
> > > > $_SESSION['user'] : '';
> > > > 
> > > > 
> > > > if (isset($_POST["log"])){
> > > > $user=$_POST["user"];
> > > > $pass=$_POST["pass"];
> > > > include("conexion.php");
> > > > $sql=mysql_query("SELECT * FROM compradores WHERE
> > > > user='$user'");
> > > > $usuario=mysql_fetch_array($sql);
> > > > mysql_close();
> > > > if (($pass==$usuario['pass'])&&($usuario['id_tip_user']==2)){
> > > > $_SESSION['id']=$usuario['id'];
> > > > $_SESSION['user']=$usuario['user'];
> > > > $_SESSION['pass']=$usuario['pass'];
> > > > $_SESSION['nom']=$usuario['nom'];
> > > > $_SESSION['ape']=$usuario['ape'];
> > > > $_SESSION['tel']=$usuario['tel'];
> > > > $_SESSION['email']=$usuario['email'];
> > > > 
> > > > 
> > > > }
> > > > else{
> > > > echo("Nombre de Usuario o Contraseña incorrectas.");
> > > > }
> > > > 
> > > > }
> > > > ?>
> > > > 
> > > > <? if ($_SESSION['user']==""){ ?> 
> > > > <form name="login" method="post" action="">
> > > > <table>
> > > > <tr>
> > > > <td>Usuario </td>
> > > > <td><input type="text" name="user" id="user"></td>
> > > > 
> > > > </tr>
> > > > <tr> 
> > > > <td>Password</td>
> > > > <td><input type="password" name="pass"
> > > > id="pass"></td> 
> > > > 
> > > > </tr>
> > > > <tr>
> > > > <td></td>
> > > > <td><input type="submit" name="log" id="log"
> > > > value="Login"
> > onclick="javascript:window.opener.location.reload();"> 
> > > > <input type="button" name="reg" id="reg"
> > > > value="Registrarse" onClick="location.href ='comp_alta.php'">
> > > > </td>
> > > > </tr>
> > > > </table>
> > > > 
> > > > <?
> > > > }
> > > > else{
> > > > echo("Nombre: ".$_SESSION['nom']."
> > > > ".$_SESSION['ape']);
> > > > ?> <br /><br />
> > > > <input type="button" name="logout" id="logout"
> > > > value="Logout" onClick="location.href ='logout.php'"> 
> > > > <input type="button" name="editar" id="editar"
> > > > value="Editar Datos" onclick="location.href ='comp_edit.php'"> <?
> > > > }
> > > > 
> > > > ?>
> > > > </form>
> > > > 
> > > > 
> > > > 
> > > > show.php
> > > > ---------
> > > > <!-- Dentro de art_show.php -->
> > > > 
> > > > 
> > > > <form action="" method="get" name="carro"> 
> > > > <?
> > > > // id de la categoria a buscar sus articulos
> > > > if (isset($_REQUEST["id"])){
> > > > $id=$_REQUEST["id"];
> > > > 
> > > > include("conexion.php");
> > > > $sql=mysql_query("SELECT * FROM articulos where id_categ='$id'");
> > > > //$cant: cantidad de filas consultadas para mostrar articulos o
> > > > mensaje error (sin articulos)
> > > > $cant=mysql_num_rows($sql);
> > > > if ($cant > 0){
> > > > while($art=mysql_fetch_array($sql)){
> > > > //verifica stock para listar solo articulos con stock
> > > > mayor a 0
> > > > if($art["stock"]>0){ 
> > > > if (isset($_SESSION['id'])){
> > > > if (isset($_SESSION['carro']))
> > > > $carro=$_SESSION['carro'];
> > > > else
> > > > $carro=array();
> > > > 
> > > > // si no esta id del articulo en el carro lo
> > > > muestra con la imagen de agregar
> > > > if (!in_array($art["id"],$carro)){
> > > > ?>
> > > > 
> > > > <div id="show_art">
> > > > <div id="show_img">
> > > > <img src="<?=$art["img1"];?>"
> > > > height="75" width="75"/><br>
> > > > </div>
> > > > <div id="show_titulo" >
> > > > <h3><?=$art["nom"];?></h3>
> > > > </div>
> > > > <div id="show_detalle">
> > > > Precio:$<?=$art["precio"];?>
> > > > Stock:<?=$art["stock"];?> 
> > > > </div>
> > > > <div id="show_carrito">
> > > > <!-- y finaliza por -->
> > > > <a href="agregar.php?id=<?=
> > > > $art["id"];?>"><img src="images/agregar.png" /></a>
> > > > 
> > > > </div>
> > > > 
> > > > </div>
> > > > <?
> > > > } 
> > > > else{
> > > > 
> > > > ?>
> > > > <div id="show_art">
> > > > <div id="show_img">
> > > > <img src="<?=$art["img1"];?>"
> > > > height="75" width="75"/><br>
> > > > </div>
> > > > <div id="show_titulo" >
> > > > <h3><?=$art["nom"];?></h3>
> > > > </div>
> > > > <div id="show_detalle">
> > > > Precio:$<?=$art["precio"];?>
> > > > Stock:<?=$art["stock"];?> 
> > > > </div>
> > > > <div id="show_carrito">
> > > > <!-- y finaliza por -->
> > > > <a href="borrar.php?id=<?=
> > > > $art["id"];?>">boorrar</a>
> > > > </div>
> > > > 
> > > > </div>
> > > > <?
> > > > }//cierra else (!esta($carro,$art["id"])){
> > > > }//cierra if (isset($_SESSION['user'])){
> > > > else{ //if (isset($_SESSION['user'])){
> > > > ?>
> > > > <div id="show_art">
> > > > <div id="show_img">
> > > > <img src="<?=$art["img1"];?>"
> > > > height="75" width="75"/><br>
> > > > </div>
> > > > <div id="show_titulo" >
> > > > <h3><?=$art["nom"];?></h3>
> > > > </div>
> > > > <div id="show_detalle">
> > > > Precio:$<?=$art["precio"];?>
> > > > Stock:<?=$art["stock"];?> 
> > > > </div>
> > > > <div id="show_carrito">
> > > > <p>Debe estar logueado para
> > > > realizar compras.</p><!-- y finaliza por -->
> > > > 
> > > > 
> > > > </div>
> > > > 
> > > > </div>
> > > > <?
> > > > }
> > > > 
> > > > }
> > > > } // cierra if($art["stock"]>0)
> > > > }// cierra while($art=mysql_fetch_array($sql))
> > > > 
> > > > else{
> > > > echo("No hay articulos para la categoria seleccionada.");
> > > > }// cierra if ($cant > 0){
> > > > 
> > > > }//cierra if (isset($_REQUEST["id"])){
> > > > 
> > > > ?>
> > > > </form>
> > > > 
> > > > 
> > > > Saludos
> > > > 
> > > > Leandro 
> > > > 
> > > > 
> > > > 
> > > > > From: leonardot en pegasusnet.com.ar
> > > > > To: php-avanzado en pato2.fi.mdp.edu.ar
> > > > > Date: Thu, 17 Jun 2010 11:15:49 -0300
> > > > > Subject: Re: [Php-avanzado] Actualizar pagina desde otra
> > > > > 
> > > > > Hola Leandro,
> > > > > 
> > > > > se me escapa el por qué de esta necesidad tan particular....
> > > > > 
> > > > > A priori, si en show.php hay un include con un login, basta que
> > el
> > > > > formulario de login tenga en su action al propio show.php, para
> > que,
> > > > > cuando el usuario se loguea, vaya al servidor, se autentifique,
> > y al
> > > > > recargarse naturalmente show.php, se mostrará el contenido sin
> > > > necesidad
> > > > > de tanta complicación!
> > > > > 
> > > > > La lógica de show.php es simple: si no está autentificado, se
> > > > incluye
> > > > > login.php, y si sí está autentificado, se incluye el
> > articulos.php
> > > > (o
> > > > > como se llame) para mostrar el artículo correspondiente.
> > > > > 
> > > > > Qué esto esté en un <div> o en cualquier otro elemento HTML no
> > > > cambia
> > > > > la secuencia de ejecución del script.
> > > > > 
> > > > > O es muy fácil, o me perdí de algo ;-)
> > > > > 
> > > > > Saludos!
> > > > > 
> > > > > 
> > > > > PD: no cuelgues el recuperatorio!
> > > > > 
> > > > > El jue, 17-06-2010 a las 05:02 +0000, Leandro Schereik escribió:
> > > > > > Hola a todos:
> > > > > > tengo un sitio maqueteado con div y dentro de esos div
> > includes.
> > > > > > 
> > > > > > Una de las paginas del sitio es show.php que muestra articulos
> > con
> > > > una
> > > > > > imagen para comprar dicho articulo la idea es que la imagen se
> > > > muestre
> > > > > > si el comprador inicio sesion (hasta ahi todo bien). 
> > > > > > 
> > > > > > La consulta es la siguiente: como puedo hacer para que al
> > iniciar
> > > > > > sesion (dentro de un div en show.php tengo un
> > > > include("login.php"))
> > > > > > forzar que actualice la pagina (show.php) asi entran las
> > variables
> > > > de
> > > > > > session con datos y muestra la imagen para poder comprar el
> > > > producto,
> > > > > > ya que inicio sesion y dichas imagenes no aparecen, actualizo
> > la
> > > > > > pagina con F5 y ahi si.
> > > > > > 
> > > > > > Investigando un poco encontre que en el evento onclick del
> > > > formulario
> > > > > > login podia hacer lo siguiente con javascript: 
> > > > > > <input type="submit" name="log" id="log" value="Login"
> > > > > > onclick="javascript:window.opener.location.reload();"> y de
> > esa
> > > > manera
> > > > > > forzar a que se actualice la pagina pero no esta funcionando.
> > > > > > 
> > > > > > Espero haber sido claro
> > > > > > 
> > > > > > Muchas Gracias 
> > > > > > 
> > > > > > Leandro Schereik
> > > > > 
> > > > > -- 
> > > > > 
> > > > > Leonardo Tadei
> > > > > leonardot en pegasusnet.com.ar
> > > > > http://blog.pegasusnet.com.ar
> > > > > Firma pública:
> > http://www.pegasusnet.com.ar/LeonardoTadei-public.key
> > > > > 
> > > > > _______________________________________________
> > > > > Php-avanzado mailing list
> > > > > Php-avanzado en pato2.fi.mdp.edu.ar
> > > > > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> > > > 
> > > > 
> > > >
> > ______________________________________________________________________
> > > > Acceder a tu casilla ahora es mucho más rápido. Ahora Hotmail es
> > un
> > > > 70% más veloz. Conocé más
> > > > _______________________________________________
> > > > Php-avanzado mailing list
> > > > Php-avanzado en pato2.fi.mdp.edu.ar
> > > > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> > > -- 
> > > 
> > > 
> > > Leonardo Tadei
> > > leonardot en pegasusnet.com.ar
> > > Pegasus Tech Supply
> > > Tel: (+54)(+223) 471-2880
> > > La Salle 1131 - Mar del Plata - Argentina
> > > http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
> > > http://www.prometeustech.com.ar / http://www.grupopegasus.com
> > > Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
> > > 
> > > 
> > > _______________________________________________
> > > Php-avanzado mailing list
> > > Php-avanzado en pato2.fi.mdp.edu.ar
> > > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> > 
> > 
> > ______________________________________________________________________
> > No importa si es pesado o liviano. Con Hotmail Skydrive tenés 25 GB
> > para guardar todo. Clic aquí
> > _______________________________________________
> > Php-avanzado mailing list
> > Php-avanzado en pato2.fi.mdp.edu.ar
> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> -- 
> 
> 
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> Pegasus Tech Supply
> Tel: (+54)(+223) 471-2880
> La Salle 1131 - Mar del Plata - Argentina
> http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
> http://www.prometeustech.com.ar / http://www.grupopegasus.com
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>                 
> 
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
 		 	   		  
_________________________________________________________________
Ahora Hotmail te da 25 GB gratis. El complemento de espacio que te estaba faltando. Ver más
http://www.descubrehotmail.com/almacenamiento.asp 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-avanzado/attachments/20100619/812ec59f/attachment-0001.htm 


Más información sobre la lista de distribución Php-avanzado