2010-05-16 10 views
15

मैं जूमला के लिए शुरुआत कर रहा हूं! विकास और एक बहुत ही सरल मॉड्यूल बनाया है।जूमला फॉर्म फ़ील्ड से डेटाबेस में डालें

मैं 3 टेक्स्ट फ़ील्ड के साथ एक फॉर्म कैसे बना सकता हूं और फिर दर्ज किए गए मानों को डेटाबेस तालिका में सहेज सकता हूं? http://www.chronoengine.com/ तरह

उत्तर

0

कोशिश कुछ - Chronoforms

+0

बकवास Tmpl फ़ाइल पर एक परिणाम प्राप्त करने के लिए एक कस्टम क्वेरी चलाने हो सकता है: यहाँ एक विकल्प है! यह एक प्रोग्रामिंग सवाल है, यह लिंक सिर्फ एक वाणिज्यिक घटक है! –

+1

जबकि मैं मानता हूं कि यह एक प्रोग्रामिंग प्रश्न है, वह जो हासिल करना चाहता है उसका अंतिम लक्ष्य उस घटक (या वास्तव में कई अन्य) का उपयोग करके किया जा सकता है। – Jeepstone

14

इस उदाहरण का प्रयास करें:

हम एक मेज पर एक उपयोगकर्ता के प्रथम और अंतिम नाम पोस्ट करेंगे।

अपने डेटाबेस में एक टेबल बनाएं। ध्यान दें कि इसमें उपसर्ग "jos_"

हम इस फ़ॉर्म, "नाम" को कॉल करेंगे। इसलिए हम अपने टेबल "jos_names"

PHPMyAdmin में एसक्यूएल लाइन पर नाम होगा (या जो भी उपकरण आप का उपयोग ..), एक नई तालिका बनाने के लिए इस क्वेरी कार्य करें:

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

चीजों को आसान बनाने के लिए, हम परिणाम एक ही पृष्ठ पर पोस्ट करेंगे .. चलिए फॉर्म बनाएं:

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

?> 

ऐसा करना चाहिए। यदि आप एक पारंपरिक जूमला मॉड्यूल लिख रहे हैं, तो यह आपकी सहायक है। Php फ़ाइल।

नोट: केवल एक जूमला दस्तावेज़ में "मर" स्क्रिप्ट को एक बार .. (परिभाषित ('_JEXEC') शामिल हैं ..

जूरी :: वर्तमान() स्वचालित रूप से वर्तमान पृष्ठ URL पढ़ता है तो आप कहते हैं। गूंज जूरी :: वर्तमान();।। यूआरएल http://www.example.com/names के साथ एक पृष्ठ पर है, तो यह एक ही लिंक प्रदर्शित करेगा

यह महत्वपूर्ण है कि कार्रवाई = "" अंक सटीक यूआरएल जहां इस मॉड्यूल प्रकाशित करेंगे करने के लिए

इसके अलावा, इसे 'एसईएलएफ' में डेटा पोस्ट करने के लिए बुरी आदत माना जाता है, लेकिन आप मॉड्यूल के साथ सीमित हैं, इसलिए अनल्य निबंध आप एक घटक या प्लगइन बनाते हैं, आपको इस फॉर्म के साथ अपना फॉर्म 'SELF' पर पोस्ट करना चाहिए। (जुरी :: वर्तमान();)

जब जूमला ढांचे में, आपके डेटाबेस का नाम, उपयोगकर्ता नाम या पासवर्ड घोषित करना आवश्यक नहीं है क्योंकि जूमला पहले से ही "लॉग इन" है .. तो databasename से पूछताछ करने के बजाय। jos__tablename, जूमला में आप इस क्वेरी को प्रतिस्थापित कर सकते हैं: #__tablename। वास्तव में डीबी प्रश्नों और जूमला से निपटने के दौरान यह सबसे अच्छा अभ्यास है क्योंकि उपयोगकर्ताओं को डिफ़ॉल्ट जोस_ उपसर्ग का उपयोग नहीं करना पड़ता है, जूमला स्वचालित रूप से "# " को उपसर्ग के साथ बदल देता है। मेरे मामले में "#" "जोस"

लें टिप्पणी जब एसक्यूएल क्वेरी करने .. तालिका बनाने सुनिश्चित करें कि आप अपने डेटाबेस का वास्तविक नाम databasename की जगह बनाने के लिए ..

कि यह करना चाहिए बराबर होती है।

यदि किसी कारण से आप डेटा पोस्ट करने में असमर्थ हैं: 1) सुनिश्चित करें कि फ़ॉर्म सबमिट पर क्लिक करते समय किसी भिन्न पृष्ठ पर रीडायरेक्ट नहीं होता है। यदि ऐसा होता है, तो इस पृष्ठ को प्रकाशित करने के लिए पूर्ण क्रिया में फ़ॉर्म क्रिया को "" बदलें। फिर वहां से जाएं।

2) कभी-कभी $ डेटा = नई विधि काम नहीं करती है।यह इस बात पर निर्भर करता है कि आप अपने मॉड्यूल, फ़ंक्शंस और कक्षाओं को कैसे सेट अप करते हैं।

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

बहुत बढ़िया! यह वही है जिसे मैं देख रहा था। –

0

आप जो सरल है

<?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> 
संबंधित मुद्दे