Foros del Web » Programando para Internet » PHP »

Update de campos dinamicos

Estas en el tema de Update de campos dinamicos en el foro de PHP en Foros del Web. Hola, soy nueva en este foro. Primero os saludo a todos y ahora os hago una consulta: tengo un formulario con una tabla que se ...
  #1 (permalink)  
Antiguo 29/09/2010, 05:09
 
Fecha de Ingreso: septiembre-2010
Ubicación: Pontevedra
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Update de campos dinamicos

Hola, soy nueva en este foro. Primero os saludo a todos y ahora os hago una consulta: tengo un formulario con una tabla que se crea de forma dinamica con una consulta a la base de datos mysql a traves de un do....while...
Hasta aqui todo bien porque me muestra todos los registros de la consulta, el problema esta en que cuando quiero hacer un update de estos registros no se como se llaman los campos, como puedo identificarlos?

Código PHP:
 <?php 
    
do {     
    
?>
    <tr>
    <td><input name="txt_desde" type="text" id="txt_desde" tabindex="7" onKeyUp="this.value=formateafecha(this.value);" value="<?php echo  implode'/'array_reverseexplode'-'$row_grid['desde'] ) ) ); ?>"></td>
    <td><input name="txt_hasta" type="text" id="txt_hasta" tabindex="8" onKeyUp="this.value=formateafecha(this.value);" value="<?php echo  implode'/'array_reverseexplode'-'$row_grid['hasta'] ) ) ); ?>"></td>
    
    <td width="50"><select name="cbo_reg" class="cbo_ancho100" id="cbo_reg" tabindex="10">
      <option value="1" selected <?php if (!(strcmp(1$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>SA</option>
      <option value="2" <?php if (!(strcmp(2$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>HD</option>
      <option value="3" <?php if (!(strcmp(3$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>MP</option>
<option value="4" <?php if (!(strcmp(4$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>PC</option>
    </select></td>
    <td><input name="txt_importe" type="text" id="txt_importe" tabindex="11" onKeyUp="revisaCadena(this)" value="<?php echo $row_grid['importe']; ?>" size="15"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_L'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_L" id="ck_L" tabindex="12"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_M'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_M" id="ck_M" tabindex="13"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_X'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_X" id="ck_X" tabindex="14"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_J'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_J" id="ck_J" tabindex="15"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_V'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_V" id="ck_V" tabindex="16"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_S'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_S" id="ck_S" tabindex="17"></td>
    <td width="32" align="center"><input <?php if (!(strcmp($row_grid['ck_D'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="ck_D" id="ck_D" tabindex="18">
      <input name="id_tar_grid" type="hidden" id="id_tar_grid" value="<?php echo $row_grid['id_tarifa_grid']; ?>" size="2"></td>
  </tr>
  <?php } while ($row_grid mysql_fetch_assoc($grid)); ?>
  #2 (permalink)  
Antiguo 29/09/2010, 07:15
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Update de campos dinamicos

Hola Vuuguma, los campos de un formulario de identifican por el atributo name.
Si envias un form y haces print_r($_POST); verás cómo te llega la información del formulario. Parece que esto ya lo controlas porque tienes todos tus campos con name.
El problema es que en este código, en las siguienes vueltas del bucle nombrará a los campos con los mismos nombre y así pierdes valores. PUedes arreglarlo con un contador tipo:

Código PHP:
<?php
 
    $x 
0//COntador de vueltas
    
do {     
    
?>
    <tr>
    <td><input name="<?=$x?>_txt_desde" type="text" id="txt_desde" tabindex="7" onKeyUp="this.value=formateafecha(this.value);" value="<?php echo  implode'/'array_reverseexplode'-'$row_grid['desde'] ) ) ); ?>"></td>
    <td><input name="<?=$x?>_txt_hasta" type="text" id="txt_hasta" tabindex="8" onKeyUp="this.value=formateafecha(this.value);" value="<?php echo  implode'/'array_reverseexplode'-'$row_grid['hasta'] ) ) ); ?>"></td>
    
    <td width="50"><select name="<?=$x?>_cbo_reg" class="cbo_ancho100" id="cbo_reg" tabindex="10">
      <option value="1" selected <?php if (!(strcmp(1$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>SA</option>
      <option value="2" <?php if (!(strcmp(2$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>HD</option>
      <option value="3" <?php if (!(strcmp(3$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>MP</option>
<option value="4" <?php if (!(strcmp(4$row_grid['reg']))) {echo "selected=\"selected\"";} ?>>PC</option>
    </select></td>
    <td><input name="<?=$x?>_txt_importe" type="text" id="txt_importe" tabindex="11" onKeyUp="revisaCadena(this)" value="<?php echo $row_grid['importe']; ?>" size="15"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_L'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_L" id="ck_L" tabindex="12"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_M'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_M" id="ck_M" tabindex="13"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_X'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_X" id="ck_X" tabindex="14"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_J'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_J" id="ck_J" tabindex="15"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_V'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_V" id="ck_V" tabindex="16"></td>
    <td width="28" align="center"><input <?php if (!(strcmp($row_grid['ck_S'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_S" id="ck_S" tabindex="17"></td>
    <td width="32" align="center"><input <?php if (!(strcmp($row_grid['ck_D'],1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="<?=$x?>_ck_D" id="ck_D" tabindex="18">
      <input name="<?=$x?>_id_tar_grid" type="hidden" id="id_tar_grid" value="<?php echo $row_grid['id_tarifa_grid']; ?>" size="2"></td>
  </tr>
  <?php } while ($row_grid mysql_fetch_assoc($grid));{
  
//lo que sea
  
$x ++;
  } 
?>
A ver si sirve, salu2
  #3 (permalink)  
Antiguo 29/09/2010, 08:36
 
Fecha de Ingreso: septiembre-2010
Ubicación: Pontevedra
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Update de campos dinamicos

Hola repara2, gracias por tu respuesta.
He probado lo que me sugieres pero sigo sin poder actualizar los registros. Cuando hago print_r($_POST); esto es lo que obtengo:

Array ( [_txt_desde] => [_txt_hasta] => [_cbo_reg] => 3 [_txt_importe] => [_ck_L] => on [_ck_M] => on [_ck_X] => on [_ck_J] => on [_ck_V] => on [_id_tar_grid] => 4 [btnOK_x] => 12 [btnOK_y] => 23 [btnOK] => Guardar )

Un saludo,
  #4 (permalink)  
Antiguo 29/09/2010, 10:10
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Update de campos dinamicos

ok, dos cosas

1. en

Código:
Array ( [_txt_desde] => 
[_txt_hasta] => 
[_cbo_reg] => 3 [_txt_importe] => 
[_ck_L] => on [_ck_M] => on [_ck_X] => on [_ck_J] => on [_ck_V] => on [_id_tar_grid] => 4 [btnOK_x] =>  12 [btnOK_y] => 23 [btnOK] => Guardar )
la $x no tiene valor, esto es porque utilicé <?=$x?> y tu server no debe tener activada la directiva short_open_tags = On. Solución: donde pone
Código PHP:
<?=$x?>
ha de ser
Código PHP:
<?php echo $x?>
2. txt_desde, _txt_hasta y otras no tienen valor. Esto es porque

Código PHP:
<?php echo  implode'/'array_reverseexplode'-'$row_grid['desde'] ) ) ); ?>
no devuelve nada. Creo que es un problema de $row_grid['desde'] porque la expresión sí que funciona:

Código PHP:
<?php
echo  implode'/'array_reverseexplode'-'"2010-08-10" ) ));
?>
devuelve 10/08/2010.

A ver si marcha, un saludo
  #5 (permalink)  
Antiguo 29/09/2010, 10:35
 
Fecha de Ingreso: septiembre-2010
Ubicación: Pontevedra
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Update de campos dinamicos

Gracias !!!!!! ahora si ha funcionado.

Tenias razon en que el server no aceptaba ese formato, en cuanto a que las fecha no devolvia nada era porque los campos estaban vacios. Con las prisas por ver el nombre de los campos que enviaba no les puse valor.

Un saludo
  #6 (permalink)  
Antiguo 29/09/2010, 15:06
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Update de campos dinamicos

de nada! un saludo

Etiquetas: campos, dinamicos, update
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 11:29.