Elxis CMS Forum

Ελληνικό Forum => Πρόσθετα => Topic started by: Dimitris Kanatas on March 15, 2020, 09:49:06

Title: Anyform - Σύνδεση με βάση δεδομένων
Post by: Dimitris Kanatas on March 15, 2020, 09:49:06
Γεια σας,

Θα ήθελα μια βοήθεια στη προσπάθεια σύνδεσης του anyform με τη βάση δεδομένων.

01.Έκανα έναν πίνακα π.χ.

CREATE TABLE `elx_demo` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`fιrstname` varchar(255) default NULL,
`lastname` varchar(255) default NULL,
`email` varchar(255) default NULL,
`phone` varchar(40) default NULL,
`thema` text default NULL,
`faq` longtext default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

02. Έχουμε την εγγραφή...

<dbtable>#__demo</dbtable>

03. Και την εγγραφή....

<action>emaildatabase</action>

04. Και τις εγγραφές...

<item type="text" name="firstname" label="Όνομα" required="1" default="{FIRSTNAME}" tip=""></item>
<item type="text" name="lastname" label="Επώνυμο" required="1" default="{LASTNAME}" tip=""></item>
<item type="email" name="email" label="Διεύθυνση e-mail" required="1" default="{EMAIL}" tip=""></item>
<item type="tel" name="phone" label="Τηλέφωνο επικοινωνίας" required="0" default="" tip=""></item>
<item type="text" name="thema" label="Θέμα του ερωτήματος" required="1" default="" tip=""></item>
<item type="textarea" name="faq" label="Διατύπωση του ερωτήματος" required="1" default="" tip="" />

Μου παράγει το λάθος...

[χχχχχχχχχχ]    ERROR in file χχχχχχχχχχχχχχχχχχχχχχχχ/httpdocs/includes/libraries/elxis/database/statement.class.php line 41
Uncaught PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in χχχχχχχχχχχχχχχχχχχχχχχχχχχχχ/httpdocs/includes/libraries/elxis/database/statement.class.php:41
Stack trace:
#0 χχχχχχχχχχχχχχχχχχχχ/httpdocs/includes/libraries/elxis/database/statement.class.php(41): PDOStatement->execute(NULL)
#1 χχχχχχχχχχχχχχχχχχχχχ/httpdocs/components/com_content/plugins/anyform/anyform.plugin.php(1207): elxisPDOStatement->execute()
#2 χχχχχχχχχχχχχχχχχχχχχχχχχ/httpdocs/components/com_content/plugins/anyform/anyform.plugin.php(154): anyformPlugin->processData(Array, '', Object(stdClass), 'faq', Array, Object(elxisFramework), Object(elxisLanguage))
#3 χχχχχχχχχχχχχχχχχχχχχχχχχχχχ/httpdocs/includes/libraries/elxis/plugin.class.php(112): anyformPlugin->process(Object(stdClass), true, Object(elxisParameters))
#4 χχχχχχχχχχχχχχχχχχχχχχχχχχχχ/httpdocs/components/com_content/controllers/article.php(106): elxisPlugin->pro

.... στην προσπάθεια του να αποθηκεύσει στη βάση.

Κάποια βοήθεια;

Επίσης μπορεί να υπάρχει ένας οδηγός για άνάκτηση δεδομένων σε πίνακα άρθρου του elxis από τη βάση;

Η αποθήκευση των δεδομένων σε αρχείο γίνεται κανονικά.

Σας ευχαριστώ παιδιά!
Title: Re: Anyform - Σύνδεση με βάση δεδομένων
Post by: datahell on March 16, 2020, 18:55:46
Μόλις δοκίμασα τη φόρμα σου, ΑΚΡΙΒΩΣ με τα πεδία που έχεις και δεν βλέπω κανένα πρόβλημα. Αποθηκεύονται κανονικά χωρίς σφάλμα.

Το XML που έφτιαξα είναι αυτό:

<form>
   <title overwrite="1" hide="1">Demo form</title>
   <emailtitle refcode="1">Submitted Demo form</emailtitle>
   <clientemailtitle refcode="1">Submitted Demo form</clientemailtitle>
   <description><![CDATA[<p>Demo form</p>]]></description>
   <onsuccess><![CDATA[
      <h3>Success!</h3>
      <p class="anyf_success">Success</p>]]>
   </onsuccess>
   <action>database</action>
   <email sendtoclient="0"></email>
   <refcode label="REFERENCE_CODE" prefix="DEMOFORM" startfrom="1"></refcode>
   <dbtable>#__demo</dbtable>
   <items>
      <item type="text" name="firstname" label="Όνομα" required="1" default="{FIRSTNAME}" tip=""></item>
      <item type="text" name="lastname" label="Επώνυμο" required="1" default="{LASTNAME}" tip=""></item>
      <item type="email" name="email" label="Διεύθυνση e-mail" required="1" default="{EMAIL}" tip=""></item>
      <item type="tel" name="phone" label="Τηλέφωνο επικοινωνίας" required="0" default="" tip=""></item>
      <item type="text" name="thema" label="Θέμα του ερωτήματος" required="1" default="" tip=""></item>
      <item type="textarea" name="faq" label="Διατύπωση του ερωτήματος" required="1" default="" tip="" />
      <item type="button" name="sbt" label="" default="SUBMIT" button_type="submit" fieldboxclass="" />
   </items>
</form>
Title: Re: Anyform - Σύνδεση με βάση δεδομένων
Post by: datahell on March 16, 2020, 19:01:41
Για να εμφανίσεις κάτι custom μέσα σε ένα άρθρο χρειάζεσε ένα ειδικά κατασκευασμένο plugin (https://www.elxis.net/docs/el/developers/tutorials/plugins-guide.html). Το Plugin θα εκτελεί ένα query στον πίνακα #__demo και θα εμφανίζει τα αποτελέσματα.

Λήψη υποβληθέντων φορμών:
$db = eFactory::getDB();
$sql = "SELECT * FROM ".$db->quoteId('#__demo')." ORDER BY ".$db->quoteId('id')." DESC";
$stmt = $this->db->prepare($sql);
$stmt->execute();
rows = $stmt->fetchAll(PDO::FETCH_OBJ);

Εμφάνιση:
if ($rows) {
    foreach ($rows as $row) {
        echo $row->firstname.', '.$row->lastname.', '.$row->email.', '.$row->phone.', '.$row->thema.', '.$row->faq.'<br />';
    }
}
Title: Re: Anyform - Σύνδεση με βάση δεδομένων
Post by: Dimitris Kanatas on March 22, 2020, 01:47:03
Γιάννη σ` ευχαριστώ για τις οδηγίες. Θα δοκιμάσω... και θα ξαναενοχλήσω... :-)