Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2010, 03:01
Avatar de mahuro
mahuro
 
Fecha de Ingreso: abril-2006
Mensajes: 15
Antigüedad: 18 años
Puntos: 0
Pregunta Pasar valor de consulta mysql a funcion

Hola chicos.

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:
$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>&nbsp;<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);}
El problema: $_POST['id_incidence'] no recoge el valor de cada $filas['id_incidence'], sino el último valor devuelto por la consulta.

¿Podéis decirme qué estoy haciendo mal?

Muchisisisismas gracias.