Page 1 of 1

UDT die met Database communiceerd

Posted: Tue May 17, 2016 2:59 pm
by HarmO
hey

Ik gebruik momenteel nog versie 1.11.13 voor enkele sites omdat ik LISTIT2 gebruik en updaten te veel werk is. :-[

Nu zit er in de laatste versie van LISTIT2 een fout als je de search_* functionaliteit wilt gebruiken lukt dit niet bij "textarea"-velden.

dus heb ik mijn SQL-kennis nog is aangesproken en zelf de query geschreven voor de info die ik wil.

Code: Select all

SELECT cms_module_listit2contacts_item.alias 
FROM cms_module_listit2contacts_fieldval 
JOIN cms_module_listit2contacts_item ON cms_module_listit2contacts_item.item_id = cms_module_listit2contacts_fieldval.item_id 
WHERE (cms_module_listit2contacts_fieldval.fielddef_id = 11) AND (cms_module_listit2contacts_fieldval.value LIKE '%xxxxx"%')
In mijn HeidiSQL werkt dit perfect.
en dus wil ik nu mijn UDT schrijven die deze query gaat uitvoeren, xxxxx vervangend door een waarde die ik meegeef.

Maar ik kan niet direct informatie vinden hoe men vanuit een udt een query kan doen.
ik vind soms iets over gCMS(), maar dat blijkt depricated te zijn....

Mss ook iets om in de wiki te zetten?

Re: UDT die met Database communiceerd

Posted: Tue May 17, 2016 4:39 pm
by Jos
UDT's zijn niet bedoeld om iets met databases te doen. Maar als je dat toch perse wilt, dan heeft Rolf al een voorbeeld op zijn blog staan:
http://www.cmscanbesimple.org/blog/movi ... ook-module

Re: UDT die met Database communiceerd

Posted: Wed May 18, 2016 8:11 am
by HarmO
Net wat ik zocht! ik probeer het uit.

Re: UDT die met Database communiceerd

Posted: Wed May 18, 2016 10:30 am
by HarmO
Dat heeft gewerkt.

Hierbij mijn UDT "contactAPI"

Code: Select all

$db = cmsms()->GetDb();
$PLZ = $_GET['r'];  
if (!preg_match('/^\d{5}$/', $PLZ)) { 
    header('Location: /');
    exit;
}
$query= "
SELECT ". cms_db_prefix() ."module_listit2contacts_item.alias 
FROM ". cms_db_prefix() ."module_listit2contacts_item 
JOIN ". cms_db_prefix() ."module_listit2contacts_fieldval ON ". cms_db_prefix() ."module_listit2contacts_item.item_id = ". cms_db_prefix() ."module_listit2contacts_fieldval.item_id 
WHERE (". cms_db_prefix() ."module_listit2contacts_fieldval.fielddef_id = 11) AND (". cms_db_prefix() ."module_listit2contacts_fieldval.value LIKE '%". $PLZ ."%')";
$dbresult = $db->Execute($query);
$entries = [];
while ($dbresult && $row = $dbresult ->FetchRow()){
   $entries[] = $row['alias'];
}
$smarty->assign('aliasentries', $entries);
en vervolgens kan ik op mijn pagina mijn udt oproepen en een gewone ListIt2 call doen met de include_items.

Code: Select all

{contactAPI}
{ListIt2Contacts include_items="{','|implode:$aliasentries}"}