Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/10/2014, 16:31
Avatar de cascanfer56
cascanfer56
 
Fecha de Ingreso: octubre-2014
Mensajes: 9
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Ideas con tabla generada PHP por una consulta a base de datos.

Cita:
Iniciado por NSD Ver Mensaje
Bienvenido al foro, quizas esto te sirva como guia, es algo "purista" pero se entiende:
Código PHP:
Ver original
  1. <table class="auto-style2" style="margin: 10px 0 15px 10px; height: 47px; width: 377px;">
  2.     <tr>
  3.        <th class="auto-style11">Pedido</th>
  4.        <th class="auto-style11">Plataforma</th>
  5.        <th class="auto-style11">Estado</th>
  6.        <th class="auto-style11">Precio</th>
  7.        <th class="auto-style11">Acciones</th>
  8.     </tr>
  9.     <?php  
  10.         require '../ModeloControlador/conexion.php';
  11.        
  12.         // Agrega el campo codigo o como sea que se llame la clave primaria.
  13.         // Puedes usar "=" en vez de LIKE, no creo que sea necesario a menos que tengas un error de diseño.
  14.         $result = $con ->query("SELECT nombre,plataforma,estado,precio, codigo FROM productos WHERE propietario = ".$con->quote($_SESSION["user"]));
  15.        
  16.         foreach($result as $row)
  17.         {
  18.             // Segun el estado elijes que opciones mostrarle.
  19.             switch($row[2])
  20.             {
  21.                 case "pendiente" :
  22.                     $accion = "<span class=\"accionar confirmado\">Confirmar</span> | <span class=\"accionar rechazado\">Rechazar</span>";
  23.                 break;
  24.                 case "confirmado" :
  25.                     $accion = "<span class=\"accionar pendiente\">Pendiente</span> | <span class=\"accionar rechazado\">Rechazar</span>";
  26.                 break;
  27.                 case "rechazado" :
  28.                     $accion = "<span class=\"accionar pendiente\">Pendiente</span> | <span class=\"accionar confirmado\">Confirmar</span>";
  29.                 break;                
  30.                 default :
  31.                     $accion = "---";
  32.                 break;
  33.             }
  34.            
  35.             echo "<tr data-codigo=\"$row[4]\">
  36.                    <td>$row[0]</td>
  37.                    <td>$row[1]</td>
  38.                    <td>$row[2]</td>  
  39.                    <td>$row[3]</td>  
  40.                    <td>$accion</td>
  41.                </tr>";
  42.         }        
  43.     ?>        
  44. </table>
  45. <script>
  46.     function accionar_pendiente()
  47.     {
  48.         var codigo = this.parentNode.parentNode.dataset.codigo;
  49.         alert("Pasar a pendiente el codigo: "+codigo);
  50.     }
  51.    
  52.     function accionar_confirmado()
  53.     {
  54.         var codigo = this.parentNode.parentNode.dataset.codigo;
  55.         alert("Confirmar el codigo: "+codigo);    
  56.     }
  57.    
  58.     function accionar_rechazado()
  59.     {
  60.         var codigo = this.parentNode.parentNode.dataset.codigo;
  61.         alert("Rechazar el codigo: "+codigo);    
  62.     }
  63.    
  64.     var elements;
  65.    
  66.     elements = document.querySelectorAll('.accionar.pendiente');
  67.     for (var i = 0; i < elements.length; i++)
  68.         elements[i].addEventListener("click", accionar_pendiente, false);
  69.        
  70.     elements = document.querySelectorAll('.accionar.confirmado');
  71.     for (var i = 0; i < elements.length; i++)
  72.         elements[i].addEventListener("click", accionar_confirmado, false);
  73.        
  74.     elements = document.querySelectorAll('.accionar.rechazado');
  75.     for (var i = 0; i < elements.length; i++)
  76.         elements[i].addEventListener("click", accionar_rechazado, false);
  77. </script>
Genial! Muchas gracias la verdad es que es como si me hubieras leído la mente :D justo cuando pensaba en posibles soluciones, imaginaba algo como esto con las opciones para cada fila y todo eso.Gracias a tu idea ya he podido retocar el código para que quede como esperaba ^^.

Sin embargo continuo perdido en la otra parte del problema que sería modificar la base de datos para que al pulsar confirmado digamos ,en la fila 1, por ejemplo, el estado del producto cambie a confirmado.
Aquí si que estoy atascado ya que no he sido capaz de sacar nada efectivo ni con la ayuda de tu tip para el data-* y dataset que no conocía.Ya que aun teniendo los identificadores en cada fila no se como podría hacer para que al pulsar en un enlace (confirmar y rechazar los he cambiado a enlaces a script php con un update) el script php "reconozca" que "x" pedido va ser cambiado y no "y".
Lo único que se me ha ocurrida son cosas relacionadas con variables de sesión pero estas solo pueden almacenar un dato así que vuelvo al principio.Creo que con AJAX se podría hacer algo pero apenas se de este, lo que he estado viendo un poco y parece que estaría en un problema parecido; ya que tendría que generar muchas variables que coincidiesen con los "x" pedidos que vayan a ser modificados.

Bueno si pudieras echarme una mano sería genial sino de todas maneras te agradezco la pedazo de ayuda de antes ,me ha servido muchísimo de verdad!!

Un saludo!!!