2010-05-16 23 views

Respuesta

0

intentar algo así como http://www.chronoengine.com/ - ChronoForms

+0

sin sentido! es una pregunta de programación, ¡ese enlace es solo un componente comercial! –

+1

Aunque estoy de acuerdo en que esta es una pregunta de programación, el objetivo final de lo que quiere lograr se puede hacer usando ese componente (o incluso muchos otros). – Jeepstone

14

Prueba este ejemplo:

publicaremos el nombre y apellido de un usuario a una mesa.

crear una tabla en su base de datos. Tenga en cuenta que debe tener el prefijo "jos_"

Llamaremos a este formulario, "nombres". Así que vamos a nombrar nuestra mesa "jos_names"

En la línea de SQL en phpMyAdmin (o cualquier herramienta que se utiliza ..), hacer esta consulta para crear una nueva tabla:

CREATE TABLE `databasename`.`jos_names` (`id` int(11) NOT NULL auto_increment, `firstname` VARCHAR(100), `lastname` VARCHAR(100), PRIMARY KEY (`id`)) 

Para simplificar las cosas, a publicar los resultados a la misma página .. Vamos a construir la forma:

<?php 

/** post form to db module **/ 

// No direct access 
defined('_JEXEC') or die('Restricted access'); 



//--POST YOUR FORM DATA HERE--> 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
//--END POST YOUR FORM DATA---| 
//--build the form------------> 
?> 
<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post"> 
    <p><input type="text" name="fname" id="fname" value="" /></p> 
    <p><input type="text" name="lname" id="lname" value="" /></p> 
    <p><input id="submit" name="submit" type="submit" value="Submit Names" /></p> 
</form> 
//--END BUILD THE FORM--------| 
<? 
if((isset($lname)) || (isset($fname))) { 
    //first name or last name set, continue--> 
    $data =new stdClass(); 
    $data->id = NULL; 
    $data->firstname = $fname; 
    $data->lastname = $lname; 

    $db = JFactory::getDBO(); 
    $db->insertObject('#__names', $data, id); 

} else { 
    echo '<h4>One Field Is Required!</h4>'; 
} 

?> 

Eso debería hacerlo. Si está escribiendo un módulo Joomla tradicional, este debería ser su archivo helper.php.

NOTAS: incluir sólo la secuencia de comandos "muere" una vez en un documento Joomla .. (que se define ('_JEXEC') ..

JURI :: current() lee automáticamente el URL de la página actual si se llama a. eco JURI :: current();.. en una página con la URL http://www.example.com/names, a continuación, se mostrará el mismo enlace

es importante que la acción = "" apunta a la URL exacta donde se publicará este módulo

Además, se considera una mala práctica publicar datos en 'SELF', pero está limitado con un módulo, por lo que no Si construye un componente o un complemento, debe publicar su formulario en 'SELF' como se hizo con este ejemplo. (JURI :: current();)

Cuando está en el framework Joomla, no es necesario declarar el nombre de su base de datos, nombre de usuario o contraseña ya que Joomla ya está "conectado". Así que en lugar de consultar databasename. jos__tablename, en joomla puede reemplazar la consulta con esto: #__tablename. De hecho, esta es la mejor práctica cuando se trata de consultas db y Joomla porque los usuarios no tienen que usar el prefijo jos_ predeterminado, joomla reemplaza automáticamente "# " con el prefijo que sea. En mi caso "#" es igual a "jos"

Tome nota cuando se consulta SQL para crear la tabla .. asegúrese de que sustituye databasename con el nombre real de la base de datos ..

Eso debería hacerlo.

Si por alguna razón usted no puede publicar los datos a: 1) Asegúrese de que el formulario no redirige a una página diferente cuando se haga clic en enviar. Si lo hace, cambie la acción del formulario "" a la URL absoluta a donde se publica esta página. Luego, vaya desde allí.

2) A veces, el método $ data = new no funciona.Esto depende de cómo configure su módulo, funciones y clases. Aquí es una alternativa:

$db =& JFactory::getDBO(); 
$query = "INSERT INTO `#__names` (`fname`, `lname`) 
    VALUES ($fname, $lname);"; 
$db->setQuery($query); 
$db->query(); 
+0

¡Impresionante! Esto es lo que estaba buscando. –

0

Puede ejecutar una consulta personalizada para obtener un resultado en el archivo tmpl que es simple

<?php // no direct access 
defined('_JEXEC') or die('Restricted access'); 
$category = $_REQUEST['category']; 
if(isset($category)) 
    { 
$db = JFactory::getDbo(); 
$db->setQuery("SELECT machine_id FROM j25_machinefinder_products WHERE category = '$category'"); 
// Load the row. 
$result = $db->loadRowList(); 

//your result will return here 
print_r($result); 



    } 

?> 
<form action="" method="get" name="usedequipment"> 
<select name="category"> 
<?php foreach($hello as $category) 
    { 
    ?><option value="<?php echo $category[0]; ?>"> <?php echo $category[0]; ?></option><?php 
    } ?> 

</select> 
<input type="submit" /> 
</form> 
Cuestiones relacionadas