CASI ACABADO
Ya he conseguido recoger el color y marcar la celda correcta y que después de buscar los elementos se me quede la celda marcada, pero si a partir de ahí quiere el usuario realizar una nueva búsqueda al marcar otro color(otra celda) se queda marcada la anterior a no ser que clickees sobre la anterior y entonces ya se desmarca. Creo que es por el comando $_SESSION que guarda el valor de la anterior celda marcada aunque en teoría la parte de clickear es de java y debería de deseleccionarse automaticamente en el primer clickeo en otra celda, pongo el código nuevo:
La parte del filtro del color ahora es así:
Código PHP:
Ver original//Color
$ColorFilter='';
if (isset ($_POST['colorcar'])) { $ColorInput = $_POST['colorcar'];
} elseif (isset( $_SESSION['filter']['colorcar'] )) { $ColorInput = $_SESSION['filter']['colorcar'];
} else {// Nothing
}
if (isset($ColorInput)) {
if ($ColorInput !=''){
$_SESSION['filter']['colorcar'] = $ColorInput;
if($DataFilter!="") {
$DataFilter .= " AND ";
}
foreach ($arrColor as $CarColor) {
if ($CarColor["ClassColor"] == $ColorInput) {
$ColorFilter = $CarColor["body_colorgroup_id"];
}
}
$DataFilter .= "Body_colorgroup_id = " . $ColorFilter ." ";
}
}else {
$ColorInput = '';
}
Mientras que la que está dentro del form para mostrar al usuario por pantalla la tabla de colores es así:
Código PHP:
Ver original<label for="ColorInput"><?php echo $arrMainPage[$MainPageColor]["TextHeader"]; ?></label>
<table name="ColorInput" id="ColorsTable" >
<tr>
<?php
$intCount = 1;
$intHalf = count($arrColor)/2;
foreach ($arrColor as $Color){
if ($Color["body_colorgroup_id"] == $ColorFilter ) {
?> <td onclick="press(this)" name="ColorInput" style ="border:3px solid black" value="<?php echo $Color["body_colorgroup_id"]; ?>" class="<?php echo $Color["ClassColor"]; ?>" title="<?php echo $Color["colorDescription"]; ?>"></td>
<?php } else {
?> <td onclick="press(this)" name="ColorInput" value="<?php echo $Color["body_colorgroup_id"]; ?>" class="<?php echo $Color["ClassColor"]; ?>" title="<?php echo $Color["colorDescription"]; ?>"></td>
<?php }
if ($intCount >= $intHalf) {
?>
</tr>
<tr>
<?php $intHalf = $intHalf*2;
}
$intCount++;
}
/*press(<?php echo $ColorFilter; ?>);*/
?>
</tr>
</table>
<input type="hidden" id="colorcar" name="colorcar" value="" />
Si os fijais, esta línea dle if:
Código PHP:
Ver originalif ($Color["body_colorgroup_id"] == $ColorFilter ) {
?> <td onclick="press(this)" name="ColorInput" style ="border:3px solid black" value="<?php echo $Color["body_colorgroup_id"]; ?>" class="<?php echo $Color["ClassColor"]; ?>" title="<?php echo $Color["colorDescription"]; ?>"></td>
Es donde le digo que cambie el borde de color si $Color["body_colorgroup_id"] == $ColorFilter , creo que debería ser en esa zona a lo mejor dónde debería de añadir más código para recoger tb la opcion de q el usuario marca un segundo color en la siguiente busqueda elimnandose d la seleccion el primer color seleccionado.
Y este es el javascript que me selecciona la celda de la tabla al hacer click y me cambia el borde de grosor para que el usuario sepa que color está seleccionando:
Código Javascript
:
Ver original<script type="text/javascript">
//Select a cell of the table colors
var cell = null;
function press(obj) {
obj.style.border = '3px solid black';
if (cell != null && cell != obj){
cell.style.border = '';
}
cell = obj;
$("#colorcar").attr({
value: cell.className
})
}
</script>
Con todo esto el único detallito que queda es q se desmarque automáticamente la celda marcada cuando el usuario clicke en otro color y no se marquen los dos, pero no sé muy bien como hacerlo.
Thanks