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

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>&nbsp;<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 ;)