Gracias Vallu, pero no es eso.
Haciéndolo como tu mencionas solamente me devuelve un resultado (no todos como necesitito y me genera un error de Mysql de falta de registros en la base de datos).
Pero no hay problema. un colega me ha propuesto una solución al problema.
Problema: el sistema entiende que todos los registros mostrados forman parte del mismo formulario.
Solución: identificar de manera unívoca cada resultado.
De esta manera, la función que ejecuta la modificación quedaría así:
Código:
public function modificarDatos(){
global $error;
if(isset($_POST['submitMod']) && $_POST['submitMod'] != ''){
// echo("<pre>"); print_r($_POST); echo("</pre>");
if($_POST["idIncidence"] > 0){
$idIncidence = (int)$_POST["idIncidence"];
$consulta = "
UPDATE "._DB_PREFIX_."incidences SET
type = '".$_POST['type_'.$idIncidence]."',
status = '".$_POST['status_'.$idIncidence]."',
title = '".$_POST['title_'.$idIncidence]."'
WHERE id_incidence = ".$idIncidence."
;";
mysql_query($consulta);
if (!mysql_query){
$error .= ($consulta.'<br />');
$error .= ('Error MySQL: '.mysql_error());
}
}
}
}
Y cada registro del formulario así:
Código:
while ($filas) {
echo ('
<tr>
<td><input type="text" name="thisID_'.$filas['id_incidence'].'" value="'.$filas['id_incidence'].'" size="4" /></td>
<td><input type="text" name="type_'.$filas['id_incidence'].'" value="'.$filas['type'].'" size="5" /></td>
<td><input type="text" name="date_'.$filas['id_incidence'].'" value="'.strftime('%d/%m/%Y', strtotime($filas['date'])).'" size="10" /></td>
<td><input type="text" name="customer_'.$filas['id_incidence'].'" value="'.$filas['firstname'].' '.$filas['lastname'].'" /></td>
<td>
<select name="status_'.$filas['id_incidence'].'">
<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_'.$filas['id_incidence'].'" value="'.$filas['title'].'" size="30"/></td>
<td><input type="text" name="ref_incidence_'.$filas['id_incidence'].'" value="'.$filas['ref_incidence'].'"/></td>
<td> <input type="submit" name="submitMod" value="Cambiar" onclick="this.form.idIncidence.value = '.$filas['id_incidence'].'; return true;" /></td>
</tr>
');
//finalizamos
$filas = mysql_fetch_assoc ($res);
}
Para que cada submit pase el valor adecuado a la función he usado un poquito de javascript en el input submit:
Código:
onclick="this.form.idIncidence.value = '.$filas['id_incidence'].'; return true;"
Haaaala! Gracias por todo y espero os sirva (yo me he tirado una semana dándole vueltas y no encontraba la solución. Menos mal que me ha ayudado un colega)
Gracias Ramón ;)