Foros del Web » Programando para Internet » PHP »

Como conseguir el valor de una variable php en codigo html.

Estas en el tema de Como conseguir el valor de una variable php en codigo html. en el foro de PHP en Foros del Web. Buenas! Tengo un problemilla que no sabria muy bien explicar pero allá voy: Estoy configurando una pasarela de pago para una tienda virtual. La empresa ...
  #1 (permalink)  
Antiguo 09/11/2007, 11:21
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Como conseguir el valor de una variable php en codigo html.

Buenas!

Tengo un problemilla que no sabria muy bien explicar pero allá voy:

Estoy configurando una pasarela de pago para una tienda virtual.
La empresa que lleva la pasarela de pago, nos paso un script de prueba para poder pasarle los datos al banco. Os copio un trozo:

Código:
// Now, print the HTML script

echo "<html><head><title>Comercio Simulador</title></head>

<body bgcolor=white>

<form name=compra action=$url_tpvv method=post target=tpv>

<table>
<tr><td>
<h2>Comercio de prueba.</h2>
</td></tr><tr><td>
Importe: <font color=blue>$amount</font>
</td></tr>
Al principio de este codigo, asigno a unas variables ($amount,$order,$code..) unos valores constantes que se veran reflejados en esa tabla, para luego acceder a la pasarela de pago con esos datos.

El problema me venia en un principio con la variable $amount , que al no ser una constante (cambia en cada pedido obviamente) , sabia que tenia que hacer una consulta a la base de datos, obtenerlo y pasarselo mediante otra variable.

Asi hice, le pase el valor mediante la variable $amount=$total; , pero el codigo seguia sin funcionar.

Cai en la cuenta que estoy en PHP :P, y que si no ponia un echo , poco valor me iba a salir. Eso hice, y al salirme la tabla, el precio salia reflejado correctamente, pero al pasar a la pasarela de pago, el importe era 0.

Luego volvi a caer que el script pone claramente HTML, y segun una prueba que hice , solo puedo pasarle codigo HTML.

Entonces mi pregunta es, como hago para pasar el valor de la variable $total(que contiene el precio total) a $amount, y que en ese trocito que os he pegado me salga el valor, sin poner un echo ni nada obviamente porque en cuanto lo hago, no me coge el valor.

Última edición por shilen79; 09/11/2007 a las 11:28
  #2 (permalink)  
Antiguo 09/11/2007, 11:30
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Como conseguir el valor de una variable php en codigo html.

esta mal no va a ninguna parte tu script no en el action deberia poner algo como

action="pagina.php?<?php echo "$amount";?>"

o algo por el estilo se entiende....
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 09/11/2007, 11:51
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Re: Como conseguir el valor de una variable php en codigo html.

Si se manda tal cual lo puse, lo que pasa es que no escribi todo el codigo y es normal no entender a que me refiero puesto que me explico fatal:

El codigo de prueba que me dan los de la pasarela virtual es este.

Código:
function ShowForm () {
// Posted data
global $HTTP_POST_VARS;

// Valores constantes del comercio
$url_tpvv='url para acceder a la pasarela de pago';
$clave='clave que nos proporciona el banco';
$name='nombre del comercio';
$code='codigo que nos proporciona el banco;
$terminal='1';
$order=date('ymdHis');
$amount=$total;
$currency='978';
$transactionType='0';
$urlMerchant='url que nos proporciona el banco;
$producto='';

// Now, print the HTML script


echo "<html><head><title>Comercio Simulador</title></head>

<body bgcolor=white>
<form name=compra action=$url_tpvv method=post target=tpv>

<table>
<tr><td>
<h2>Comercio de prueba.</h2>
</td></tr><tr><td>
Importe: <font color=blue>$amount</font>
</td></tr><tr><td>
FUC: <font color=blue>$code</font>
</td></tr><tr><td>
Terminal: <font color=blue>$terminal</font>
</td></tr><tr><td>
Pedido: <font color=blue>$order</font>
</td></tr><tr><td>
Producto: <font color=blue>$producto</font>
</td></tr><tr><td>
Importe: <font color=blue>$amount</font>
</td></tr><tr><td>
Tipo de Operacion: <font color=blue>$transactionType (Autorización)</font>
</td></tr><tr><td>
URL del comercio: <font color=blue>$urlMerchant</font>
</td></tr><tr><td>";

// Currency strings 
if ($currency == "978") {
	echo "Moneda: <font color=blue>Euros</font>";
	
}

echo "</td>
</tr><tr><td>
<input type=hidden name=Ds_Merchant_Amount value='$amount'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Currency value='$currency'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Order  value='$order'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantCode value='$code'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Terminal value='$terminal'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_TransactionType value='$transactionType'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantURL value='$urlMerchant'>
</td></tr><tr><td>";

// Compute hash to sign form data
$message = $amount.$order.$code.$currency.$transactionType.$urlMerchant.$clave;
$signature = strtoupper(sha_1($message));

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>

</td></tr>
</table>
<center><a href='javascript:calc()'><img src='/tpvirtual.jpg' border=0 ALT='TPV Virtual'></a></center>

</form>										  
</body></html>";


?>
<input type="text" name="Ds_Merchant_Amount" value="<?php echo $amount?>" />
<?php 
} # End of function ShowForm
Falta solo el algotimo Sha-1, su codigo que no lo copio pues es bastante largo.

Al ejecutarlo tal cual, te sale la tabla con los valores constantes,que ofrecen sin ningun problema, excepto $amount que el valor que le paso de $total no me lo muestra.

Si en vez de eso pusiera en su respectivo sitio <?php echo $amount ?> , modificando el codigo , pero sin ser ya html puro, consigo que me salga la cantidad obtenida de la consulta de la base de datos, pero al acceder a la pasarela de pago , el importe no sale.

De ahi me di cuenta al hacer otra prueba, que solo acepta codigo html el script, de ahi que venga asi en la prueba, pero no se como poder pasarle valor, que obtengo de la consulta, puesto que al asignar $amount=$total, no me lo coge y no puedo insertar codigo php, o eso creo dentro.
  #4 (permalink)  
Antiguo 09/11/2007, 12:03
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Como conseguir el valor de una variable php en codigo html.

pues deberia dejarte definir variables

pero seria
$total = $amount;

imprimiste $amount
y $total???

mira si $amount trae datos y luego dices
$amount = $total;
pero $total no existe y es primera ves que lo creas
$amount ya no vale nada se entiende...
por que estas diciendo que $amount ahora vale total pero total :/ yo no lo veo definido antes....

bueno de alguna parte te traeras total supongo
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 09/11/2007, 12:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Re: Como conseguir el valor de una variable php en codigo html.

El valor de $total lo traigo de aqui: $total = $db->f("order_total");

Si yo pongo un <?php echo $amount ?>, me sale el precio , que debe salir.
El problema me viene que al hacerlo asi, no me lo reconoce luego al mandar los datos a la pasarela, porque segun me dice, debo pasarle un formulario en html tal cual me viene en el codigo de ejemplo, el cual he puesto arriba...

De ahi es donde me viene la duda, no se como hacerle ver arriba, que me refleje la cantidad... porque por sin un echo, no me lo va a mostrar...

Si yo arriba :

[code]
// Valores constantes del comercio
$url_tpvv='url para acceder a la pasarela de pago';
$clave='clave que nos proporciona el banco';
$name='nombre del comercio';
$code='codigo que nos proporciona el banco;
$terminal='1';
$order=date('ymdHis');
$amount='25';
$currency='978';
$transactionType='0';
$urlMerchant='url que nos proporciona el banco;
$producto='';

A $amount le pongo un valor constante, me sale reflejado luego al ejecutarlo , y al acceder a la pasarela de pago =.
El problema viene cuando le paso la variable $total, que como que no la pilla, pero no al asignarla, que se que la pilla porque si hago un echo me sale el correcto el valor, sino en :

Código:
echo "</td>
</tr><tr><td>
<input type=hidden name=Ds_Merchant_Amount value='$amount'>
</td></tr><tr><td>
<input type=hidden name....
que no pilla el valor.

Y el problema es que solo me deja hacerlo asi , porque le tengo que pasar los valores de este modo , si las meto con echo , sale reflejado en la informacion , pero al pasar a la pasarela no me lo reconoce, solo reconoce HTML, y de ahi el problemon o algo que no entiendo.

Subrayo cosas en rojo, para ver si me explico mejor, y aclaro, porque se no me explico bien , y mas aun cuando tampoco se bien como explicarlo :(.

Última edición por shilen79; 09/11/2007 a las 12:30
  #6 (permalink)  
Antiguo 09/11/2007, 12:43
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Re: Como conseguir el valor de una variable php en codigo html.

Perdon por doble postear, pero he de añadir algo que he descubierto , y si edito , estoy muy abajo para que lo vean y me puedan ayudar.

He hecho lo siguiente :

$total=25;
$amount=$total;

De este modo, si me pilla la cantidad 25.

Yo el valor del precio lo recojo mediante -> $total = $db->f("order_total");

Asi que creo que lo que necesito es alguna forma de pasar ese valor a un numero entero , o cantidad, de modo que pueda pillarmelo o ya no se.. .

Al recogerlo mediante ese modo, quizas no me lo este reconociendo como un valor, tal cual, me entienden?
  #7 (permalink)  
Antiguo 10/11/2007, 12:05
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Como conseguir el valor de una variable php en codigo html.

cuando traes $total = $db->f("order_total");
has imprimido lo que trae $total solo ???
si solo te toma enteros puedes redondear con round();
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 18:10.