2010-05-16 5 views

Répondre

0

Essayez quelque chose comme http://www.chronoengine.com/ - ChronoForms

+0

un non-sens! C'est une question de programmation, ce lien est juste un composant commercial! –

+1

Même si je suis d'accord que c'est une question de programmation, l'objectif ultime de ce qu'il veut atteindre peut être fait en utilisant cette composante (ou en effet beaucoup d'autres). – Jeepstone

14

Essayez cet exemple:

Nous publierons d'abord et nom d'un utilisateur à une table.

créer une table dans votre base de données. Notez qu'il devrait avoir le préfixe "jos_"

Nous appellerons ce formulaire, "noms". Nous allons donc nommer notre table « jos_names »

Sur la ligne de SQL dans phpMyAdmin (ou tout autre outil que vous utilisez ..), faire cette requête pour créer une nouvelle table:

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

Pour simplifier les choses, nous affichera les résultats à la même page .. Construisons le formulaire:

<?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>'; 
} 

?> 

Cela devrait le faire. Si vous écrivez un module Joomla traditionnel, ceci devrait être votre fichier helper.php.

NOTES: comprennent uniquement le script "die" une fois dans un document joomla .. (défini ('_JEXEC') ..

JURI :: courant() lit automatiquement l'URL de la page courante Si vous appelez. echo JURI :: courant().. sur une page avec l'url http://www.example.com/names, il affiche le même lien

il est important que l'action = « » des points à l'URL exacte où vous allez publier ce module

En outre, il est considéré comme une mauvaise pratique de publier des données sur "SELF", mais vous êtes un peu limité avec un module, donc Si vous construisez un composant ou un plugin, vous devriez poster votre formulaire sur 'SELF' comme dans cet exemple. (JURI :: current();)

Lorsque dans le framework Joomla, il n'est pas nécessaire de déclarer le nom de votre base de données, votre nom d'utilisateur ou votre mot de passe puisque Joomla est déjà "connecté" .. Donc, au lieu d'interroger databasename. jos__tablename, dans joomla vous pouvez remplacer la requête avec ceci: #__tablename. En fait c'est la meilleure pratique pour traiter les requêtes db et Joomla parce que les utilisateurs n'ont pas besoin d'utiliser le préfixe jos_ par défaut, joomla remplace automatiquement "# " avec le préfixe. Dans mon cas « # » égal « jos »

Prenez note lors de l'interrogation SQL pour créer la table .. assurez-vous de remplacer databasename par le nom réel de votre base de données ..

Cela devrait le faire.

Si, pour une raison quelconque, vous ne parvenez pas à publier des données: 1) Assurez-vous que le formulaire ne redirige pas vers une page différente lorsque vous cliquez sur Envoyer. Si c'est le cas, changez l'action du formulaire "" en url absolue à l'endroit où cette page est publiée .. puis allez à partir de là.

2) Parfois, la méthode $ data = new ne fonctionne pas.Cela dépend de la manière dont vous configurez votre module, vos fonctions et vos classes. Voici une alternative:

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

Génial! C'est ce que je cherchais. –

0

Vous pouvez exécuter une requête personnalisée pour obtenir un résultat sur le fichier tmpl qui est 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> 
Questions connexes