Foros del Web » Programando para Internet » PHP »

action="<?=$PHP_SELF?>"

Estas en el tema de action="<?=$PHP_SELF?>" en el foro de PHP en Foros del Web. Hola, tengo un problema cuando porgo esto action="<?=$PHP_SELF?>" en un formulario,la pagina que refresca necesita un valor que se le pasó la primera vez, al ...
  #1 (permalink)  
Antiguo 22/09/2005, 05:41
 
Fecha de Ingreso: julio-2005
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta action="<?=$PHP_SELF?>"

Hola, tengo un problema cuando porgo esto action="<?=$PHP_SELF?>" en un formulario,la pagina que refresca necesita un valor que se le pasó la primera vez, al hacer esto ese valor es nulo, como puedo hacer para solucionar esto?
en action puedo pasarle de alguna manera ese valor?
  #2 (permalink)  
Antiguo 22/09/2005, 06:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Propaga tu valor (el que le lllegó por primera vez a ese script) en un campo hidden de ese formulario:
Ejemplo ..

Si a este_script.php le pasas la variable "nose" por el URL ..

este_script.php?nose=valor

Código PHP:
<form action="<?=$_SERVER['PHP_SELFT'?>" method="POST">
<input type="hidden" name="nose" value="<? echo $_GET['nose'?>">
etc ...
</form>
Un saludo,
  #3 (permalink)  
Antiguo 22/09/2005, 09:27
 
Fecha de Ingreso: julio-2005
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
No lo entiendo sigue sin funcionarme, haber me explico:

Primero tengo tabla.php donde tengo la siguiente referencia:

Código PHP:
<a href="ficha.php?id=$algo"

En ficha.php lo leo:

Código PHP:
$valor $_GET["id"]; 

en este hay una ficha con unos datos de una base de datos y un formulario consulta, donde tenemos el boton enviar donde el formulariotiene cono acción:
Código PHP:
<form action=" <?=$PHP_SELF?> "
Lo que ocurre es que cuando vuelve de nuevo a ficha para refrescar una vez q a enviado $valor no toma ningun valor.

he intentado poner en el form esto

Código PHP:
<input type="hidden" name="id" value="<? echo $_GET['id'?>">
pero no funciona.

¿Q hago?
  #4 (permalink)  
Antiguo 22/09/2005, 09:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero tu formulario que método usa (method) .. según lo usas .. debería ser GET.

Pon el código completo de los scripts que intervienen y fijate viendo el código fuente generado si:

<input type="hidden" name="id" value="<? echo $_GET['id'] ?>">

toma el valor esperado

Un saludo,
  #5 (permalink)  
Antiguo 22/09/2005, 09:47
 
Fecha de Ingreso: julio-2005
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
Perdona pero no lo entiendo, te mando el codigo de ficha.php haber si puedes decire algo



Código PHP:
<?php

    $valor 
$_GET["id"];
     
$sql 'SELECT * FROM `nuke_navas` WHERE id= '.$valor;  
      
$resul mysql_query($sql);
      
$fila mysql_fetch_object($resul);
     echo 
"valor= " .$valor;
?> 

<body>
<table width="93%"  cellspacing="2">
 //aqui hay una tabla con los datos recogidos de la bbdd
  </table>

<? 
$nombre
=$fila->nombre;
$tipo=$fila->tipo;
$id=$fila->id;


if (!
$_POST){
?> 
<p align="center"><strong>Inmonavas: Formulario de Consulta:</strong></p>
<p align="center">Si desea solicitar m&aacute;s informaci&oacute;n o cualquier otro tipo de consulta sobre</p>
<p align="center">esta propiedad, rellene este formulario. </p>
<p align="center"></p>
<form action=" <?=$PHP_SELF?> "   method=post ><div align="center">
<input type="hidden" name="id" value="<? echo $_GET['id'?>"> 

  <table width="32%" height="196" >
      <tr>
        <th scope="col">Tu nombre: </th>
      </tr>
      <tr>
        <td><div align="center">
          <input name="nombre" type="text" id="nombre">
        </div></td>
      </tr>
      <tr>
        <td><div align="center"><strong>Tu E-mail: </strong></div></td>
      </tr>
      <tr>
        <td><div align="center">
          <input name="email" type="text" id="email">
        </div></td>
      </tr>
      <tr>
        <td><div align="center"><strong>Mensaje:</strong></div></td>
      </tr>
      <tr>
        <td><div align="center">
          <textarea name="mensaje" id="mensaje"></textarea>
        </div></td>
      </tr>
      <tr>
        <td><div align="center">
          <input type="submit" name="Submit" value="Enviar">
        </div></td>
      </tr>
      </table>
  </div>
</form> 
<div align="center">
 <? 
}else{ 
//echo "valor=    ".$fila->nombre;
    //Estoy recibiendo el formulario, compongo el cuerpo 
    
$cuerpo "Propiedad: ".$nombre ."  tipo:".$tipo ."  id: ".$id ." \n"
    
$cuerpo .= "Datos del soliditante:\n";
    
$cuerpo .= "Nombre: " $_POST["nombre"] . "\n"
    
$cuerpo .= "Email: " $_POST["email"] . "\n"
    
$cuerpo .= "Comentarios: " $_POST["mensaje"] . "\n"

    
//mando el correo... 
   
mail("[email protected]","Formulario de consulta",$cuerpo); 

    
//doy las gracias por el envío
     
    
echo "Gracias por rellenar el formulario. Se ha enviado correctamente."

?>

Mirad a ver donde esta el error, yo no lo encuentro
  #6 (permalink)  
Antiguo 22/09/2005, 10:33
 
Fecha de Ingreso: julio-2005
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
De verdad que nadie sabe solucionar esto? anda haber si podeis ayudarme, me he quedao bloquea
  #7 (permalink)  
Antiguo 22/09/2005, 10:44
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Buenas,
prueba de mandar tu formulario por el metodo GET.
Código PHP:
if (!$_GET[){ 
?> 
<p align="center"><strong>Inmonavas: Formulario de Consulta:</strong></p> 
<p align="center">Si desea solicitar m&aacute;s informaci&oacute;n o cualquier otro tipo de consulta sobre</p> 
<p align="center">esta propiedad, rellene este formulario. </p> 
<p align="center"></p> 
<form action=" <?=$PHP_SELF?> " method="get" >
<div align="center"> 
<input type="hidden" name="id" value="<? echo $_GET['id'?>"> 

  <table width="32%" height="196" > 
      <tr> 
        <th scope="col">Tu nombre: </th> 
      </tr> 
      <tr> 
        <td><div align="center"> 
          <input name="nombre" type="text" id="nombre"> 
        </div></td> 
      </tr> 
      <tr> 
        <td><div align="center"><strong>Tu E-mail: </strong></div></td> 
      </tr> 
      <tr> 
        <td><div align="center"> 
          <input name="email" type="text" id="email"> 
        </div></td> 
      </tr> 
      <tr> 
        <td><div align="center"><strong>Mensaje:</strong></div></td> 
      </tr> 
      <tr> 
        <td><div align="center"> 
          <textarea name="mensaje" id="mensaje"></textarea> 
        </div></td> 
      </tr> 
      <tr> 
        <td><div align="center"> 
          <input type="submit" name="Submit" value="Enviar"> 
        </div></td> 
      </tr> 
      </table> 
  </div> 
</form> 
<div align="center"> 
<? 
}else{ 
//echo "valor=    ".$fila->nombre; 
    //Estoy recibiendo el formulario, compongo el cuerpo 
    
$cuerpo "Propiedad: ".$nombre ."  tipo:".$tipo ."  id: ".$id ." \n"
    
$cuerpo .= "Datos del soliditante:\n"
    
$cuerpo .= "Nombre: " $_GET["nombre"] . "\n"
    
$cuerpo .= "Email: " $_GET["email"] . "\n"
    
$cuerpo .= "Comentarios: " $_GET["mensaje"] . "\n"

    
//mando el correo... 
   
mail("[email protected]","Formulario de consulta",$cuerpo); 

    
//doy las gracias por el envío 
     
    
echo "Gracias por rellenar el formulario. Se ha enviado correctamente."
}
Espero q te sirva...


Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 22/09/2005 a las 10:52
  #8 (permalink)  
Antiguo 22/09/2005, 11:41
 
Fecha de Ingreso: julio-2005
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
yA HE PROBADO A MANDARLO ASI, Y LO ENVIA DIRECTAMENTE SIN MOSTRARME EL FORMULARIO, YA NO SE COMO PROBAR
  #9 (permalink)  
Antiguo 22/09/2005, 11:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes un lio con los métodos ..

Tu script en primera instancia recibe por GET ese "ID" .. luego tu formulario lo procesa en POST ..

$cuerpo = "Propiedad: ".$nombre ." tipo:".$tipo ." id: ".$id ." \n";

debe ser:
Código PHP:
$cuerpo "Propiedad: ".$nombre ."  tipo:".$tipo ."  id: ".$_POST['id'] ." \n"
y lo mismo con las otras variables ..

No uses:
<?=$PHP_SELF?>

usa los arrays superglobales:
Código PHP:
<? echo $_SERVER['PHP_SELF']; ?>
más detalles ..

Código PHP:
$sql "SELECT * FROM `nuke_navas` WHERE id='".$_GET['id']."'"
Y respeta las comillas en la sintax HTML .. como por ejemplo:
method=post
debe ser
method="post"

Un saludo,

PD: Si no te funciona .. por favor indica que valores obtienes .. para eso haz:

Código PHP:
<?
echo "<pre>";
print_r($_GET);
echo 
"</pre>";
?>
tanto al principio de tu script como una línea antes de usar mail()
  #10 (permalink)  
Antiguo 22/09/2005, 11:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Se me olvidó ..

Nunca hacer:
if (!$_POST){
?>

en su defecto:
Código PHP:
if (empty($_POST)){
  
// mostrar el formulario ..
} else {
 
// enviar el formulario...

Pero luego tendrás otro problema si usas esa técnica .. cuando envies tu e-mail .. recarga tu página (donde muestras el mensaje de "enviado") .. veras como se te pide confirmación para re-enviar los datos .. De esta forma un usuario mal intencionado puede enviar el mismo e-mail tantas veces como hasta que se canse de recargar la página.

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




La zona horaria es GMT -6. Ahora son las 00:44.