We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 7885
    • 40 Posts
    esto es muy útil cuando queremos guardar información a una base de datos distinta a las que vienen con modx, claro que también funcionará con ellas. para que esto funcione, necesitaremos conocer eForm previamente.

    La gracia de este acercamiento al ingreso a las bases de datos es que utilizamos el poderoso motor de validación de eForm previo a enviar la información a la base de datos.

    nota: el código de este snippet es una versión modificada de eForm2db de pixelchutes, así que él debe llevarse los créditos por el desarrollo de esta alternativa, yo simplemente me rompí la cabeza unas horas hasta que logré entenderlo y juntar toda la información de manera que otros en la comunidad tengan la posibilidad de acceder a un completo tutorial a la herramienta.

    primero: haremos una tabla llamada cargas en la base de datos de modx

    CREATE TABLE `cargas` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `fullname` varchar(255) NOT NULL,
      `rut` varchar(15) NOT NULL,
      `sexo` varchar(5) NOT NULL,
      `edad` int(1) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT;


    segundo: necesitamos un formulario para enviar la información a la base de datos, es por eso que crearemos un nuevo chunk llamado nuevaCarga

    <p class="error">[+validationmessage+]</p>
    <form method="post" action="[~[*id*]~]" id="nuevaCarga" name="nuevaCarga">
    	<fieldset>
    		<label for="cfName">full name:
    		<p><input name="fullname" id="cfName" class="text" type="text" eform="Your Name::1:" /></p></label> 
    		<label for="cfEmail">rut:
    		<p><input name="rut" id="cfEmail" class="text" type="text" /></p> </label> 
    		<label for="cfRegarding">sexo
    		<p><input name="sexo" id="sexo" class="text" type="text" eform="Form sexo::1"/></p> </label> 
    		<label for="cfMessage">edad:
    		<p><input name="edad" id="edad" class="text" type="text" eform="Form edad::1"/></p> </label>
    		<label> </label><p><input type="submit" name="contact" id="cfContact" class="button" value="inscribir" /></p> 
    	</fieldset>
    </form>
    

    tercero: llamamos a nuestro snippet creado en la forma de eForm2db
    <?php
    function agregarCargas( &$fields )
    	{
    		global $modx;
    		// Init our array
    		$dbTable = array(); 
    		$dbTable[fullname] = $fields[fullname];
    		$dbTable[rut] = $fields[rut];
    		$dbTable[sexo] = $fields[sexo];
    		$dbTable[edad] = $fields[edad];
    		// Run the db insert query
    		$dbQuery = $modx->db->insert($dbTable, 'cargas' );
    		return true;
    	}
    ?>
    

    cuarto: creamos un nuevo documento en nuestro modx en el cual tendremos las siguientes llamadas a snippets
    [!agregarCargas!] [!eForm? &noemail=`true` &formid=`nuevaCarga` &eFormOnBeforeMailSent=`agregarCargas` &tpl=`nuevaCarga` &thankyou=`3`!]
    

    estos cuatro pasos logran insertar información a mi tabla de ejemplo, claro está que no he validado los datos, ni he truncado la información de carácteres inválidos, pero lo escencial está funcionando y guarda la información a la tabla cargas

    espero que este post sirva a la comunidad española y de habla inglesa (puesto que lo dejé traducido al inglés también en el foro de eForm2db)

    francisco
    www.dospuntocero.cl
      visit us at www.dospuntocero.cl
      • 3217
      • 6 Posts
      Estoy por usar este snippet, per no se como se comportara ya que, a través de jQuery, le doy la opción al usuario de repetir varios campos del formulario para introducir mas datos. Entonces, ¿como se comportaría la captura de datos en el snippet al encontrarse con que el campo se repite varias veces en el formulario, con datos distintos? ¿Cómo puedo configurar eForm para que entienda que el campo es un array?

      Salu2 desde Venezuela