Ir al contenido


Foto

ASIGNAR VARIABLES A un arhcivo a partir de un formulario dinamico


  • Por favor identifícate para responder
15 respuestas en este tema

#1 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 08 agosto 2013 - 01:50

Hola Poliburro oye disculpa necesito tu ayuda para asignar los valores que recibo en mis formularios de javascript .... lo identifique a cada uno con id distintos mas o menos así está mi .js

[js]"

"  <span class='add-on'>Nombre : </span>"
      "        <input type='text' size='10'  placeholder='Aqui va el Nombre' name=' "  Nombre  "nomb' id=' "  Nombre  "nomb'>" 
      "  <br />"
      "  <br />"
      "  <span class='add-on'> Apellido Paterno:</span>"
      "        <input type='text' size='5'  placeholder='Aqui va el Apellido Paterno ' name=' "  Nombre  "apat' id=' "  Nombre  "apat'>" 
      "  <br />"
      "  <br />"

[/js]

pero ahora no se como pasarlos o asignarlos a una estructura xml por decir para este ejemplo se hace el REQUEST que está el el archivo prueba.php tal y como está en el ejemplo de la pag  http://elpoli.delphi...mpos-dinamicos/ de donde me basé para hacerlos, y a la hora de guardar me queda algo así en el navegador

Array
(
    [1nomb] => Juan
    [1apat] => Ramírez
    [2nomb] => Oscar
    [2apat] => Islas
    [Guardar] => Guardar
    [PHPSESSID] => gr4mmav8kvs2e3kn2782udp494
)


pero ahora quiero que se mande a un archivo XML para que quede algo de esta forma

<autor>
    <nombre> Juan </nombre>
    <apellidopat>Ramírez</apellidopat>
</autor>
<autor>
    <nombre> Oscar</nombre>
    <apellidopat>Islas</apellidopat>
</autor>

pero no se como asignar los valores que capturo en mi archivo y mandarlos, supongo que primero tengo que identificar las variables de mi formulario no ?? y así para saber que va con que, es por eso que pongo a la variable "Nombre" como identificador para el "nom"  y el "apat" de mi autor.. por favor si me puedes ayudar a saber con que programas .. o una idea de hacerlo ya que me vi en otros foros que con Ajax.. pero quiero saber como asignar lo que ya tengo hecho de mis variables y en mis identificadores  y a ellos  asignarles una etiqueta o un atributo de mi archivo XML .. gracias por tu tiempo y ayuda me ha servido de mucho y eh podido explicarles a mis compañeros sobre lo que tu me has enseñado y obvio eh recomendado tu pagina a todos mi conocidos.. gracias por ayudarnos ...
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 08 agosto 2013 - 02:26

gracias por tu tiempo y ayuda me ha servido de mucho y eh podido explicarles a mis compañeros sobre lo que tu me has enseñado y obvio eh recomendado tu pagina a todos mi conocidos.. gracias por ayudarnos ...


Es un gusto ayudar. Me parece que tu necesidad puede ser de ayuda a otros. :) Hoy en la noche escribo un artúiculo de como generar un XML a partir de un Post.

Sobre los identificadores para los campos te sugiero que identidiques cada campo por el contenedor al que pertenece. Ejemplo

Contenerdor1
        cnt1_cmp1_nombrecampo
        cnt1_cmp2_nombrecampo
        Contenerdor2
            cnt2_cmp1_nombrecampo
            cnt2_cmp2_nombrecampo
            Contenerdor3
            cnt3_cmp1_nombrecampo
            cnt3_cmp2_nombrecampo

es una sugerencia


  • 0

#3 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 08 agosto 2013 - 03:51

Ok empezaré con lo de los identificadores ... y te aseguro que espero ese artículo con ansias ... gracias por tu tiempo....
  • 0

#4 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 13 agosto 2013 - 03:29

Hola de nuevo Poliburro hace tiempo me comentaste que posiblemente ibas a subir un artículo de como poder almacenar  datos capturados a través de un formulario en javascript a un archivo XML... cómo el ejemplo que escribí, me sugeriste  que tenía que identificar los contenedores y ya lo hice..... espero y todavía me puedas ayudar de antemano gracias por tu tiempo y ojalá y no te interrumpa en otras labores que estés haciendo....
  • 0

#5 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 agosto 2013 - 07:27

Lo había olvidado mi amigo, :) Hoy lo hago. Saludos
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 agosto 2013 - 07:40

Para que vayas avanzando te comento lo siguiente:

Cuando realizas el post del formulario, todos los inputs asociados son enviados al servidor y estos pueden obtenerse a través de la super variable $_POST,

$_POST no es otra cosa que un arreglo por lo que si haces print_r($_POST) podrás ver su contenido. Ahora bien para convertir esa información a XML puedes hacer uso de algo como lo que publicaron en el siguiente blog:

http://www.codigogra...r-array-en-xml/

Me avisas si con esto puedes avanzar. Saludos


  • 0

#7 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 14 agosto 2013 - 04:09

si ya lo revisé desde la mañana .. pero hay partes que no logro entender por decir en mi capturas del formulario .js como te acordarás es posible que haya varias etiquetas que se puedan repetir para eso es la idea de los identificadores y es ahí donde no se que onda como puedo hacer que el programa sepa que identificadores se le deben asignar por decir en el Array está esto:

[1nom]=>Oscar
[1apat]=>Luz
[2nom]=>Jorge
[2apat]=>Islas

y en mi código XML quiero queme aparezca algo así

<maestros>
<profesor>
<nom>Oscar</nom>
<apat>Luz</apat>
</profesor>
<profesor>
<nom>Oscar</nom>
<apat>Islas</apat>
</profesor>
</maestros>


no se como identificar cada uno de los identificadores de mi Array y tampoco se insertar los atributos para las etiquetas que también van de acuerdo a los identificadores del Array  espero y me entiendas ya que no logro poder hacerlo de antemano gracias por tu tiempo y apoyo ......
  • 0

#8 felper77

felper77

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 14 agosto 2013 - 05:18

Hola, esto te puede servir.

Creas un archivo index.html

<html>
  <head>
    <title>Usuarios</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <script src="http://code.jquery.c...1.js"></script>
    <script type="text/javascript">
      function envia() {
        document.frmusers.submit();
      }
      function agregaUsuario() {
        var usuarios = $('#usuarios');
        var newuser = '<div>' 
                        'Nombre: <input type="text" name="nombres[]" size="20" placeholder="Nombre" /><br/>' 
                        'Apellido : <input type="text" name="apelidos[]" size="20"  placeholder="Apellido">' 
                      '</div><br/><br/>';
        $(usuarios).append(newuser);       
      }
    </script>
  </head>
  <body>
   
    <form name="frmusers" method="post" action="guarda.php">
      <div id="usuarios">
        <div>
          Nombre: <input type='text' name="nombres[]" size='20' placeholder='Nombre' /><br/>
          Apellido : <input type='text' name="apelidos[]" size='20'  placeholder='Apellido'>
        </div><br/><br/>
      </div>
      <br/>
      <br/>
      <input type="button" value="agregar" onclick="agregaUsuario()"> <input type="button" value="guardar" onclick="envia()">
    </form>

  </body>
</html>


En este caso hago uso de jquery para la creacion de los campos dinamicos.

Luego creamos un archivo guarda.php

function generaXml() {
  $log = fopen("xmlusers" . date("h-m-s") . ".xml", "w");
  $xml = new DOMDocument('1.0', 'iso-8859-1');
  $xml->formatOutput = true;
  $nombres = $_REQUEST['nombres'];
  $apellidos = $_REQUEST['apelidos'];
  for ( $i = 0;  $i < count($nombres); $i  ) {
    $autor = $xml->appendChild($xml->createElement("autor"));
    $nombre = $autor->appendChild($xml->createElement("nombre"));
    $nombre->appendChild($xml->createTextNode($nombres[$i]));
    $apellido = $autor->appendChild($xml->createElement("apellidopat"));
    $apellido->appendChild($xml->createTextNode($apellidos[$i]));
  }
  fwrite($log, $xml->saveXML());
  fclose($log);
}
generaXml();


Y asi se genera el archivo xml que necesitas.

Por falta de tiempo no detalo muy bien los pasos a seguir. Si te sirvio mañana los detallo un poco más.

Espero y te sirva, Saludos...
  • 0

#9 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 15 agosto 2013 - 12:51

Que onda oye ... gracias por tu ayuda sabes... no me guarda nada en el archivo xml... es el de "xmlusers" .. lo eh intentado de varias formas y no eh podido .. ya cree el archivo xmlusers.xml y nada de nada .. y obvio no puedo ver si lo almacena bien .. y también te quería preguntar si se pueden crear atributos por que por lo que estuve leyendo los comandos que  me sugeriste son para etiquetas .... pero como te comento no puedo cargar el archivo y no puedo ver si realmente se guardan... no se si me puedan ayudar de antemano gracias ... por su tiempo voy a seguir investigando ....
  • 0

#10 felper77

felper77

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 15 agosto 2013 - 01:03

Hola, si no mal entendo lo que necesitas es crear un archivo xml de n cantidad de usuarios que recibes por medio de un formulario en HTML ¿Es correcto?
  • 0

#11 felper77

felper77

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 15 agosto 2013 - 01:26

Bueno te detallare paso a paso para que me entiendas.

En un directorio de pruebas creamos estos dos archivos:
- index.html
- guarda.php

En index.html agragamos el siguiente codigo.

<html>
  <head>
    <title>Usuarios</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <!-- INCLUIMOS JQUEY EN NUESTRA PAGINA -->
    <script src="http://code.jquery.c...1.js"></script>
    <!-- CREAMOS UN SCRIP NUEVO ESCRIPT -->
    <script type="text/javascript">
      // funcion que envia el formulario con todos los datos
      function envia() {
        document.frmusers.submit();
      }
      // funcion que agrega nuevos campos para capturar datos
      function agregaUsuario() {
        var usuarios = $('#usuarios');
        var newuser = '<div>' 
                        'Nombre: <input type="text" name="nombres[]" size="20" placeholder="Nombre" /><br/>' 
                        'Apellido : <input type="text" name="apelidos[]" size="20"  placeholder="Apellido">' 
                      '</div><br/><br/>';
        $(usuarios).append(newuser);       
      }
    </script>
  </head>
  <body>

    <!-- NUESTRO FORMULARIO PARA CAPTURAR LOS DATOS -->
    <form name="frmusers" method="post" action="guarda.php">
      <div id="usuarios">
        <div>
          Nombre: <input type='text' name="nombres[]" size='20' placeholder='Nombre' /><br/>
          Apellido : <input type='text' name="apelidos[]" size='20'  placeholder='Apellido'>
        </div><br/><br/>
      </div>
      <br/>
      <br/>
      <input type="button" value="agregar" onclick="agregaUsuario()"> <input type="button" value="guardar" onclick="envia()">
    </form>

  </body>
</html>


Ahora en guarda.php agrgamos el siguiente codigo.

<?php

// Aqui podemos hacer un print de $_REQUEST para verificar que recibimos los datos
print_r($_REQUEST);

function generaXml() {
  // Esta funcion te crea el archivo xml en el mismo directorio
  // donde tienes index.html y guarda.php
  $log = fopen("xmlusers" . date("h-m-s") . ".xml", "w");

  // creamos un objeto xml
  $xml = new DOMDocument('1.0', 'iso-8859-1');
  $xml->formatOutput = true;

  // Asignamos los arreglos obtenidos por medio de $_REQUEST a variables
  $nombres = $_REQUEST['nombres'];
  $apellidos = $_REQUEST['apelidos'];

  // Empezamos a general el codigo xml
  for ( $i = 0;  $i < count($nombres); $i  ) {
    $autor = $xml->appendChild($xml->createElement("autor"));
    $nombre = $autor->appendChild($xml->createElement("nombre"));
    $nombre->appendChild($xml->createTextNode($nombres[$i]));
    $apellido = $autor->appendChild($xml->createElement("apellidopat"));
    $apellido->appendChild($xml->createTextNode($apellidos[$i]));
  }

  // Gardamos el objeto xml en el archivo xml
  fwrite($log, $xml->saveXML());
  fclose($log);
}
generaXml();

?>


Al guardar se te generara un archivo xml en el mismo directorio donde estan index.html y guarda.php como el siguiente que se me genero a mi:


<?xml version="1.0" encoding="iso-8859-1"?>
<autor>
  <nombre>Juan</nombre>
  <apellidopat>Perez</apellidopat>
</autor>
<autor>
  <nombre>Pedro</nombre>
  <apellidopat>Lopez</apellidopat>
</autor>


Espero y te sirva, si te genera algun nos dices.

Saludos...

  • 0

#12 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 15 agosto 2013 - 04:48

No inventes no me crea el archivo ya estuve viendo otros tutoriales y no, por ejemplo revisé este Crear Archivos XML en PHP - VideoAprende.com y lo hice tal cual y nada de nada .. a que crees que se deba .... permisos para crear archivos  o que onda .....  no me crea el archivo .. y disculpa que onda con los atributos como los puedo asignar ?? digo por  si en una de esa y me deja crear el archivo y empezar a trabajar ...
  • 0

#13 felper77

felper77

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 15 agosto 2013 - 05:18

Probablemente sea cuestion de permisos, para descartar eso crea un simple archivo de texto con la función fopen.

Es este archivo al que llamaremos 'crea.php' agrega este codigo:

<?php

  $file = fopen("prueba.txt","w");
  fwrite($file, "Esta es una prueba...");
  fclose($file);

?>


Si no te crea el archivo, es cuestion de permisos.

Respecto a los atributos, ¿A que elementos se los quieres asignar o modificar? eso seria los mas facil. Solo explicanos cuales y a que.

  • 0

#14 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 16 agosto 2013 - 11:12

hola .. mi pues creo que ya vi cual es el problema ... creo que es por que estoy ocupando Codeigniter y es un poco chocante en cuanto a al creación de archivos .... tengo que investigar por que es que no me deja crear el archivo... ya copie tanto en una carpeta mi vista que es la  pagina.php y el  archivo donde se almacenan juntos pero ni así me deja crear el archivo ... bueno para los atributos supongamos que tengo algo así cuando hago el $_REQUEST en php

Array (
[1_nomb] => Oscar
[1apat] => Avila
[1amat] => Sarmiento
[1oficina] => AT-123
[1email] => @oscarsarmiento
[1aulavirtual] => www.oscarsarmiento.com
[1aseo1dia] => lunes
[1aseo1inicio] => 9:00
[1aseo1hasta] => 10:00
[1aseo1lugar] => at101
[1aseo2dia] => martes
[1aseo2inicio] => 9:00
[1aseo2hasta] => 10:00
[1aseo2lugar] => at102

[2_nomb] => David
[2apat] => Lopez
[2amat] => Perez
[2oficina] => RS-123
[2email] => @david.com
[2aulavirtual] => www.david.com
[2aseo3dia] => jueves
[2aseo3inicio] => 12:00
[2aseo3hasta] => 13:00
[2aseo3lugar] => S-122
[2aseo4dia] => viernes
[2aseo4inicio] => 11:00
[2aseo4hasta] => 13:00
[2aseo4lugar] => at102
[Guardar] => Guardar ) 

y deseo que se vea en mi archivo xml algo asi
<profesores>
    <profesor>
          <nombre>
              <nomb>Oscar</nomb>
              <apat>Avila</apat>
              <amat>Sarmiento</amat>
          </nombre>
          <oficina>AT-123</oficina>
          <email>@oscarsarmiento </email>
          <aulavirtual>www.oscarsarmiento.com </aulavirtual>
          <asesorias>
              <asesoria dia="lunes" de="9:00" hasta="10:00" lugar="at101"/>
              <asesoria dia="martes" de="9:00" hasta="10:00" lugar="at102"/>
          </asesorias>
    </profesor>
    <profesor>
          <nombre>
              <nomb>David</nomb>
              <apat>Lopez</apat>
              <amat>Perez</amat>
          </nombre>
          <oficina>RS-123</oficina>
          <email>@david.</email>
          <aulavirtual>www.david.com</aulavirtual>
          <asesorias>
              <asesoria dia="jueves" de="12:00" hasta="13:00" lugar="S-122"/>
              <asesoria dia="viernes" de="11:00" hasta="13:00" lugar="at102"/>
          </asesorias>
    </profesor>
<profesores>

como ves identifique cada uno de los profesores ya sea con "1" o "2"  al principio y mi idea es de ahí partir e ir identificando cada campo en su respectiva etiqueta o atributo, por decir el identificador  [2aseo3dia] => jueves, va a dar pauta para crear una etiqueta asesoría donde se crearía el atributo (día="jueves") y después el siguiente que es [2aseo3inicio] => 12:00 va a crear el atributo (de="12:00") el siguiente  [2aseo3hasta] => 13:00 crearía el atributo (hasta="13:00") y por ultimo [2aseo3lugar] => S-122 el atributo (lugar="S-122")  la idea es irse moviendo  entre los identificadores y agruparlos para así poder determinar cual es con cual ... no se si me entiendas y veas la utilidad de mis identificadores para cada uno de mis profesores  y su etiquetas y atributos ojalá y me puedas ayudar la verdad me ayudarías mucho..... te agradezco tu tiempo y ayuda ......
  • 0

#15 felper77

felper77

    Member

  • Miembros
  • PipPip
  • 27 mensajes

Escrito 16 agosto 2013 - 12:32

Hola.

No hay problema con generar el archivo xml de la forma que quieras. Antes me gustaria hacerte unas recomendaciones:
Es más facil que en lugar de crear y enviar multiples elemetos 'input' envies solo uno como un arreglo, por ejemplo:

  <input type='text' name="1_nomb" size='20' />
  <input type='text' name="2_nomb" size='20' />
  <input type='text' name="3_nomb" size='20' /> ...


es más practico que envies solo un elemento 'input' (nomb[]) como arreglo

  <input type='text' name="nomb[]" size='20' />

Asi se enviara un arreglo del tamaño que sea necesario, el cual podras recorrer y accesar a sus indices de la forma que quieras.

Y asi para todos los campos que necesites: nomb[], apat[],  amat[], oficina[], ...

Ahora respecto a la funcion de jquery que utilice es bastante sencilla y lo que hace es crearte nuevos campos de captura e insertarlos debajo de los ultimos que ya tienes, puedes modificar la varibale 'newuser ' de la funcion 'agregaUsuario()' a tu gusto, solo debe ser igual a los elementos que defines en tu formulario de captura.

Espero me entiendas hasta ahi  :)

Cuando envias esto y haces un print_r($_REQUEST) veras que te llegaron multiples arreglos ordenados con los indices correspondientes a cada profesor que capturaste.

Ya que recibiste los datos correctamente la generacion del archivo xml la puedes hacer igual a la que me pusiste de ejemplo.

Porque no intentas primero esto y si te sale todo bien hasta este paso, con gusto te digo como generar el archivo xml que necesitas...

Saludos...
  • 0

#16 angel1201

angel1201

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 16 agosto 2013 - 05:19

hola que tal ya estuve haciendo lo que me menciones pero me encontré con pequeño detalle a lo mejor no lo había explicado .. pero un profesor puede tener varias asesorías .. estoy manejando formularios dinámicos.... y era por eso que ocupaba de esa forma los identificadores.....por decir

[1aseo1dia] => lunes
[1aseo1inicio] => 9:00
[1aseo1hasta] => 10:00
[1aseo1lugar] => at101
[1aseo2dia] => martes
[1aseo2inicio] => 9:00
[1aseo2hasta] => 10:00
[1aseo2lugar] => at102

Esto en idea es que el profesor numero "1" tiene una asesoría "aseso"... la cual está identificada por otro contador 1 o 2 ..... donde la asesoría 1  es el día lunes inicio a las 9:00 hasta 10:00 lugar at101 la segunda asesoría para el profesor numero 1  es el día martes inicia a las 9:00 hasta las 10:00 lugar at102 .. y siguiendo con la secuencia el profesor 1 puede tener n asesorías pero esas asesorías están identificadas con el lugar inicio hasta y lugar ... a la ves el formulario puede agregar  otro profesor el cuál en mis identificadores cambiaría a el numero 2 y de igual forma este también puede o no tener asesorías .... mira voy a subir los archivos para que te des mejor una idea..... ojalá y me puedas ayudar ya que este ejemplo es uno facíl ...    jajaja por que son solo dos formularios dinámicos uno dentro de otro pero tengo otros en donde tengo 5 formularios dinámicos uno dentro de otro  y como te digo quiero identificarlos y poder mandarlos a un archivo XML... de ante mano gracias por tiempo y apoyo

Archivos adjuntos


  • 0




IP.Board spam blocked by CleanTalk.