Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   cómo pasar valor de variable php a formulario html (https://www.clubdelphi.com/foros/showthread.php?t=67351)

Casimiro Notevi 13-04-2010 02:22:59

cómo pasar valor de variable php a formulario html
 
Hola, he estado buscando por los foros y no encuentro nada que me sirva, también he buscado en otros foros y en google y los resultados que he encontrado no me han funcionado.

Bien, el asunto es el siguiente:

Un documento html, en él hay una function en php que devuelve un valor.
En ese documento html hay un form que tiene varios campos, uno de ellos se requiere que presente el valor devuelto por la function php.
¿Cómo hacerlo?.
La estructura actual es esta:

Código:

<html>
 <head>
 </head>
 <body>
 aquí está la function php que devuelve un número con return $num;
 <form html con varios campos, uno de los campos es así:

  aquí se hace la llamada a la function
  <?php
  $NUM = getNum(); 
  ?>   

  <input type="text" name="numero" value="<?php echo $NUM ?>">  //  <-- esto es lo que quiero hacer

  otros campos del form
  etc...
  </body>
</html>

Espero que se entienda.

Si creo un documento.php con la function y el echo $variable funciona bien, muestra el valor devuelto.

roman 13-04-2010 02:38:35

Lo primero que hay que entender, es que esto que pides es imposible :p.

El código HTML y el código PHP viven en mundos distintos. Tú dices:

Cita:

Código:

<body>
aquí está la function php que devuelve un número con return $num;
<form html con varios campos, uno de los campos es así:


pero no es cierto. Carga la página y examina el código fuente. Verás que no hay nada de código PHP.

El archivo fuente original -mezcla de HTML y PHP- es interpretado en el servidor WEB por el módulo PHP, el cual ejecuta el código PHP para generar la salida HTML que se devuelve al cliente.

Una vez entendido el punto anterior, veamos que es posible hacer algo como lo que pides :p.

Tendrías que hacer uso de Ajax para, mediante una función JavaScript, llamar al script php que contenga la función. Posiblemente debas pasar algún parámetro a ese script para que sepa cuál función invocar. El resultado de ese script, esto es, el texto que se devuelve al cliente, lo recibes con Ajax y usas JavaScript para colocarlo en el campo deseado del formulario.

// Saludos

keyboy 13-04-2010 02:41:32

Dicho sea con respeto, creo que roman nada más te está confundiendo. Tal como lo tienes debería funcionar bien. ¿Que es lo que muestra la caja de texto?

Bye

roman 13-04-2010 02:45:27

Mmm. Sí, creo que tienes razón, yo estaba interpretando la pregunta erróneamente. Gracias por el apunte, aunque debo decir que no lo hice con ánimos de confundir :)

// Saludos

Casimiro Notevi 13-04-2010 02:49:13

A ver si os ponéis de acuerdo que :D:D:D

En la caja de texto sale lo que hay entre comillas: <?php etc...

Casimiro Notevi 13-04-2010 02:51:43

La functión php la he puesto en el body, al principio la puse en el head, es que tampoco sé muy bien dónde debe ir :D, soy novato en esto, perdonen ustedes, señores maestros :D

keyboy 13-04-2010 02:52:16

¡Ah! ¿El documento es html? Es decir, ¿tiene extensión html? Porque, de ser así, es posible que tu servidor no esté configurado para que PHP interprete documentos con esa extensión.

Bye

roman 13-04-2010 02:54:09

Cita:

Empezado por Casimiro Notevi (Mensaje 360234)
señores maestros :D

Nah' El maestro es el keboy. Creo que tiene razón en lo que apunta. Si ves <?php etc. en el la caja de texto es que no se interpretó.

// Saludos

Casimiro Notevi 13-04-2010 02:55:27

Sí, ya digo, en un fichero.php donde está la function y la llamada para probar, funciona bien, se muestra en pantalla el número devuelto.

Pero si pongo la function dentro del código html ya no funciona, puede que realmente no se pueda.

Por cierto, lo que se ve en la "caja de texto" es esto: <?php echo $IP ?>

Casimiro Notevi 13-04-2010 03:17:35

Bueno, he reducido el código dejándolo en algo mínimo para que no sea pesado de entender y veamos si así existe alguien en este foro que sea un auténtico maestro de maestros y pueda echar una mano :D:D:D

Código:

<html> <head></head>
<body>

<?php
function getNUM()
{
  $num = "12345";
  return $num;
}
?>

<ul>
  <form name="frm" method="post" action="sendcuestionario.php">
    <table>     
      <tbody>       
        <tr>
          <td><p>Nombre</p></td>
          <td><input type="text" name="nombre" size="40"></td>
        </tr>
        <tr>
          <td><p>Empresa</p></td>
          <td><input type="text" name="empresa" size="40"></td>
        </tr>
        <tr>
          <td>
               
            <?php
              $NUM = getNUM();
              echo $NUM;
            ?>

            <input type="text" name="elnumero" value="<?php echo $NUM ?>">   
           
          </td>
        </tr>
        <tr>
          <td><input type="submit" name="btenviar" value="Enviar los datos"></td>
        </tr>
      </tbody> 
    </table>
  </form>
</ul>
</body>
</html>


movorack 13-04-2010 03:51:25

Perdona mi lentitud... pero no he entendido algunos detalles.

- El archivo en el que quieres mostrar el resultado de la función es .html o .php?

Porque si es .html entonces como dice keyboy, deberias tener configurado apache para que te procese los .html como si fueran un .php mas. Si no lo tienes configurado así entonces sucederá lo que dices:
Cita:

Por cierto, lo que se ve en la "caja de texto" es esto: <?php echo $IP ?>
El servidor no entenderá que se trata de un bloque PHP y lo mostrará como simple texto.

Si el archivo es un .php entonces no tiene nigun problema en funcionar. el código que pasas no tiene ningun problema (¿Que es $IP?... no lo asignas a nada en el código).

Cita:

La functión php la he puesto en el body, al principio la puse en el head, es que tampoco sé muy bien dónde debe ir
en realidad puede ir en cualquier lugar... aunque no es lo mas recomendable... aquí la he cambiado de lugar y funcioinaria igual.

Código:

<html> <head></head>
<body>
<ul>
  <form name="frm" method="post" action="sendcuestionario.php">
    <table>     
      <tbody>       
        <tr>
          <td><p>Nombre</p></td>
          <td><input type="text" name="nombre" size="40"></td>
        </tr>
        <tr>
          <td><p>Empresa</p></td>
          <td><input type="text" name="empresa" size="40"></td>
        </tr>
        <tr>
          <td>
               
            <?php
              function getNUM(){
                $num = "12345";
                return $num;
              };
              $NUM = getNUM();
              echo $IP; //¿Que es $IP?
            ?>

            <input type="text" name="elnumero" value="<?php echo $NUM ?>">   
           
          </td>
        </tr>
        <tr>
          <td><input type="submit" name="btenviar" value="Enviar los datos"></td>
        </tr>
      </tbody> 
    </table>
  </form>
</ul>
</body>
</html>

Cualquier cosa... avise! :D

PS:
Cita:

veamos si así existe alguien en este foro que sea un auténtico maestro de maestros y pueda echar una mano
:D por alguna razón pensé que la segunda morada de algunos miembros del foro era el olimpo :D

Ñuño Martínez 13-04-2010 09:29:23

Cita:

Empezado por Casimiro Notevi (Mensaje 360237)
Por cierto, lo que se ve en la "caja de texto" es esto: <?php echo $IP ?>

No sé por qué pero me parece que os estáis liando. Estoy casi seguro de que Maese Noteví olvidó activar/instalar PHP.:rolleyes:

Casimiro Notevi 13-04-2010 13:55:55

Lo de $IP es una basura que ha quedado de las pruebas.

El caso es que sí está funcionando el php, porque como he dicho antes, si creo un documento .php sólo con la función para probar, funciona ok.

Pero, bueno, tampoco es muy importante, sólo estaba probando cosas, gracias a todos por las molestias ocasionadas :)


p.d.: huy, huy... ¿dónde están los maestros y dioses del olimpo? :D:D:D

Casimiro Notevi 13-04-2010 14:09:47

Sale esto:



Y sí está funcionando el php, porque hay otras páginas php que están alojadas ahí y funcionan :)

Ñuño Martínez 13-04-2010 15:40:01

Entonces, ¿cuál es el código HTML de esa respuesta? Me apuesto un café a que sale "&lt;" por algún lado.

Casimiro Notevi 13-04-2010 15:47:36

Pues lo que he puesto antes, lo que ha escrito movorack en su post

Ñuño Martínez 13-04-2010 15:58:42

Cita:

Empezado por Casimiro Notevi (Mensaje 360289)
Pues lo que he puesto antes, lo que ha escrito movorack en su post

¿Quieres decir que cuando seleccionas "Ver código fuente" en tu navegador recibes exactamente lo que ha puesto Movorak? Porque eso no me cuadra, ya que la única razón que se me ocurre es que PHP no esté funcionando. :confused:

Y ya que estamos, ¿cuál es la URI completa?

Casimiro Notevi 13-04-2010 16:03:24

No entiendo la pregunta, Ñuño, a qué código fuente te refieres?, perdona mi ignorancia en estas cosas, pero soy novato en este asunto :p

Ñuño Martínez 13-04-2010 16:07:46

Pues al código que recibe el navegador. Cuando recibes la página, seleccionas en el menú (en Firefox): "Ver->Código fuente de la página". A ese me refiero, no al que tienes en el servidor.

Casimiro Notevi 13-04-2010 16:14:58

Cuando carga el navegador "prueba.htm", (como lo tengo ahora mismo), ver código fuente:

Código:

<html> <head></head>
<body>

<ul>
  <form name="frm" method="post" action="send.php">
    <table>     
      <tbody>       
        <tr>
          <td><p>Nombre</p></td>
          <td><input type="text" name="nombre" size="40"></td>
        </tr>
        <tr>
          <td><p>Empresa</p></td>
          <td><input type="text" name="empresa" size="40"></td>
        </tr>
        <tr>
          <td>
             
            <?php
              function getNUM()
              {
                $num = "12345";
                return $num;
              }
              $NUM = getNUM();
              echo $NUM;
            ?>
            <!--    <input type="text" name="elnumero" value="<?php echo $NUM ?>">      -->
       
            <input type="hidden" value="<?php echo $NUM; ?>" name="numerito">
           
          </td>
        </tr>
        <tr>
          <td><input type="submit" name="btenviar" value="Enviar los datos"></td>
        </tr>
      </tbody> 
    </table>
  </form>
</ul>
</body>
</html>

Y estos son los dos ficheritos que tengo, el html y el php:
Código:

<html> <head></head>
<body>

<ul>
  <form name="frm" method="post" action="send.php">
    <table>     
      <tbody>       
        <tr>
          <td><p>Nombre</p></td>
          <td><input type="text" name="nombre" size="40"></td>
        </tr>
        <tr>
          <td><p>Empresa</p></td>
          <td><input type="text" name="empresa" size="40"></td>
        </tr>
        <tr>
          <td>
             
            <?php
              function getNUM()
              {
                $num = "12345";
                return $num;
              }
              $NUM = getNUM();
              echo $NUM;
            ?>
            <!--    <input type="text" name="elnumero" value="<?php echo $NUM ?>">      -->
       
            <input type="hidden" value="<?php echo $NUM; ?>" name="numerito">
           
          </td>
        </tr>
        <tr>
          <td><input type="submit" name="btenviar" value="Enviar los datos"></td>
        </tr>
      </tbody> 
    </table>
  </form>
</ul>
</body>
</html>

Código PHP:

<?php

$numerito
=$HTTP_GET_VARS["NUM"] ;

if (isset(
$email)):
  
$target="info @ intitec . com";
  
$subject="Solicitud";
  
mail($target,$subject,"Nombre: ".$nombre."\nNumerito: ".$numerito."\nEmpresa: ".$empresa);
endif;
?>

<p>Solicitud enviada...<br></p>



La franja horaria es GMT +2. Ahora son las 16:59:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi