Foros del Web » Programando para Internet » PHP »

Modificación de datos en PHP dada una consulta.

Estas en el tema de Modificación de datos en PHP dada una consulta. en el foro de PHP en Foros del Web. Buenos días. En una página realizo una consulta que muestro en pantalla, de la siguiente forma: Código: $consulta = consultar (); while($datos=mysql_fetch_array($consulta)){ $ID=$datos["IDCosa"]; $N=$datos["NumCosa"]; $P=$datos["PCosa"]; ...
  #1 (permalink)  
Antiguo 30/06/2008, 04:05
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 16 años, 5 meses
Puntos: 14
Modificación de datos en PHP dada una consulta.

Buenos días.


En una página realizo una consulta que muestro en pantalla, de la siguiente forma:
Código:
			$consulta = consultar ();
			while($datos=mysql_fetch_array($consulta)){
				$ID=$datos["IDCosa"];
				$N=$datos["NumCosa"];
				$P=$datos["PCosa"];
				$FL=$datos["FechaLanzamientoCosa"];
				?>
				?>
				<TR ALIGN=CENTER>
					<TD>
						<?echo($N);?>
					</TD>
					<TD>
							<?echo($P);?>
					</TD>
					<TD>
							<?echo($FL);?>
					</TD>
					<TD>
						<INPUT type='hidden' name='IDinput' value='<?=$ID?>'>
						<INPUT type='hidden' name='NPinput' value='<?=$N?>'>
						<INPUT type='hidden' name='POinput' value='<?=$P?>'>
						<INPUT type='hidden' name='FLinput' value='<?=$FL?>'>
						<INPUT type='SUBMIT' name='PREVISUALIZAR' value='<---'>
					</TD>
				</TR>
			<?}?>
			</TABLE>
Obviamente esto es sólo parte del código de consulta. La parte en que está el código que usa esta información y el form que hace que el submit llame a la misma página está arriba.
Esta parte mostraría en pantalla una série de filas con datos, y en la última columna de cada fila, un pequeño botón '<---' que al pulsarlo, enviaría un formulario con los datos de la fila seleccionada.

Es decir, si hay 10 'cosas', habrían 10 filas con un '<---' en cada una. Al hacer click en uno de esos '<---', enviaría al formulario los datos de esa fila.


El problema es que no importa donde haga click, que me envia los datos de la última consulta.

¿Cómo podría hacer para que se enviaran los datos de la fila seleccionada?
  #2 (permalink)  
Antiguo 01/07/2008, 06:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Modificación de datos en PHP dada una consulta.

No se si es el foro para responder esto, estamos en MySQL y tu problema es de php... pero bueno.

Yo normalmente lo que hago en estos casos es individualizar los registros, me explico si en la definicion de los inputs agregas un id distinto para cada registro ya tendras las filas diferenciadas y el submit se podrà hacer sobre la fila correspondiente.

Para ello usa una variable php $i que se incremente en cada vuelta del while que recorre el resultado de la consulta y en los intputs haces que los id cambien en funcion de la $i (<INPUT type='hidden' name='IDinput<?=$i ?>' id='IDinput<?=$i ?>' value='<?=$ID?>'>.

Otra forma quizas mas sencilla seria convertir el input tipe submit en button y en el onclick llamar el fichero que tiene que mostrar la previsualizació pasandole como parametro el IDCosa a mostrar para que pueda volver a hacer la cunsulta ahora sobre el id concreto...

<INPUT type='SUBMIT' name='PREVISUALIZAR' value='<---' onclick=funcion javascript + parametro IDCosa>

Si ya estas mostrando todo los datos y quieres evitar una segunda consulta a la base de datos usa la primera opción y que la funcion javascript pase por parametros todos los datos de la fila $i...

Lo que no puedes hacer es montar un macro formulario con muchos submit (indiferenciados) y esperar que solo porque el boton esta en una fila solo mande los datos de esa fila... esto sugiere otra solución abrir y cerrar un formulario nuevo para cada registro y luego obviamente cada submit mandará solo los datos de su formulario...

ufff que rollo no se si me habras entendido, si no repregunta...

Quim
  #3 (permalink)  
Antiguo 01/07/2008, 09:43
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: Modificación de datos en PHP dada una consulta.

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 29/12/2008, 03:23
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Modificación de datos en PHP dada una consulta.

Gracias quimfv, finalmente encontré la solución al poco (lo siento por tu tiempo...).

La solución fue abrir form y cerrar form dentro del while. De esta forma, se diferencian los form y cada "submit" tiene sus hidden diferenciados.

El código es:
Código:
while($datos=mysql_fetch_array($cosas)){
	$ID=$datos["IDcosas"];
	$NP=$datos["Numcosas"];
	$NA=$datos["Numcosas2"];
	$PO=$datos["Poblacion"];
	$FL=$datos["FechaLanzamiento"];
	$FP=$datos["FechaParada"];
	$FT=$datos["FechaTerminacion"];
	?>
	<FORM ACTION='<?=$PHP_SELF?>' METHOD='POST'>
	<TR ALIGN=CENTER HEIGHT=100%>
		<TD>
			<DIV CLASS=CABAZUL>
				<?echo($NP);?>
			</DIV>
		</TD>
		<TD>
			<DIV CLASS=CABAZUL>
				<?echo($NA);?>
			</DIV>
		</TD>
		<TD>
			<DIV CLASS=CABAZUL>
				<?echo($PO);?>
			</DIV>
		</TD>
		<TD>
			<DIV CLASS=CABAZUL>
				<?echo($FL);?>
			</DIV>
		</TD>
		<TD>
			<DIV CLASS=CABAZUL>
				<?echo($FP);?>
			</DIV>
		</TD>
		<TD>
			<DIV CLASS=CABAZUL>
				<?echo($FT);?>
			</DIV>
		</TD>
		<TD CLASS=2>
			<INPUT type='hidden' name='IDinput' value='<?=$ID?>'>
			<INPUT type='hidden' name='NPinput' value='<?=$NP?>'>
			<INPUT type='hidden' name='NAinput' value='<?=$NA?>'>
			<INPUT type='hidden' name='POinput' value='<?=$PO?>'>
			<INPUT type='hidden' name='FLinput' value='<?=$FL?>'>
			<INPUT type='hidden' name='FPinput' value='<?=$FP?>'>
			<INPUT type='hidden' name='FTinput' value='<?=$FT?>'>
			<INPUT type='SUBMIT' name='PREVISUALIZAR' value='<---'>
		</TD>
	</TR>
	</FORM>
<?}?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:38.