Php formulario

Estoy intentando realizar un "proyecto" de una web ficticia sobre una tienda de música. Tengo un menú desplegable ya creado y una base de datos con los siguientes campos: Categoría, artista, disco, precio, fecha.
Explico lo que queri conseguir con un ejemplo.
Si en el menu voy a --> Rock --> 2009.
Que me cargue solo los discos del 2009 de rock, los coloque en una tabla donde cada disco lleve asociado un checkbox, y que el javascript o php(no se cual es más adecuado) solo me sume los precios de los que tienen el checkbox seleccionado.
¿Es posible?

6 Respuestas

Respuesta
1
Claro que es posible...
Cuando seleccionas 2009, lo envías a la misma página por ejemplo, o a un php entremedias que luego te redirija a los selects.
En ese php intermedio (o en la propia página) ejecutas una consulta para sacar los discos de 2009. Eso es lo que muestras con un checkbox.
Luego la suma, pues lo más apropiado será con javascript, asocias un evento onclick con cada checkbox de manera que vas sumando los checkboxes y mostrándolo en un elemento html.
¿Qué dudas en concreto tienes? ¿Necesitas sólo ideas?
Hola de nuevo,
gracias por contestar tan brevemente. Siendo sinceros tengo nociones de como hacerlo y con lo que me has dicho más aún pero hay varias cosas que no sabría como empezar de lo que me dices.
Quiero lo primero que me dices, que cuando selección 2009 me cargue la lista en la misma página.
Lo que no se como empezar a escribir código para relacionarle a cada disco un checkbox y que luego el javascript coja y solo me sume los discos que tienen el checkbox marcado.
Una parte de php creo que debería ser algo así:
<?php
$link=mysql_connect("localhost", "root");
mysql_select_db("BBDD_MusicStore", $link);
$resultado= mysql_query("SELECT * FROM ".$_POST['disco']." WHERE fecha='".$_POST['2009']."'",$link);
$i=1;
while ($datos = mysql_fetch_object($resultado)){
    echo"  
<tr>
<td width='346'>".$datos->disco."</td>
<td width='32'>
      <label>
      <input type='hidden' name='pr".+$i."' id='cr".+$i."' value='".$datos->precio."'  />
        <input name='n".+$i."' type='text' id='not1' size='4' maxlength='4' />
      </label></td>
</tr>
";
     $i++;
}
?>
y la función javascript algo como:
function sumar(precio){
var precio=0;
var total=0;
for (i=1;i<precio; i++)
{
precio=parseFloat(eval('document.form1.pr'+i+'.value'));
}
total = total + precio;
Pero la verdad, soy novato, tengo algunas ideas, pero siempre me falta un punto más en el que diga, vale, quiero esto y el código que debo teclear tiene que ser así y así.
Gracias.
Supongo que tienes un form en alguna parte ;)
De la que sacas <input name='n".+$i."' type='text' id='not1' size='4' maxlength='4' />
debes sacar también el checkbox:
<input type="checkbox" id="precio" value="el_precio_del_disco">
Ahora bien, para la función javascript puedes usar algo como esto.
<input type="checkbox" onChange="if(this.checked == true){sumar(precio_del_disco);}else{restar(precio_del_disco);}">
Cuando cargas los checkboxes los vas a cargar desmarcados, por lo tanto, cuando se marquen, se suma el precio. El else del onchange, es para cuando los desmarcas, que para desmarcarlos tendrías que haberlos marcado (y sumado) previamente, por eso haría la resta.
function sumar(precio) 

var precio=0;//no entiendo por qué lo inicializas a cero, no se lo estás mandando como parametro? ojo con esto, porque pierdes el valor que mandes, eh?

var total = parseInt($('guardadas').innerHTML);
$('guardadas').innerHTML = guardadas+precio;

}
function restar(precio)
{  
var total = parseInt($('guardadas').innerHTML);
$('guardadas').innerHTML = guardadas-precio;
}

Y para que ambas funciones de javascript te funcionaran, tendrías que tener esto:
<span id='guardadas'></span>
Da igual si es un span, o si es un p o si es un div, lo que importa es el id para poder referenciar al innerHTML y escribir el precio total...
Si sigues un poco perdido, empezamos por el principio. Seleccionar del desplegable 2009 y que saque la lista de discos de 2009.
Creo que lo mejor es que según vayas pensando o no te salga, me preguntes, porque así eres tú quien lo piensa y quien le da vueltas para entenderlo, aunque sólo sea un poquito. Es mejor así, en un futuro desarrollarás las cosas mejor porque habrás sabido razonarlas ;)
Respuesta
1
Claro que es posible, en php se puede hacer casi todo!
Esta tarde te doy un ejemplo.
Hola!
Mira he estado trabajando en ello y a ver si explicándotelo así entiendes mejor lo que quiero conseguir.
Mi idea es que accedo a una capa dinámica (div) en la que hay un menú desplegable donde puedo elegir -> categoría: pop, rock o indie y la ->fecha:2008 y 2009.
Una vez elegidos, dentro de un formulario llamado "form1" quiero que me ponga información del disco (disco, artista, precio) y un checkbox al lado de cada disco (checkbox sin seleccionar).
Una vez listados, selecciono los checkbox y hay dos botones al final del listado, simular y borrar.
Cuando yo pulse simular mediante javascript se que debería escribir un código el cual, me elija solo los discos que tengan el checkbox seleccionado, y sume sus precios dándome un total que luego mostraré en una caja de texto.
Problemas: el javascript no se ni como empezarlo. No se como asociar un checkbox a cada cosa que me cargue y que el javascript solo sume los seleccionados
Muchas gracias,
un saludo!
Con esto sumas los checkbox y lo que recibe por GET:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
<!--
function Suma(isChecked, myValue)
{
    tot = parseInt(document.form1.total.value);
    myValue = parseInt(myValue);
    if (isChecked) document.form1.total.value = tot + myValue;
    else document.form1.total.value = tot - myValue;
}
-->
</script>
</head>
<body>
<?php
    $idProducto = $_GET['id'];
    echo $idProducto;
?>
<form name="form1" method="post" action="">
<p>
    <input name="checkbox" type="checkbox" onClick="Suma(this.checked,this.value)" value="<?php echo $idProducto; ?>">
  </p>
<p>
    <input type="checkbox" name="checkbox2" onClick="Suma(this.checked,this.value)" value="50">
  </p>
<p>
    <input type="text" name="total" value="0">
  </p>
</form>
</body>
</html>
Para probarlo puedes hacer una prueba con esto: http://direccion/index.php?id=5
Y así en un checkbox el valor será 5.
Y para seleccionar productos en una BD, solo tienes que pner en llamada a mysql un WHERE.
Respuesta
1
Después de lo que pude entender, la parte de la consulta y el volcado el la tabla es relativamente fácil... el tema seria ver de encontrar el script para que al elegir el checkbox se actualice el monto total... algo parecido seria hacer una session con arreglo donde vas agregando los discos... una especie de carrito... pero ahí tendrías que ponerle un botón para agregar al carro...
Bueno... espero haberme expresado bien... y si keres por ahí que lo hagamos más rapido así cerramos este tema, agrégame al msn : [email protected]
Un gusto. Nelo Cabrera
Respuesta
1
Y creo que con un where dentro de tu consulta podes hacer más o menos así no se si es tu idea.
$consulta = mysql_query("select * from tutabla where categoria='rock' and año='2009' and checkbox='si' "); //claro estos valores para tu where puedes reemplazarlos por tus variables.
WHILE ($fila = mysql_fetch_array($consulta)){
$precio = $fila['precio'];
$tot_precio=$tot_precio+$precio;
}
Claro esto es para en el caso de que tu elijas ya en tu base de datos con los checkbox marcados, de los contrario si quieres listar las canciones del año 2009 y del genero rock puedes listar con el while las canciones y poner al lado de cada música un check y que el usuario elija y con un formulario procesarlas luego claro manejándolos como array (vectores en este caso) y comprobar si esta el check sumas.
Mas o menos así
WHILE($fila = mysql_fetch_array($consulta)){
$precio = $fila['precio'];
$artista = $fila['artista'];
$disco = $fila['disco'];$i++;
echo"";
echo"Genro:Rock, Precio:$precio[$i]"; //tu pones como kieres
}
//lo recibes en una seccion aparte o en otra pagina
$vcheck = $_POST['vcheck'];
$precio = $POST['precio'];
$i = $_POST['i'];
for ($k=1; $kif($vcheck[$k]){
$tot_precio=$tot_precio+$precio[$k];
}
}
echo"Total precio: $tot_precios";
Aunque dudo mucho que funcione je je no probé este scipt lo hice así no más culakier cosa especifícame más y voy en que te ayudo.
Saludos desde Paraguay - Robert Galeano Fernández
Hola Roberto!
Primero, gracias por contestar. Mira mi idea es que accedo a una capa dinámica (div) en la que hay un menú desplegable donde puedo elegir -> categoría: pop, rock o indie y la ->fecha:2008 y 2009.
Una vez elegidos, dentro de un formulario llamado "form1" quiero que me ponga información del disco (disco, artista, precio) y un checkbox al lado de cada disco (sin seleccionar).
Una vez listados, selecciono los checkbox y hay dos botones, simular y borrar.
Cuando yo pulse simular mediante javascript se que debería escribir un código el cual, me elija solo los discos que tengan el checkbox seleccionado, y sume sus precios dándome un total que luego mostraré en una caja de texto.
Problemas: el javascript no se ni como empezarlo. No se como asociar un checkbox a cada cosa que me cargue y que el javascript solo sume los seleccionados
Muchas gracias,
un saludo!
Y mira que yo javascript poco conozco pero creo que la misma lógica que te puse deberías usar listar los datos de tu DB y guardarlos en un array luego con un method enviar y una vez recibido verificar si se marcaron los checkbox o sea si es diferente a vacío o si esta. Creo que el tema va a estar en como tratar un array con js no más y paso de variables a través de tu form en mi respuesta anterior el que dice span style son tabuladores.
No tengo tiempo no más para acerté un script parecido al que quieres
Respuesta
1
En esta idea estás mezclando Bases de datos y Javascript. Por lo que me comentas, necesitas hacer consultas y controlar un poco de PHP. Sería BASTANTE largo explicarlo por aquí, la verdad, pero puedes buscar un montón de información en Google, por partes, primero para la consulta busca por "php consulta simple mysql", para empezar. Necesitas tener algo de conocimientos de programación para poder hacerlo.
Respuesta
1
Pues de que es posible es posible... mira se me ocurre esto:
Para sacar solo los de un género sería una consulta simple a la base de datos buscando por cualquier registro con un genero y año en específico...
Tomar los valores e imprimirlos, poniendo en un campo tipo hidden los precios correspondientes... y al final tener un campo de texto vacío para poner el total de lo seleccionado.
En cuanto a lo otro... se me hace más fácil hacerlo en javascript, por que de otra forma tendrías que ocupar AJAX...
la función sería algo así como...
Llamarla en el evento onchange de cada checkbox, y que revise todos los checkboxes para ver cual está seleccionado (checked=="checked") y si si, ir sumándolos a una variable donde guarde el total y asignarle este valor al campo de texto que teníamos destinado para mostrar el total.
Bueno, así se me ocurre, saludos, espero haberte ayudado :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas