• Lunes 29 de Abril de 2024, 20:40

Autor Tema:  Recuperar variables de un arreglo llenado con while  (Leído 3725 veces)

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Recuperar variables de un arreglo llenado con while
« en: Martes 30 de Junio de 2009, 02:28 »
0
Hola a todos

Estoy en blanco después de todo un fin de semana programando. Tengo una encuesta que muestro por pantalla (60 registros) la idea es poder editar la pregunta, cargo las preguntas con un while (funciona regio) pero cuando pincho  Guardar me voy a otra página pero no sé como sacar las variables $id y $preg para guardarlas, deberían estar en un arreglo.

Lo que muestro:
<body>
<table width="962" border="1"  bordercolor="#CCCCCC"  align="center" cellpadding="10" cellspacing="0">
<form id="edita_enc" name="edita_enc" method="post" action="ed_enc_ed1a.php">
        <tr>
        <td align="center" colspan='7' bgcolor="#ECEEF0">
        <p><span class="Estilo1">EDITAR  ENCUESTA ---&gt; ESTILOS DE DIRECCIÓN</span><br/>
        </td>
        <?
         include("config.inc.php");
         $consult_emp="SELECT * FROM encuesta ORDER BY tipo_enc";
         $result=mysql_query("SELECT * FROM ed_aut_1",$conexion) or die ("Fallo la busqueda");
         
      ?>
        <tr>
          <TD width="57"><strong>Nro.</strong></TD>
          <TD width="47"><strong>Opción</strong></TD>
          <TD width="674"><strong>Pregunta Encuesta</strong></TD>
          <TD width="94">&nbsp;</TD>
        </TR>
    <?
      while ($row=mysql_fetch_array($result))
         {
            ?><tr>
              <TD><div align="center">
                <input name="id" type="hidden" value='<? echo $row["0"] ?>' size="3"/>
                    <input name='nro' type='text' value='<? echo $row["1"] ?>' disabled="disabled" size="3"/>
      </div></TD>
              <TD><div align="center">
                <input name='opcion' type='text' value='<? echo $row["2"] ?>'  size="3"/>
      </div></TD>
              <TD><input name='preg' type='text' value='<? echo $row["3"] ?>' size='115' maxlength='250' /></TD>

              <TD><a href="ed_enc_ed1a.php">Guardar</a></TD>
    </TR>
                <?
            }   
   ?>
        <br/>
        <tr>
        <td align="center" colspan='7' bgcolor="#ECEEF0">
        <a href="menu_enc.php">VOLVER</a></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;<input name='Guardar' type='submit' value='Guardar' />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span align="right">
        <a href="logout.php">SALIR</a>      </div>        </td>
    </form>
</table>
</body>

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #1 en: Martes 30 de Junio de 2009, 04:08 »
0
Todo eso está medio raro... pero un par de observaciones para empezar:

$consult_emp="SELECT * FROM encuesta ORDER BY tipo_enc";                 para que está esa linea si esa consulta nunca se ejecuta?

<input name='nro' type='text' value='<? echo $row["1"] ?>' disabled="disabled" size="3"/>                  la barra antes del ">" no va, y en vez de "disabled="disabled"" iría un "readonly"

y para tomar los datos, no creo que sea muy dificil, al enviar los datos luego los agarras con $_POST en ed_enc_ed1a.php.

Espero haber ayudado...

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #2 en: Martes 30 de Junio de 2009, 04:51 »
0
Hola chesbor

Siempre tan atento, gracias.

Tienes toda la razón  que esa consulta no va, ya estoy media mareada de tanto PHP y no conocía el readonly, lo probaré y la barra es sólo otro error.

Mi problema está en que muestro perfectamente los 60 registro con su respectivo Guardar pero en el momento que llega a ed_enc_ed1a no sé como sacar el registro que se vactualizó, supongo que es con un $id[0]=$_POST['id[0]'] o debo tomar todos y grabarlos, lo que no es la idea, simplemente me perdí....

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #3 en: Martes 30 de Junio de 2009, 05:31 »
0
Ahpa ahpa ahpa, ya entendí lo que querés hacer...
En ese caso tenés que darle nombres DISTINTOS a cada campo, con un contador o algo por el estilo, por ejemplo:

Código: Text
  1.  
  2. <?
  3. $a = 0;
  4. while ($row=mysql_fetch_array($result))
  5. {
  6. $a++;
  7. ?><tr>
  8. <TD><div align="center">
  9. <?PHP
  10. echo "<input name="id".$a."" type="hidden" value='".$row['0']."' size="3"/>";
  11. echo "<input name="nro".$a"" type='text' value='".$row['1']."' readonly size="3"/>";
  12. ?>
  13. </div></TD>
  14. <TD><div align="center">
  15. <?PHP
  16. echo "<input name="opcion".$a."" type='text' value='".$row['2']."' size="3"/>";
  17. ?>
  18. </div></TD>
  19. <TD>
  20. <?PHP
  21. echo "<input name="preg".$a."" type='text' value='".$row['3']."' size='115' maxlength='250' /></TD>";
  22. ?>
  23. <TD><a href="ed_enc_ed1a.php">Guardar</a></TD>
  24. </TR>
  25. <?
  26. }
  27. ?>
  28.  
  29.  

Eso te va a generar los campos con nombres
id1
nro1
opcion1
preg1

y vas a poder tomar esos datos con un contador (para ir tomandolos todos), o uno por uno si sabés cual querés, de la siguiente forma en el archivo ed_enc_ed1 de la siguiente forma:

$_POST['id'.$a]
(para usar $a como contador o como variable definida en alguna parte del script)

o:
$_POST['id1']
$_POST['id2']
etc
Para tomar el dato de un solo campo fijo.

Espero que sirva.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #4 en: Martes 30 de Junio de 2009, 21:47 »
0
Hola chesbor

Hice los cambios que me sugeriste y que con mi poco conocimiento creo que están correcto, pero veo que tengo problemas con el manejo de las variables, no logro pasarlas al segundo script, te copio lo que hice:

ed_enc_ed1.php
<body>
<form name="ed_enc_ed1" method="post">
        <tr>
        <td align="center" colspan='6' bgcolor="#ECEEF0">
        <p><span class="Estilo1">EDITAR  ENCUESTA ---&gt; ESTILOS DE DIRECCIÓN</span><br/>
        </td>
        <?
         include("config.inc.php");
         $consult_emp="SELECT * FROM encuesta ORDER BY tipo_enc";
         $result=mysql_query("SELECT * FROM ed_aut_1",$conexion) or die ("Fallo la busqueda");
      ?>
    <tr>
    <TD width="88"><span class="Estilo2">&nbsp;<B>Nro. Pregunta</B>&nbsp;</span></TD>
    <TD width="71"><span class="Estilo2">&nbsp;<B>Opción</B>&nbsp;</span></TD>
    <TD><span class="Estilo2">&nbsp;<B>Pregunta Encuesta</B>&nbsp;</span><span class="Estilo2">&nbsp;<B></B>&nbsp;</span></TD>
    </TR>
    <?
      $a=0;
      while ($row=mysql_fetch_array($result))
         { $a++;
   ?>
    <tr>
        <TD><div align="center">
               <input name="id[a]" type="hidden" value="<? echo $row['0'] ?>" size="3"/>
               <input name="nro".$a"" type='text' value="<? echo $row['1'] ?>" disabled="disabled" size="3"/>
            </div>
        </TD>
        <TD><div align="center">
            <input name="opcion".$a."" type='text' value="<? echo $row['2'] ?>" size="3"/>
            </div>
        </TD>
        <TD>
            <input name="preg".$a."" type='text' value="<? echo $row['3'] ?>" size='115' maxlength='250' />
        </TD>
   </TR>
   <?
   }
   ?>
   <br/>
   <tr>
   <td align="center" colspan='7' bgcolor="#ECEEF0">
   <a href="menu_enc.php">VOLVER</a></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   &nbsp;
    <a href="grab_enc1.php">Guardar</a>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span align="right">
   <a href="logout.php">SALIR</a> </div> </td>
    </form>
</table>
</body>

grab_enc1.php
    <?
   include ("config.inc.php");
   $a=0;
   $a1=$_POST['preg1'];
   $b1=$_POST['id1'];
   echo $a1,"-->",$b1;
   mysql_query("UPDATE ed_aut_1 SET pregunta='$a1' WHERE id_pre='$b1'", $conexion) or die ($sw="NO GRABO");
   $a++;                             // probando a actualizar un sólo registro

   ?>

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #5 en: Martes 30 de Junio de 2009, 23:38 »
0
Hay 2 cosas mal que hacen que no envíe las variables... primero:

No debería ser <a href="grab_enc1.php">Guardar</a>, porque eso solo abre la página, no le envía los datos del formulario, debería ser <input type="button" name="enviar"> por ejemplo...

Y en la linea

<input name="id[a]" type="hidden" value="<? echo $row['0'] ?>" size="3"/>

debería ser

echo "<input name="id".$a."" type="hidden" value="".$row['0']."" size="3">";

en esa línea hay 2 cosas mal, primero, que no es id[0] sino id.$a (para concatenar la palabra id al valor de la variable $a en ese momento. Y el segundo error, que está en todas las lineas, es que el echo debería imprimir toda la linea, no solo la parte del valor, porque también tenés que modificar el nombre del campo con php.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #6 en: Miércoles 1 de Julio de 2009, 00:49 »
0
Hola chesbor

Sos grandioso, sólo tengo que ajustar la visualización y queda fantástico.

Nuevamente mil gracias :good:  :good:

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Recuperar variables de un arreglo llenado con while
« Respuesta #7 en: Miércoles 1 de Julio de 2009, 01:41 »
0
NP, espero que salga bien :P.