Premetto che sono mooolto novizio di Smarty, ma penso che si debba creare un UTD apposita per fare questo? o è possibile farlo in altro modo? ho provato a duplicare i div tramite javascript, ma duplica lo stesso customfield, e non ne crea uno nuovo nel database...
Ho bisogno di dare la possibilita agli utenti, di aggiungere nuovi campi dinamicamente, pre creare delle liste, e dar la possibilità di aggiungere risposte senza avere gia 300 field pronti... per esempio:
Ho campo custom filed in news chiamato "Risposta"
devo dare la possibilita tramite un pulsante di duplicare questo field, con le stesse proprietà ma con id e nome sequenziale, quindi "risposta2" "risposta3" ecc
so che dovrei agire sul database in "cms_module_news_fielddefs" giusto?
creare nuovi customfield in modulo news via Frontend
Moderator: magallo
- protempore
- Power Poster
- Posts: 599
- Joined: Mon Jan 14, 2008 9:08 pm
Re: creare nuovi customfield in modulo news via Frontend
permettimi la schiettezza...
tu vuoi fare una cosa che io reputo folle.
far interagire l'utente nella modifica del database è una pazzia.
tu vuoi fare una cosa che io reputo folle.
far interagire l'utente nella modifica del database è una pazzia.
Re: creare nuovi customfield in modulo news via Frontend
Perche?? allora non ho capito nulla io... scusa, gia quando un'utente crea una news non sta agendo sul database??permettimi la schiettezza...
tu vuoi fare una cosa che io reputo folle.
far interagire l'utente nella modifica del database è una pazzia.
allora:
ho trovato un'utd che farebbe al caso mio:
Code: Select all
global $gCms;$db = $gCms->getDb();
# Get username from the FEU trigger.
# You can get a list of parameters by:
# var_dump($params); exit;
$name = $params['name'];
# Make sure this field def doesn't exist. Don't want a duplicate
$sql = "SELECT id FROM " . cms_db_prefix() . "module_news_fielddefs
WHERE name='$name'
LIMIT 1;";
$dbresult =& $db->Execute($sql);
if ($dbresult && $row=$dbresult->FetchRow()) {
return; # Field definition already exists. Abort!
}
# Field definition doesn't exist. Insert a new one
$sql = "INSERT INTO " . cms_db_prefix() . "module_news_fielddefs
(`name`, `type`, `max_length`, `create_date`, `modified_date`, `item_order`, `public`)
VALUES (?, ?, ?, ?, ?, ?, ?);";
$dbresult = $db->Execute(
$sql, array($name, 'textbox', 255, 0, 0, 1, 1)
);
# The example above is for a 'checkbox' field definition. To change,
# generate a couple of test definitions, then look at the table in
# phpMyAdmin to see how they look, then update the code.
Code: Select all
$var= '0';
$rad='prova';
global $gCms;$db = $gCms->getDb();
# Make sure this field def doesn't exist. Don't want a duplicate
$sql = "SELECT id FROM " . cms_db_prefix() . "module_news_fielddefs
WHERE name='$rad.$numb'
LIMIT 1;";
$dbresult =& $db->Execute($sql);
if ($dbresult && $row=$dbresult->FetchRow()) {
return; # Field definition already exists. Abort!
}
# Field definition doesn't exist. Insert a new one
$sql = "INSERT INTO " . cms_db_prefix() . "module_news_fielddefs
(`name`, `type`, `max_length`, `create_date`, `modified_date`, `item_order`, `public`)
VALUES (?, ?, ?, ?, ?, ?, ?);";
$dbresult = $db->Execute(
$sql, array($rad.(++$var), 'textbox', 40, 0, 0, 1, 1)
);
# The example above is for a 'checkbox' field definition. To change,
# generate a couple of test definitions, then look at the table in
# phpMyAdmin to see how they look, then update the code.
ma il risultato è che crea sempre un campo chaiamto "Prova1", e non verifica neanche se esiste gia... e lo ricrea sempre...
invece vorrei che risulti
Crea "prova1"
Se esiste gia
aumenta variabile 1=++1
crea "prova2"
crea "prova3"
crea "prova4"
ecc...
- protempore
- Power Poster
- Posts: 599
- Joined: Mon Jan 14, 2008 9:08 pm
Re: creare nuovi customfield in modulo news via Frontend
avevo capito che volevi modificare una tabella del DB...kdrummer wrote: Perche?? allora non ho capito nulla io... scusa, gia quando un'utente crea una news non sta agendo sul database??
c'è una bella differenza tra un SQL INSERT o SQL UPDATE e un SQL ALTER TABLE ADD COLUMN...
Aggiungere un record o modificarlo, non è la stessa cosa che modificare la struttura del DB...
- protempore
- Power Poster
- Posts: 599
- Joined: Mon Jan 14, 2008 9:08 pm
Re: creare nuovi customfield in modulo news via Frontend
comunque continuo a non capire il senso di cosa vuoi fare...
Nello specifico l'aggiunta di nuovi customfields in News deve considerare la modifica sia della tabella "cms_module_news_fielddefs", sia della tabella "cms_module_news_fieldvals"...
in linea teorica... anche realizzando un UDT che crei i records nelle tabelle suddette... tu permetteresti all'utente di inserire un numero illimitato di customfields... e non so questo cosa possa significare da un punto di vista delle perrformances del modulo...
Nello specifico l'aggiunta di nuovi customfields in News deve considerare la modifica sia della tabella "cms_module_news_fielddefs", sia della tabella "cms_module_news_fieldvals"...
in linea teorica... anche realizzando un UDT che crei i records nelle tabelle suddette... tu permetteresti all'utente di inserire un numero illimitato di customfields... e non so questo cosa possa significare da un punto di vista delle perrformances del modulo...
- protempore
- Power Poster
- Posts: 599
- Joined: Mon Jan 14, 2008 9:08 pm
Re: creare nuovi customfield in modulo news via Frontend
l'UDT che hai creato non può funzionare come vorresti...kdrummer wrote: ma il risultato è che crea sempre un campo chaiamto "Prova1", e non verifica neanche se esiste gia... e lo ricrea sempre...
invece vorrei che risulti
Crea "prova1"
Se esiste gia
aumenta variabile 1=++1
crea "prova2"
crea "prova3"
crea "prova4"
ecc...
una prima osservazione:
la variabile globale $gCms dalla 1.10 deve essere richiamata così:
Code: Select all
$gCms = cmsms();
se vuoi una ricerca sul name "prova1" devi settare la SELECT con
Code: Select all
$sql = "SELECT id FROM " . cms_db_prefix() . "module_news_fielddefs
WHERE name='$rad$var'
LIMIT 1;";
$dbresult =& $db->Execute($sql);
non deve esserci il punto tra le due variabili perché se no la stringa restituita nella SELECT risulterebbe "prova.1"