Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/09/2013, 04:01
Novato2013
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 8 meses
Puntos: 5
Respuesta: Recoger el color de la celda seleccionada por el usuario con php

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
  1. //Color
  2. $ColorFilter='';
  3.  
  4. if (isset ($_POST['colorcar'])) {
  5.     $ColorInput = $_POST['colorcar'];
  6. } elseif (isset( $_SESSION['filter']['colorcar'] )) {
  7.     $ColorInput = $_SESSION['filter']['colorcar'];
  8. } else {// Nothing
  9. }
  10.  
  11. if (isset($ColorInput)) {
  12.        
  13.     if ($ColorInput !=''){
  14.         $_SESSION['filter']['colorcar'] = $ColorInput;
  15.         if($DataFilter!="") {
  16.             $DataFilter .= " AND ";
  17.         }
  18.        
  19.         foreach ($arrColor as $CarColor) {
  20.             if ($CarColor["ClassColor"] == $ColorInput) {
  21.                 $ColorFilter = $CarColor["body_colorgroup_id"];
  22.             }
  23.         }
  24.         $DataFilter .= "Body_colorgroup_id = " . $ColorFilter ." ";
  25.     }
  26. }else {
  27.     $ColorInput = '';
  28. }

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
  1. <label for="ColorInput"><?php echo $arrMainPage[$MainPageColor]["TextHeader"]; ?></label>
  2.                                 <table name="ColorInput" id="ColorsTable" >
  3.                                     <tr>
  4.                                     <?php  
  5.                                         $intCount = 1;
  6.                                         $intHalf =  count($arrColor)/2;
  7.                                            
  8.                                         foreach ($arrColor as $Color){
  9.                                            
  10.                                             if ($Color["body_colorgroup_id"] == $ColorFilter ) {
  11.                                     ?>          <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>
  12.                                     <?php   } else {
  13.                                     ?>          <td onclick="press(this)" name="ColorInput"  value="<?php echo $Color["body_colorgroup_id"]; ?>" class="<?php echo $Color["ClassColor"]; ?>" title="<?php echo $Color["colorDescription"]; ?>"></td>
  14.                                     <?php   }  
  15.                                             if ($intCount >= $intHalf) {
  16.                                     ?>
  17.                                     </tr>
  18.                                     <tr>
  19.                                     <?php       $intHalf = $intHalf*2;
  20.                                             }  
  21.                                             $intCount++;
  22.                                         }
  23.                                         /*press(<?php echo $ColorFilter; ?>);*/
  24.                                     ?> 
  25.                                     </tr>
  26.                                 </table>                       
  27.                                 <input type="hidden" id="colorcar" name="colorcar" value="" />

Si os fijais, esta línea dle if:

Código PHP:
Ver original
  1. if ($Color["body_colorgroup_id"] == $ColorFilter ) {
  2.                                     ?>          <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
  1. <script type="text/javascript">    
  2. //Select a cell of the table colors
  3.             var cell = null;
  4.             function press(obj) {
  5.                 obj.style.border = '3px solid black';
  6.                 if (cell != null && cell != obj){
  7.                     cell.style.border = '';
  8.                 }
  9.                 cell = obj;
  10.                 $("#colorcar").attr({
  11.                     value: cell.className
  12.                 })
  13.             }
  14. </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