• Viernes 3 de Mayo de 2024, 01:42

Autor Tema:  Campo de indice  (Leído 1563 veces)

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Campo de indice
« en: Jueves 18 de Junio de 2009, 22:01 »
0
Hola a todos:

Hay algo que no logro entender; ¿Porque si estoy mostrando en una lista un campo? y asigno ese campo a una variable y además en otra variable trato de almacenar el indice de ese registro, a la siguiente página me pasa el primero pero no la variable donde se supone que tengo el indice. De hecho el registro es grabado pero me coloca un

Aquí va el código:

AgregaAre.php
<body>
<table width="800" border="1"  bordercolor="#CCCCCC"  align="center" cellpadding="10" cellspacing="0">
    <form name='add_are' method='POST' action='grabaa.php'>
        <tr>
        <td colspan='2' bgcolor="#ECEEF0"><div align='center'>
        <p><span class="Estilo1">Agregar AREA</span><br/>
        </p>
        </div></td></tr><tr>
        <td>Seleccione Empresa :</td><td><span>
        <?
                include("config.inc.php");
                $consult_emp="SELECT * FROM empresa ORDER BY Nombre_emp";
                $result=mysql_query($consult_emp) or die ("Fallo la busqueda");
                echo '<select name="Nombre_emp"/>';
                //Generamos el menu desplegable
                while ($row=mysql_fetch_array($result))
                    {
                        echo '<option>'.$row["Nombre_emp"];
                    }
                        $id_emp=$row["id_emp"];
                        $Nombre_emp=$row["Nombre_emp"];
            ?>
        </span></td></tr><tr><td>Nombre Area :</td><td><span>
        <input name='nom_are' type='text' size='80' maxlength='250' />
        </span></td></tr>
        <tr>
          <td>Descripción Area :</td>
          <td><span>
            <input name='des_are' type='text' size='80' maxlength='250' />
          </span></td>
        </tr>
        <br/><tr><td colspan='2' align='center' bgcolor="#ECEEF0">
        <input name='Guardar' type='submit' value='Guardar' /></td>
        </tr>
    </form>
</table>
</body>

Lo recibe grabaa.php
<body>
    <?
   include ("funciones.php");
   $id_emp = $_POST['id_emp'];
   $Nombre_emp = $_POST['Nombre_emp'];
   echo $idemp,"-",$Nombre_emp;
   grabara();
   ?>
    <form name='gra_are' method='POST' >
    <table width="800" border="1"  bordercolor="#CCCCCC"  align="center" cellpadding="10" cellspacing="0">
      <tr>
        <th align="center" bgcolor="#ECEEF0" class="titnoticia2" scope="col">Grabación AREA</th>
      </tr>
      <tr>
        <td bordercolor="#000000"><table width="774" height="35">
          <tr>
            <td><div align="center">
            <? if ($sw=="NO GRABO")
         {
         ?><div align="center" class="Estilo1"><? echo "NO SE PUDO GRABAR REGISTRO"?>
            </div><?
         }
         else
         {?>
            <div align="center" class="Estilo1"><? echo "NUEVO REGISTRO GRABADO EXITOSAMENTE"?>
            </div>
         <? }
         ?>
            </td>
          </tr>
        </table></td>
      </tr>
     
      <tr>
        <td align='center'  bgcolor="#ECEEF0"><a href="menu_are.php">VOLVER</a></span>&nbsp;&nbsp;&nbsp;&nbsp;<span align="right"> <a href="logout.php">SALIR</a></span></td>
      </tr>
    </table>
    </form>
</body>

La función
function grabara()
{
   include ("config.inc.php");
   $sw="sw2";
   $id_emp = $_POST['id_emp'];
   $nom_are = $_POST['nom_are'];
   $des_are = $_POST['des_are'];
   echo $sw,$id_emp,$nom_are,$des_are;
   mysql_query("INSERT INTO area (Empresa_id_emp,Nombre_area,Desc_area) values ('$id_emp','$nom_are','$des_are')", $conexion) or die ($sw="NO GRABO");
   return($gra_are);
}

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Campo de indice
« Respuesta #1 en: Viernes 19 de Junio de 2009, 01:54 »
0
No entiendo muy bien el problema ni la lógica de programación, pero ahí tenés un ciclo en el cual insertas elementos a un dropdown, y despues de cerrar el ciclo le asignas los valores del último registro de la tabla a las variables...
Para empezar a los elementos no les asignas valores ni nada...
Deberías poner algo asi en los options:

<select name="id_emp"/>
while {
   <option value="".$row['id_emp']."">".$row['Nombre_emp']."</option>
}

y si necesitas el nombre lo sacas con la consulta: "SELECT Nombre_emp FROM empresa WHERE ide_emp='".$_POST['id_emp']."'"

y asi ya tenés todos los datos... tenés los 3 campos que mandás (id_emp, y los 2 textboxes) y de ser necesario el nombre lo sacás con la consulta (aunque creo que no lo es).

Espero que sirva.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Campo de indice
« Respuesta #2 en: Viernes 19 de Junio de 2009, 05:54 »
0
Hola chesbor

Gracias por responder, la lógica lo más probable que pueda estar errorea ya que soy nueva en Htlm, PHP y Mysql, vengo de VB6 y estoy aprendiendo. Hay muchas cosas que me resultan y otras me tienen loca, como esta, haber si me puedo explicar mejor;

Tengo un código que me permite, por medio de un botón agregar areas a una empresa, lo primero que hago es mostrar con un <option> las empresas de la BD y asigno a una variable el nombre de la empresa y a otra variable su id, luego se ingresa el nombre del area y su descripción, una vez que se oprime el boton guardar llama a una página que lo único que hace es llamar a la función guardara()  y muestra un mensaje "registro guardado" o "no se pudo guardar el registro". La función guardara() es la que se encarga de grabar y lo hace pero no me guarda el id de la empresa.

No sé si queda un poco más claro, me imagino que hay otros caminos para hacerlo todo en una sola página, pero no he podido dar con ellos.

Probé lo que me sugeriste pero no me funcionó.

Nuevamente agradezco cualquier ayuda que me puedan dar.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Campo de indice
« Respuesta #3 en: Viernes 19 de Junio de 2009, 06:27 »
0
Hola chesbor

¡Me resulto!..... :beer: , gracias a tus indicaciones y una variante.

Creo que no es la solución más optima pero el resultado es el que necesito, lo muestro (¿como cierro el tema?):

Código Agrega.php:
                include("config.inc.php");
                $consult_emp="SELECT * FROM empresa ORDER BY Nombre_emp";
                $result=mysql_query($consult_emp) or die ("Fallo la busqueda");
                echo '<select name="Nombre_emp"/>';
                //Generamos el menu desplegable
                while ($row=mysql_fetch_array($result))
                    {
                       echo "<option value="$id_emp".$row['id_emp'].",".$row['Nombre_emp']."">".$row['Nombre_emp']."</option>";
                    }


Función grabara()
   $Nombre_e=$_POST['Nombre_emp'];
   $separar = explode(',',$Nombre_e);
   $emp=$separar[0];
   $Nombre_emp=$separar[1];
   $nom_are = $_POST['nom_are'];
   $des_are = $_POST['des_are'];
   mysql_query("INSERT INTO area (Empresa_id_emp,Nombre_area,Desc_area) values ('$emp','$nom_are','$des_are')", $conexion) or die ($sw="NO GRABO");

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Campo de indice
« Respuesta #4 en: Viernes 19 de Junio de 2009, 21:44 »
0
Me alegro que funcione... pero no sé por qué querés mandar el dato de nombre de empresa y complicar tanto el asunto (laburando con cadenas, haciendo consultas o como lo resuelvas) si al final solo grabas el id.
(en una de esas lo necesitás para otra cosa y estoy hablando pavadas).
Saludos.

Kataky

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Campo de indice
« Respuesta #5 en: Sábado 20 de Junio de 2009, 01:28 »
0
Hola Chesbor

Lo que pasa es que todavía tengo mucho que aprender de PHP, estoy en pañale y me ha costado entender el manejo de las variables y de las páginas, en otros lenguajes podía hacer un monton de cosas en una sóla pantalla (cargar una base, manipular los datos y actualizar distintos registros, etc..) pero en Html y PHP veo que hay que hacer una página para cada cosa, supongo que debe haber otra forma, seguire investigando y programando a prueba y error, los manuales que he recorrido o no son tan completos o son muy básicos o no tienen lo que necesito.

Nuevamente gracias.

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Campo de indice
« Respuesta #6 en: Sábado 20 de Junio de 2009, 02:24 »
0
NP, cualquier cosa preguntá en algún foro que siempre alguien te va a responder :P, si lo que te interesa es hacer todo desde una misma página tendrías que empezar a ver el tema de AJAX pero ya necesitarías tenerla bastante clara con php.