Foros del Web » Programando para Internet » PHP »

valor de un registro en un foreach

Estas en el tema de valor de un registro en un foreach en el foro de PHP en Foros del Web. Aupa, Tengo el siguiente codigo y a la hora de darle al boton modificar que esta dentro del foreach, me coge el ultimo valor del ...
  #1 (permalink)  
Antiguo 01/07/2004, 08:03
 
Fecha de Ingreso: mayo-2004
Mensajes: 70
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta valor de un registro en un foreach

Aupa,

Tengo el siguiente codigo y a la hora de darle al boton modificar que esta dentro del foreach, me coge el ultimo valor del la tabla y no me coge el valor del registro que quiero modificar:

Código PHP:
  foreach ($row as $thiscat){
                        ?>
                         <tr bgcolor='#dddddd'>
                        <td>
                        <input type = "hidden" name = "codusuario" value = "<?php echo $thiscat['codusuario']; ?>" >
                        <input type = "checkbox" name = "seleccion[]" value = " <?php echo $thiscat['codusuario'];?>"></td>
                        <td width = "10" align = "center" valign = "middle">
                        <input type = "image" name = "modificar" value = "modif" src = "images/button_modif.png" width = "12" height = "13" border = "0" alt = "Modificar">
                        </td>
                        <td width = "10" align = "center" valign = "middle">
                        <input type="image" name="borrar" value ="borrar" src="images/button_drop.png" width="12" height="13" border="0" alt="Borrar"  onclick="return confirm('¿Estas seguro de querer borrar el usuario :<?php echo $thiscat['codusuario'?>')"></td>
                        <?php
                        
echo"<td>".$thiscat['codusuario']."</td>
                        <td>"
.$thiscat['password']."</td>
                        <td>"
.$thiscat['admin']."</td>
Quiero tener el buen valor de $codusuario y no el ultimo de l foreach.
Con el seleccion funciona pero no quiero hacerlo asi. ya que el seleccion sirve para borrar varios regitros que haya seleccionado. Yo desde las lineas que me devuelve lo que quiero es darle al modificar de una linea y tener el buen valor en $codusuario.


Gracias,

Un saludo,

Niko
  #2 (permalink)  
Antiguo 01/07/2004, 09:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y .. donde cierras el foreach () { ? con su } correspondiente?.

Un saludo,
  #3 (permalink)  
Antiguo 01/07/2004, 09:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 70
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta

he puesto solo un trozo si quieres te lo pongo aqui entero:
pero se acababa despues:

Código PHP:
foreach ($row as $thiscat){
?>
<tr bgcolor='#dddddd'>
<td>
<input type = "hidden" name = "codusuario" value = "<?php echo $thiscat['codusuario']; ?>" >
<input type = "checkbox" name = "seleccion[]" value = " <?php echo $thiscat['codusuario'];?>"></td>
<td width = "10" align = "center" valign = "middle">
<input type = "image" name = "modificar" value = "modif" src = "images/button_modif.png" width = "12" height = "13" border = "0" alt = "Modificar">
</td>
<td width = "10" align = "center" valign = "middle">
<input type="image" name="borrar" value ="borrar" src="images/button_drop.png" width="12" height="13" border="0" alt="Borrar"  onclick="return confirm('¿Estas seguro de querer borrar el usuario :<?php echo $thiscat['codusuario'?>')"></td>
<?php
echo"<td>".$thiscat['codusuario']."</td>
<td>"
.$thiscat['password']."</td>
<td>"
.$thiscat['admin']."</td>
<td>"
.$thiscat['nombre']."</td>
<td>"
.$thiscat['direccionu']."</td>
<td>"
.$thiscat['codpostalu']."</td>
<td>"
.$thiscat['provinciau']."</td>
<td>"
.$thiscat['paisu']."</td>
<td>"
.$thiscat['telf']."</td>
<td>"
.$thiscat['fax']."</td>
<td>"
.$thiscat['email']."</td>
<td>"
.$thiscat['fecha']."</td>
  </tr>"
;
}
  #4 (permalink)  
Antiguo 02/07/2004, 06:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En lugar de tu foreach() deberías usar un:

while ($row=mysql_fetch_array($resultado)){

siendo $resultado=mysql_query($sql);

Si tu haces un sólo:

$row=mysql_fetch_array($resultado);

y luego tu
foreach($row ....)

Sólo vas a abtener un registro de ese record-set (resultados) obtenidos por $resultado de ejecutar tu sentencia SQL.

Las funciones mysql_fetch_xxxx() funciona de la siguiente manera:
"A cada petición de la función .. obtiene un registro de tu resultado completo y mueve el puntero interno del registro (en el resultado) una posición hacia adelante".

Por ende .. por eso se usa el bucle tipo while() con la asignación de una variable a mysql_fetch_xxxx() .. Así puedes decir "mientras que no resulta 'false' (que no llega al final de los resultados) .. continua ejecutando el bucle y en consecuencia pidiendo más ejecuciones de mysql_fetch_xxx()"

Un saludo,
  #5 (permalink)  
Antiguo 02/07/2004, 08:50
 
Fecha de Ingreso: mayo-2004
Mensajes: 70
Antigüedad: 19 años, 11 meses
Puntos: 0
Aupa ,

Gracias, pero ese no es mi problema el asunto es que no consigo enviar el valor de $codusuario porque el valor del campo hidden siempre coge el ultimo valor de mi foreach cuando le doy al boton modificar,

sin embargo si selecciono el checkbox y le doy a modificar, seleccion[] que es el valor del checkbox tendra un solo registro y sera el buen codigo de usuario.





En post tendre:
codusuario = ultimo valor de mi busqueda
seleccion = el valor que quiero el que he seleccionado


lo que no quiero es tener que darle siempre al checkbox para luego darle al boton de modificar que esta en la mima linea.
Es mas bien un tema de asignacion de valor que de bucle porque ya te digo que el checkbox coge el buen valor

Gracias,

Un saludo,

Niko
  #6 (permalink)  
Antiguo 02/07/2004, 12:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En ese caso ..
tus variables del formulario .. todas tienen que ser de tipo array:

<input type = "hidden" name = "codusuario[]" ....>

En tu script PHP de proceso tendras que recorrer ambos arrays de indices iguales con un bucle for() .. Si el valor de codusuario[] tiene que ser tomado si el checkbox "seleccion[]" es seleccionado, para recorrer tu bucle for() usa para contar los elementos del bucle el array "seleccion[]". Si todos los valores que tienen tus vairble (hidden) codusuario[] has de recibirlos y leerlos en tu script de proceso, en lugar de contar (count()) los checkbox (que sólo pasa su valor si se seleciona) .. cuenta el otro array.

Código PHP:
for ($x=0$x<count($_POST['codusuario']); $x++){
echo 
$_POST['codusuario'][$x].'<br>';
echo 
$_POST['selecion'][$x];

Así, .. tu checkbox podrá tener valor simplemente de "1" entendiendose que si se selecciona pasa a tu script PHP dicho valor y si no se selecciona no pasa.

Un saludo,
  #7 (permalink)  
Antiguo 04/07/2004, 10:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 70
Antigüedad: 19 años, 11 meses
Puntos: 0
Gracias,

Pero que pasa si tengo que poner un campo de insercion en cada linea.

¿Como asocio el valor introducido al seleccion?

He probado con un <input type = "text" name = "can[]" size = "3"> pero si selecciono 2 lineas no contiguas ya no funciona porque los indices del array seleccion va 0,1,etc, mientras que el array can va en funcion del numero de lineas de mi foreach. Y entonces no se como asociar una linea seleccionada con su cantidad introducida.


Gracias,

Un saludo,

Niko.
  #8 (permalink)  
Antiguo 05/07/2004, 09:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En ese caso .. Usa indices própios para tu array.

<input type = "text" name = "can[<? echo $id_registro ?>]" size = "3">

En el bucle foreach() puedes obtener el indice del array que lees tipo:

foreach ($can as $id_registro=>$valor){
}

Pero .. si necesitas N elementos más .. lo ideal es propagar en un campo hidden ese "ID" de registro que hace único y relaciona cada "línea" (fila) con el resto de campos (columnas) quedando:

bucle (){
<input type="hidden" name="id[]" value="<? echo $id_registro ?>" >"
<input type="text" name="can[]">
}

De esa manera .. recorres el array ID tomando su valor . .el cual lo usaras para "relacionar" tus datos con en tu "UPDATE o consulta SQL condicional" bajo ese ID

Tendras valores tipo
[0]id=1
[0]can=nose

[1]id=3234
[1]can=blabla

[2]id=91
[2]can=mas blabla

El bucle for() o foreach() (o cualquier otro que quieras usar) simplemente lo usaras para recorrer esas N opciones que "traen" datos, pero a efectos internos de tu aplicación y base de datos .. el dato que te interesa para relacionarlos en tus BD es ese "id" que su valor ya llega en uno de esos N arrays que usas (pero oculto bajo un campo hidden y en el mismo indice del array que los demás que asocia).

Un saludo,
  #9 (permalink)  
Antiguo 06/07/2004, 08:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 70
Antigüedad: 19 años, 11 meses
Puntos: 0
Muchisimas muchisimas gracias, esto del indice unico por linea es lo que en el fondo queria.

No se que hubiera hecho sin ti.


Gracias,

Un saludo,

Niko.
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 21:29.