Foros del Web » Programando para Internet » Jquery »

Actualizar una variable php con Jquery con un radiobuttom

Estas en el tema de Actualizar una variable php con Jquery con un radiobuttom en el foro de Jquery en Foros del Web. Buenas. Me encuentro en un atolladero a la hora de seguir desarrollando la primera web que me han encargado, y despues de explorar google en ...
  #1 (permalink)  
Antiguo 28/11/2012, 12:15
 
Fecha de Ingreso: septiembre-2012
Ubicación: Pontevedra
Mensajes: 48
Antigüedad: 12 años, 3 meses
Puntos: 2
Actualizar una variable php con Jquery con un radiobuttom

Buenas. Me encuentro en un atolladero a la hora de seguir desarrollando la primera web que me han encargado, y despues de explorar google en busca de una respuesta no doy encontrado ninguna solución que se adapte a mi problema, a ver si aqui alguien sabe como hacerlo.

Deseo que un usuario de la web pueda seleccionar un elemento dentro de un listado, por lo que he puesto el listado con un radio buttom.

Mi problema surge en que en función de la seleccion debe aparecer un precio u otro abajo, que sera el resultado de la suma de un valor fijo mas un valor variable en función de la selección.

Lo ideal para mi es que segun seleccionen un radio o otro, el precio vaya cambiando siempre mostrando el resultado de la suma.

Es posible hacerlo?

Gracias por adelantado

P.D: Inserto el fragmento de codigo donde dibujo los radio por si ayudan...

Cita:
echo "<table>";
echo "<tr><td><input type='radio' name='complementos' value='0' checked><td>Ninguno<td> <td>+ 0 &euro;";
for($i=0;$i<sizeof($complementos);$i++){
if($complementos[$i]!=""){
$q4="SELECT * FROM tbcomplementos WHERE id=".$complementos[$i];
mysql_select_db($dbname);
$r4= mysql_query($q4);
if($f4=mysql_fetch_array($r4)){
echo "<tr><td><input type='radio' name='complementos' value='".$f4[id]."'><td>".$f4[nombre_visible]."<td> <td> +".$f4[precio]."&euro; <br/>";
}
}
}
echo "</table>";
  #2 (permalink)  
Antiguo 28/11/2012, 13:50
 
Fecha de Ingreso: noviembre-2012
Mensajes: 32
Antigüedad: 12 años
Puntos: 3
Respuesta: Actualizar una variable php con Jquery con un radiobuttom

Código Javascript:
Ver original
  1. echo "<table>";
  2. echo "<tr><td><input type='radio' name='complementos' value='0' checked><td>Ninguno<td> <td>+ 0 &euro;";
  3. for($i=0;$i<sizeof($complementos);$i++){
  4. if($complementos[$i]!=""){
  5. $q4="SELECT * FROM tbcomplementos WHERE id=".$complementos[$i];
  6. mysql_select_db($dbname);
  7. $r4= mysql_query($q4);
  8. if($f4=mysql_fetch_array($r4)){
  9. echo "<tr><td><input type='radio' name='complementos' value='".$f4[id]."'><td>".$f4[nombre_visible]."<td> <td> +".$f4[precio]."&euro; <br/>";
  10. }
  11. }
  12. }
  13. echo "</table>";

Para eso no hace falta jquery, creo...

basta con javascript: javascript puede alterar en lado del cliente los valores de un input,
  1. así que lo primero que debes hacer es crear el input donde ira ese valor aumentado.
  1. despues en el input creados ya por ti, que seleccionas una opcion creas un evento onchange que lo envie a una funcion ej;cambiarvalor()
  1. creas una funcion en el head de tu pagina que trate el valor del input que contiene ese valor variable
    p.ej.:

    Código Javascript:
    Ver original
    1. function cambiarvalor(){
    2. nombre_input_variable=nombre_input_seleccionado+valorfijo
    3. }

espero que te sirva para empezar, si no sabes referirte en javascript a los inputs o pasar las variables a la funcion pide como se hace....ya que no se lo que puedas saber de javascript.

Saludos
  #3 (permalink)  
Antiguo 29/11/2012, 05:16
 
Fecha de Ingreso: septiembre-2012
Ubicación: Pontevedra
Mensajes: 48
Antigüedad: 12 años, 3 meses
Puntos: 2
Respuesta: Actualizar una variable php con Jquery con un radiobuttom

Entiendo lo que me quieres decir, pero tengo problemas con el como ya que algunas de las variables no se exactamente como pasarlas ya que estan fuera del input te explico.
  • En mi codigo, como puedes ver el value de los radiobox, es un id de identificación para poder diferenciarlos unos del otros. Despues al cerrar el input es cuando cargo (en funcion de ese id) el precio de la seleccion. Por lo tanto al hacer la función onchange el valor que paso arriba no es el percio, sino el id, por lo que creo que debo pasar directamente el precio como un integer.
  • Influye en la función en javascript que el input del cual deseo cambiar el valor este declarado despues de la función onchange?

En cualquier caso te paso el codigo fuente de lo que hice (que posiblemente este bugeado por todas partes...)

Código PHP:
echo "<table>";
                        echo 
"<tr><td><input type='radio' name='complementos' value='0' checked><td>Ninguno<td> <td>+ 0 &euro;";
                        for(
$i=0;$i<sizeof($complementos);$i++){
                            if(
$complementos[$i]!=""){
                            
$q4="SELECT * FROM tbcomplementos WHERE id=".$complementos[$i];
                            
mysql_select_db($dbname);
                            
$r4=  mysql_query($q4); 
                            if(
$f4=mysql_fetch_array($r4)){
                                
$q1="SELECT * FROM tbprecio_servicios WHERE id=".$_POST[precios];
                                
mysql_select_db($dbname);
                                
$r1=  mysql_query($q1);
                                if(
$f1=  mysql_fetch_array($r1)){
                                    echo 
"<tr><td><input type='radio' onChange='CambiaValor(precio,".$f4[precio].",".$f1[precio].")' name='complementos' value='".$f4[id]."'><td>".$f4[nombre_visible]."<td> <td> +".$f4[precio]."&euro; <br/>";
                                }
                            }
                            }
                        }
                        echo 
"</table>";
                        
                    }
                    else{ echo 
"<a class='titselec'>Para este servicio no existe ningun complemento vinculado.</a>"; }
                    }
                    
$q1="SELECT * FROM tbprecio_servicios WHERE id=".$_POST[precios];
                    
mysql_select_db($dbname);
                    
$r1=  mysql_query($q1);
                    if(
$f1=  mysql_fetch_array($r1)){
                    echo 
'Precio final : <input type="text" name="precio" value="'.$f1[precio].'">';
                    } 
y la función declarada en el header:

Código HTML:
<script language="javascript">
    function CambiaValor(caja,radio,precio){
        caja.value=radio+precio;
    }
</script> 
A mayores de esto y unicamente por nivel estetico, que input deberia usar para el precio final de abajo para que no me aparezca como una caja editable, que el puede borrar o manipular.

Otra vez muchas gracias.
  #4 (permalink)  
Antiguo 29/11/2012, 12:40
 
Fecha de Ingreso: noviembre-2012
Mensajes: 32
Antigüedad: 12 años
Puntos: 3
Respuesta: Actualizar una variable php con Jquery con un radiobuttom

Buenos dias barbel,

En primer lugar, este codigo forma parte de un script entero. No se si entiendo como tienes estructurada el proceso a que nos referimos. A ver si entiendo: te salen unos radio buttons donde seleccionas un producto, cada producto tiene un complemento, un precio, y...... no saco mas conclusiones porque no se de donde viene el post.....

Has complicado incesariamente el codigo php, creo que tres consultas en una pagina php, es excesivo, los mismos resultados se pueden obtener con una consulta. De todas formas piensa que php es un lenguaje que se interpreta en el sevidor y con este codigo php (consultas a la base de datos, bucles,etc..) generas el codigo html que necesitas en tu pagina para funcionar. Una vez la pagina ha "bajado" a tu explorador (cliente), ya no queda nada del script php, lo unico que tienes en el explorador es el codigo html creado y los scripts de javascript para interaccionar con lo que tengas en la pagina. Eso quiere decir que toda la informacion que sacas de la base de datos la tienes que haber sacado antes de bajar la pagina. Si no, tienes que volver a hacer una consulta mediante un formulario, enviando datos con GET o POST, o con ajax -pero este ultimo es cuando tengas claro lo anterior.

De todas formas si lo que quieres es que no se pueda editar la caja donde va a ir el precio final el input en cuestion deberia tener este codigo

Código PHP:
Ver original
  1. <input type="text" id="precio" name="precio" value="'.$f1[precio].' onlyread">';

el atributo onlyread en los inputs hace que solo se vean y no se puedan cambiar. El id="precio" que he añadido es para poder referenciar el control en la funcion, es interesante que a partir de ahora si vas a emplear javascript etiquetes con name y con id todos los objetos.

en cuanto a la funcion no hace falta que le pases la caja que no se que es, pasale el radio y el precio que supongo que son los valores a sumar

<script language="javascript">
function CambiaValor(radio,precio){
control=document.getElementById('precio');
control.value=radio+precio;
}
</script>


saludos, si no va por ahí la solucion describe un poco mejor todo el proceso.
  #5 (permalink)  
Antiguo 29/11/2012, 12:42
 
Fecha de Ingreso: noviembre-2012
Mensajes: 32
Antigüedad: 12 años
Puntos: 3
Respuesta: Actualizar una variable php con Jquery con un radiobuttom

Cita:
Iniciado por vimon Ver Mensaje
Buenos dias barbel,

En primer lugar, este codigo forma parte de un script entero. No se si entiendo como tienes estructurada el proceso a que nos referimos. A ver si entiendo: te salen unos radio buttons donde seleccionas un producto, cada producto tiene un complemento, un precio, y...... no saco mas conclusiones porque no se de donde viene el post.....

Has complicado incesariamente el codigo php, creo que tres consultas en una pagina php, es excesivo, los mismos resultados se pueden obtener con una consulta. De todas formas piensa que php es un lenguaje que se interpreta en el sevidor y con este codigo php (consultas a la base de datos, bucles,etc..) generas el codigo html que necesitas en tu pagina para funcionar. Una vez la pagina ha "bajado" a tu explorador (cliente), ya no queda nada del script php, lo unico que tienes en el explorador es el codigo html creado y los scripts de javascript para interaccionar con lo que tengas en la pagina. Eso quiere decir que toda la informacion que sacas de la base de datos la tienes que haber sacado antes de bajar la pagina. Si no, tienes que volver a hacer una consulta mediante un formulario, enviando datos con GET o POST, o con ajax -pero este ultimo es cuando tengas claro lo anterior.

De todas formas si lo que quieres es que no se pueda editar la caja donde va a ir el precio final el input en cuestion deberia tener este codigo

Código PHP:
Ver original
  1. echo '<input type="text" id="precio" name="precio" value="'.$f1[precio].'" onlyread>';

el atributo onlyread en los inputs hace que solo se vean y no se puedan cambiar. El id="precio" que he añadido es para poder referenciar el control en la funcion, es interesante que a partir de ahora si vas a emplear javascript etiquetes con name y con id todos los objetos.

en cuanto a la funcion no hace falta que le pases la caja que no se que es, pasale el radio y el precio que supongo que son los valores a sumar

Código Javascript:
Ver original
  1. <script language="javascript">
  2.     function CambiaValor(radio,precio){
  3.         control=document.getElementById('precio');
  4.         control.value=radio+precio;
  5.     }
  6. </script>


saludos, si no va por ahí la solucion describe un poco mejor todo el proceso.

Etiquetas: input, php, variables
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 12:42.