Estoy haciendo un módulo para Prestashop y una de las funcionalidades que quiero implementar es que, mediante una página de administración, me muestre todo el contenido de una tabla y me permita modificar el registro.
Para ello he creado una consulta y recupero los resultados con mysql_fetch_assoc y los muestro con un <input> dentro de una tabla html.
Hasta aquí todo bien. El problema es que al pasar el valor de $_POST['campo'] a lña función que contiene el UPDATE de mysql SIEMPRE me devuelve el último valor recogido por la consulta.
Os pongo un ejemplo por si no me he explicado con claridad.
Función para modificar los datos:
Código:
public function modificarDatos(){ $consulta = "UPDATE "._DB_PREFIX_."incidences SET status='".$_POST['status']."' WHERE id_incidence = ".$_POST['id_incidence'].";"; mysql_query($consulta); }
Código:
El problema: $_POST['id_incidence'] no recoge el valor de cada $filas['id_incidence'], sino el último valor devuelto por la consulta.$sql = "SELECT * FROM "._DB_PREFIX_."incidences INNER JOIN "._DB_PREFIX_."customer ON "._DB_PREFIX_."incidences.id_user = "._DB_PREFIX_."customer.id_customer ORDER BY ref_incidence DESC;"; $res = mysql_query($sql); $result = $res; // <- utilizo $res o $result según qué función, por eso lo asigno como variable $filas = mysql_fetch_assoc ($result); $nres = mysql_num_rows($result); //Asigno la función a una variable para aplicarla al boton y no tener problemas: $modificame = $this->modificarDatos(); while ($filas) { echo (' <tr> <td><input type="text" name="thisID" value="'.$filas['id_incidence'].'" size="4" /></td> <td><input type="text" name="type" value="'.$filas['type'].'" size="5" /></td> <td><input type="text" name="date" value="'.strftime('%d/%m/%Y', strtotime($filas['date'])).'" size="10" /></td> <td><input type="text" name="customer" value="'.$filas['firstname'].' '.$filas['lastname'].'" /></td> <td> <select name="status"> <option for="status">'.$this->l($filas['status']).'</option> <option for="status"><hr /></option> <option for="status" value="'.$this->l('Unsolved').'">'.$this->l('Unsolved').'</option> <option for="status" value="'.$this->l('In Process').'">'.$this->l('In Process').'</option> <option for="status" value="'.$this->l('Solved').'">'.$this->l('Solved').'</option> </select> </td> <td><input type="text" name="title" value="'.$filas['title'].'" size="30"/></td> <td><input type="text" name="ref_incidence" value="'.$filas['ref_incidence'].'"/></td> <td> <input type="submit" name="submitMod" value="Cambiar" onclick="return $modificame" /></td> </tr> '); //finalizamos $filas = mysql_fetch_assoc ($res); } // Si hemos modificado recargamos la página y consultamos de nuevo para visualizar los cambios: if (isset($_POST['submitMod']) && ($_POST['submitMod'] != '')) {mysql_query($sql);}
¿Podéis decirme qué estoy haciendo mal?
Muchisisisismas gracias.