Foros del Web » Programando para Internet » PHP »

Combo dependientes con base de datos

Estas en el tema de Combo dependientes con base de datos en el foro de PHP en Foros del Web. Buenos días, he realizado una tienda online, y tengo un problema, algunos productos tienen varios colores, por lo que dependiendo del color me gustaría que ...
  #1 (permalink)  
Antiguo 09/05/2013, 10:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 1 mes
Puntos: 1
Combo dependientes con base de datos

Buenos días, he realizado una tienda online, y tengo un problema, algunos productos tienen varios colores, por lo que dependiendo del color me gustaría que se actualizase las tallas, desde la pagina del producto llama a una función que me saca de la base de datos los colores y tambien llamo a otra funcion para que me saque las tallas de la base de datos. Alguien me puede ayudar a que dependiendo del color me acutalice las tallas?? estas son las funciones.

desde la pagina del producto las llamo:
<?php mostrartallasdisponibles($row_DatosProducto['idProducto']);?>
<?php mostrarcoloresdisponibles($row_DatosProducto['idProducto']);?>

Las funciones
function mostrartallasdisponibles($identificador)
{
global $database_conexiontienda, $conexiontienda;
mysql_select_db($database_conexiontienda, $conexiontienda);
$query_Recordset1 = sprintf("SELECT DISTINCT tbltallas.strNombre,tbltallas.intAumento,tbltallas .idTalla,tblproductotalla.intEstado FROM tblproductotalla INNER JOIN tbltallas ON tblproductotalla.relTalla = tbltallas.idTalla WHERE tblproductotalla.relProducto = %s", $identificador);
$Recordset1 = mysql_query($query_Recordset1, $conexiontienda) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

if ($totalRows_Recordset1 > 0) {
?>
<span class="solonegrita" >Tallas:</span> <select name="FTalla">
<?php
do {
if($row_Recordset1['intEstado']!=0){
?>
<option value="<?php echo $row_Recordset1['idTalla']?>"><?php echo $row_Recordset1['strNombre']?> - <?php echo $row_Recordset1['intAumento']?></option>
<?php
}
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
?>
</select>
<?php
}else{
//echo "No hay tallas disponibles";
return false;
}

mysql_free_result($Recordset1);
}


function mostrarcoloresdisponibles($identificador)
{
global $database_conexiontienda, $conexiontienda;
mysql_select_db($database_conexiontienda, $conexiontienda);
$query_Recordset1 = sprintf("SELECT DISTINCT tblcolor.strNombre,tblcolor.hexColor,tblcolor.idCo lor FROM tblproductotalla INNER JOIN tblcolor ON tblproductotalla.relColor = tblcolor.idColor WHERE tblproductotalla.relProducto = %s AND tblproductotalla.intEstado=1", $identificador);
$Recordset1 = mysql_query($query_Recordset1, $conexiontienda) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

if ($totalRows_Recordset1 > 0) {
?><span class="solonegrita">Color </span><br />
<?php do { ?>
<input type="radio" name="FColor" value="<?php echo $row_Recordset1['idColor']?>" checked="checked">
<div style="background-color:<?php echo $row_Recordset1['hexColor']?>;"></div>&nbsp;<?php echo $row_Recordset1['strNombre']?><br>

<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<?php
}else{
//echo "No hay tallas disponibles";
return false;
}

mysql_free_result($Recordset1);
}
  #2 (permalink)  
Antiguo 09/05/2013, 11:10
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Respuesta: Combo dependientes con base de datos

Eso lo puedes hacer con AJAX y JQUERY.

Lo suyo es que identifiques los options del select o combo de colores.

Ese será el dato de entrada del método $.post() o $.ajax() para el parámetro data().

Debes crearte un archivo php que será el método al que llamarás desde $.post(). Luego basta con que recorras los datos devueltos por el método $.post() o $.ajax() para mostrarlos en el otro selector de tallas, mediante un bucle for.

Sería algo así como:

Código:
$.post('consulta.php',
{
'color':$("#selectorColor").val() //Este sería el valor devuelto por el seleccionable del color
}, function(datos){
for(i=0;i< datos.length;i++){
$("#selectorTalla").append('<option value="'datos[i].idTalla'">'+ datos[i].talla +'</option>');
}
}, 'json');
El fichero consulta.php debe tener las sentencias SQL para consultar a tu base de datos y comparar el valor de color con las tallas y devuelve los resultados de la consulta. Para ello al pasar el parámetro color:$("#selectorColor").val() a consulta.php lo usarás para filtrar mediante SQL los resultados. SI te fijas los resultados los devuelve en formato JSON con lo que luego quizás debas usar json_encode para obtener los resultados.

Te comento que lo he escrito un poco de pasada porque no tengo el servidor instalado en este equipo y no te puedo hacer pruebas, pero es algo que podrás ver en los enlaces que te paso a continuación.

Aquí tienes más documentación al respecto:
http://api.jquery.com/jQuery.post/

http://www.9lessons.info/2010/08/dyn...box-using.html (ESTE ESTÁ MUY BIEN PERO USA EL MÉTODO $.AJAX())

Saludos cordiales.
Francisco J.
  #3 (permalink)  
Antiguo 09/05/2013, 11:56
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: Combo dependientes con base de datos

Muchisimas gracias, voy a intentarlo

Etiquetas: combo, dependientes, mysql, select, sql
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 16:48.