Table ID 0 - Table


PageIDParentPageIDhasSubMenuActivehrefTitleIconClassHasChildren
100/Forside0
200class="active"/produkterProdukter0
300/tjenesterTjenester0
2200/kontakt-ossKontakt oss0
500/om-ossOm oss0



Table ID 1 - Table1


DomainIDLayoutIDDomainTitleTopLogoSliderBgBottomHeaderBottomTextGoogleAnalyticsTemplateIDFooterTextCopyRightFlagErrorEmailSystemID
311www.sqlexpert.noMicrosoft SQL Expert/images/sqlexpert.no/log.pngMicrosoft SQL ExpertLa oss hjelpe til med din Microsoft SQL database.<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-51253384-1', 'sqlexpert.no'); ga('require', 'displayfeatures'); ga('send', 'pageview'); </script>2<p>SQLExpert - konsulenttjenester og programvare for SQL.</p> <p class="foot">Bygg effektive webportaler ved bruk av T-SQL.</p>Copyright © {$Template.Year$} <a href="https://www.sqlexpert.no">SQLExpert AS</a>. All rights reserved.nilsarne@tvedten.no; jostein@whitecom.no; oystein@tvedten.no



Table ID 2 - Table2


DomainIDPageIDParentPageIDPathHeadTitlePageTitlePageSubTitleSliderBoxMidHeaderMidTextMenuActiveHtmlMenuTitleMenuOrderIDAngularHtmlAngularControllerMetaDescrApiPathPageImageUrlhasPageImageUrl
3120/produkterProdukterProdukter{$Template.NonSliderHtml$} <div class="row"> <h3>Portal-bygger</h3> <div class="col-md-6 left"> En SQL-server er ekspert på å håndtere og utveksle data, men er ofte ikke det best egnede verktøyet for å håndtere komplekse webportaler og bygge opp tekststrenger, som en webside består av. Dette har vi gjort noe med, og laget et verktøy som gjør at du får utnyttet databasen til det som MSSQL er best på, og at du allikevel kan lage kraftfulle webportaler med liten, men effektiv T-SQL kode.<br /> </div><div class="col-md-6 left"> Stort sett alle Publiseringsverktøy på markedet benytter en database i bakkant til å lagre både html-maler og innhold. Problemet med MSSQL er at man ofte ikke ønsker å bruke databaseserveren til å flette dette sammen, slik at du får fyllt malene med det innholdet du ønsker. Derfor har vi bygget en generelt rammeverk som gjør at dette flettes sammen utenfor databaseserveren. På denne måten får du benyttet både MSSQL og web-serveren til hva de er best egnet til.<br /> </div> </div> <div class="row"> <br /> <h3>Portal-bygger INTRO</h3> <div class="col-md-6 left"> Tenk deg at du har lageret en html-mal i en tabell, og at du ønsker å fylle denne med innhold. Hele koden består da av to ulike spørringer, en SELECT-spørring for å hente ut malen, og en SELECT-spørring for å hente ut innhold.<br /> <br /> To tabeller for demo<br /> <pre class="SQLCode"><span class="SQLKeyword">CREATE</span> <span class="SQLKeyword">TABLE</span> Template <span class="SQLOperator">(</span> TemplateID <span class="SQLKeyword">INT</span> <span class="SQLKeyword">PRIMARY</span> <span class="SQLKeyword">KEY</span> <span class="SQLOperator">,</span>html <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span><span class="SQLFunction">max</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span> <span class="SQLKeyword">CREATE</span> <span class="SQLKeyword">TABLE</span> WebContent <span class="SQLOperator">(</span> webpath <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span>50<span class="SQLOperator">)</span> <span class="SQLKeyword">PRIMARY</span> <span class="SQLKeyword">KEY</span> <span class="SQLOperator">,</span>Title <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span>200<span class="SQLOperator">)</span> <span class="SQLOperator">,</span>Description <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span><span class="SQLFunction">max</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span> </pre> En enkel mal:<br /> <pre class="SQLCode"><span class="SQLKeyword">INSERT INTO</span> Template <span class="SQLOperator">(</span>templateid<span class="SQLOperator">,</span>html<span class="SQLOperator">)</span> <span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span>1<span class="SQLOperator">,</span><span class="SQLString">'&lt;html&gt; &lt;head&gt; &lt;title&gt;{$Content.Title$}&lt;/title&gt; &lt;/head&gt; &lt;body&gt; {$WebContent.Description} &lt;/body&gt; &lt;/html&gt;'</span><span class="SQLOperator">)</span></pre> </div><div class="col-md-6 left"> To enkle sider:<br /> <pre><span class="SQLKeyword">INSERT INTO</span> WebContent <span class="SQLOperator">(</span>webpath<span class="SQLOperator">,</span>Title<span class="SQLOperator">,</span>Description<span class="SQLOperator">)</span> <span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span><span class="SQLString">'/om-oss'</span><span class="SQLOperator">,</span><span class="SQLString">'Om oss'</span><span class="SQLOperator">,</span><span class="SQLString">'SQLExpert AS, Gullrisveien 8, 1715 Yven'</span><span class="SQLOperator">)</span> <span class="SQLKeyword">INSERT INTO</span> WebContent <span class="SQLOperator">(</span>webpath<span class="SQLOperator">,</span>Title<span class="SQLOperator">,</span>Description<span class="SQLOperator">)</span> <span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span><span class="SQLString">'/produkter'</span><span class="SQLOperator">,</span><span class="SQLString">'Produkter'</span><span class="SQLOperator">,</span><span class="SQLString">'Prøv vårt nye web-verktøy'</span><span class="SQLOperator">)</span></pre> </div><div class="col-md-6 left"> Så selve T-SQL koden:<br /> <pre class="SQLCode"><span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span><span class="SQLOperator">,</span>1 <span class="SQLKeyword">AS</span> WebContent<span class="SQLComment">-- Referanse, WebContent er tabell 1</span> <span class="SQLKeyword">FROM</span> Template <span class="SQLKeyword">WHERE</span> TemplateID <span class="SQLOperator">=</span> 1 <span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span> <span class="SQLKeyword">FROM</span> WebContent <span class="SQLKeyword">WHERE</span> webpath <span class="SQLOperator">=</span> @webpath </pre> Slik ble resultatet: <a href="/websqldemo/intro/om-oss">/om-oss</a> (<a href="/websqldemo/intro/om-oss?getrawdata=true">raw</a>) - <a href="/websqldemo/intro/produkter">/produkter</a> (<a href="/websqldemo/intro/produkter?getrawdata=true">raw</a>)<br /> <br /> Du kan legge til så mange tabeller du ønsker, og du kan hente ut data fra samtlige. Systemet støtter også repeatere, så du f.eks. kan bygge en meny. Det er også støtte for if-statements i malen. Dette var veldig overfladisk i forhold til hvordan dette fungerer. Hvorfor ikke teste det ut?<br /> <br /> Som en referanse er nettsiden du er inne på nå bygget opp med dette verktøyet. Bevis? Legg på /?getrawdata=true bak hvilken som helst side, så ser du hvordan den er bygget opp. For eksempel <a href="/produkter?getrawdata=true">denne</a>. </div> </div> <div class="row"> <br /> <h3>Portal-bygger INTRO 2</h3> <div class="col-md-6 left"> La oss gjøre det litt mer spennende. Vi bruker de samme tabellene, men legger til en "repeater". <br /> La oss legge til en ny mal:<br /> <pre class="SQLCode"><span class="SQLKeyword">INSERT INTO</span> Template <span class="SQLOperator">(</span>templateid<span class="SQLOperator">,</span>html<span class="SQLOperator">)</span> <span class="SQLKeyword">VALUES</span> <span class="SQLOperator">(</span>2<span class="SQLOperator">,</span><span class="SQLString">'&lt;html&gt; &lt;head&gt; &lt;title&gt;{$Content.Title$}&lt;/title&gt; &lt;/head&gt; &lt;body&gt; {$WebContent.Description$}&lt;br /&gt; &lt;br /&gt; &lt;sql repeat=&quot;r in Pages&quot; filter=&quot;&quot;&gt; &lt;a href=&quot;{$a.webpath$}&quot;&gt;{$a.Title$}&lt;/a&gt;&lt;br /&gt; &lt;/sql&gt; &lt;/body&gt; &lt;/html&gt;'</span><span class="SQLOperator">)</span></pre> </div><div class="col-md-6 left"> Så selve T-SQL koden:<br /> <pre class="SQLCode"><span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span><span class="SQLOperator">,</span>1 <span class="SQLKeyword">AS</span> WebContent<span class="SQLComment">-- Referanse, WebContent er tabell 1</span> ,</span>2 <span class="SQLKeyword">AS</span> Pages<span class="SQLComment">-- Referanse, Pages er tabell 2</span> <span class="SQLKeyword">FROM</span> Template <span class="SQLKeyword">WHERE</span> TemplateID <span class="SQLOperator">=</span> 2 <span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span> <span class="SQLKeyword">FROM</span> WebContent <span class="SQLKeyword">WHERE</span> webpath <span class="SQLOperator">=</span> @webpath <span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span> <span class="SQLKeyword">FROM</span> WebContent </pre> Slik ble resultatet: <a href="/websqldemo/intro2/om-oss">/om-oss</a> (<a href="/websqldemo/intro2/om-oss?getrawdata=true">raw</a>) - <a href="/websqldemo/intro2/produkter">/produkter</a> (<a href="/websqldemo/intro2/produkter?getrawdata=true">raw</a>)<br /> <br /> Det er også støtte for if-statements, noe vi ikke går i detalj på nå. Se mer om dette i dokumentasjonen. </div> </div> <div class="row"> <br /> <h3>AJAX</h3> <div class="col-md-6 left"> Med samme komponent som Portal-byggeren, kan du også kommunisere med en webklient ved bruk av AJAX-kall. Systemet støtter alle web-kall som POST, DELETE, GET, PUT og lignende.<br /> <br /> </div><div class="col-md-6 left"> <h4>Input</h4> Alt bygges opp med en felles STORED PROCEDURE. Denne får en god del inputparametere fra klienten, slik at du kan bearbeide data og gi en ønsket tilbakemelding tilbake til klienten. Input-parametere på prosedyren er @SessionID, @Ip, @UrlParts, @UrlParams, @Xml, @Method og @ContentType. Basert på dette vet du domenet, hvilken url som hentes, og data som klienten sender inn. Ved å benytte @SessionID kan du også benytte session-handling, og rettighetsstyre innholdet. <br /> <br /> <h4>Output</h4> Output kan bygges opp på mange måter, men den vanligste er å bare returnere en tabell. Denne tabellen blir konvertert til JSON før den sendes tilbake til webklienten. <a href="/websqldemo/response">Eksempel: </a> <pre class="SQLCode"><span class="SQLKeyword">SELECT</span> <span class="SQLString">'ok'</span> <span class="SQLKeyword">AS</span> Response <span class="SQLOperator">,</span><span class="SQLString">'Dataene er lagret'</span> <span class="SQLKeyword">AS</span> [Description] </pre> </div> </div> <br /><br /> <div class="container"> <div class="row"> <h3>Priser</h3> </div> </div> <div class="container"> <div class="row"> <div id="no-more-tables"> <div class="left"> <h4>Bedrift</h4> <b>Bedrift:</b> Kommersiell virksomhet der formålet er å tjene penger. Kommune/stat er også innfor denne.<br /> </div> <table class="col-md-12 table-bordered table-striped table-condensed cf"> <thead class="cf"> <tr><th>Server</th><th>Etablering</th><th>Per mnd</th></tr> </thead> <tbody> <tr><td data-title="Server">Enkelt domene, enkel web-server</td><td data-title="Etablering">14.900,- eks mva</td><td data-title="Per mnd">499,- eks mva</td></tr> <tr><td data-title="Server">Mange domener, enkel web-server</td><td data-title="Etablering">39.000,- eks mva</td><td data-title="Per mnd">1.499,- eks mva</td></tr> <tr><td data-title="Server">Enkelt domene, flere web-servere</td><td data-title="Etablering">39.000,- eks mva</td><td data-title="Per mnd">1.499,- eks mva</td></tr> </tbody> </table> </div> </div> </div> <br /><br /> <div class="container"> <div class="row"> <div id="no-more-tables"> <div class="left"> <h4>Nonprofit, med referanse</h4> Private og ikke-kommersielle virksomheter.<br /> <b>Referanse:</b> Alle sider hvor komponenten benyttes må ha link til http://www.sqlexpert.no <br /> </div> <table class="col-md-12 table-bordered table-striped table-condensed cf"> <thead class="cf"> <tr><th>Server</th><th>Etablering</th><th>Per mnd</th></tr> </thead> <tbody> <tr><td data-title="Server">Enkelt domene, enkel web-server</td><td data-title="Etablering">Gratis med referanse</td><td data-title="Per mnd">Gratis med referanse</td></tr> <tr><td data-title="Server">Mange domener, enkel web-server</td><td data-title="Etablering">Gratis med referanse</td><td data-title="Per mnd">Gratis med referanse</td></tr> <tr><td data-title="Server">Enkelt domene, flere web-servere</td><td data-title="Etablering">Gratis med referanse</td><td data-title="Per mnd">Gratis med referanse</td></tr> </tbody> </table> </div> </div> </div> <br /><br /> <div class="container"> <div class="row"> <div id="no-more-tables"> <div class="left"> <h4>Nonprofit, uten referanse</h4> Private og ikke-kommersielle virksomheter. </div> <table class="col-md-12 table-bordered table-striped table-condensed cf"> <thead class="cf"> <tr><th>Server</th><th>Etablering</th><th>Per mnd</th></tr> </thead> <tbody> <tr><td data-title="Server">Enkelt domene, enkel web-server</td><td data-title="Etablering">1.490,- eks mva</td><td data-title="Per mnd">49,- eks mva</td></tr> <tr><td data-title="Server">Mange domener, enkel web-server</td><td data-title="Etablering">3.990,- eks mva</td><td data-title="Per mnd">149,- eks mva</td></tr> <tr><td data-title="Server">Enkelt domene, flere web-servere</td><td data-title="Etablering">3.990,- eks mva</td><td data-title="Per mnd">149,- eks mva</td></tr> </tbody> </table> </div> </div> </div> class="active"Produkter20<div ng-controller="PageController2"><br /><br /><div class="container"> <div class="row" ng-if="download.mode=1"> <input type="text" ng-model="downloaddata.email" placeholder="epost adresse"> <a ng-click="download()" class="btn btn-lg btn-primary"><span class="glyphicon glyphicon-download-alt"></span> Last ned</a> </div> </div></div>app.controller("PageController2", function ($scope, $http) { $scope.downloaddata = {}; $scope.download = function () { $http.jsonp('/api/sql/download?callback=JSON_CALLBACK&jsondata=' + angular.toJson($scope.downloaddata)).success(function (data) { $scope.response = data; }); } });/api/page/20



Table ID 3 - Table3


TemplateIDhtmlMenuHtmlSliderHtmlNonSliderHtmlBoxHtmlFooterHtmlCarouselHtmlDiv1Div2EditableHeaderEditableHtmlEditableFooterMenuDomainPageVariablesSliderBoxProductOrdersPageIDYearLoginIDLoginNameTemplateWebPathUserTicketUserTokenConfigTablePageDataID1PageDataID2PageDataID3PageDataID4PageDataID5PageDataID6UrlValue1UrlValue2
2<html> <head> <title>{$Domain.Title$} - {$Page.HeadTitle$}</title> <link href='/css/bootstrap.min.css' rel='stylesheet'> <link href='/css/bootstrap-theme.min.css' rel='stylesheet'> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="/js/jquery.min.js"></script> <!-- Custom Theme files --> <!--theme-style--> <link href="/css/sqlexpert.no/style.css" rel="stylesheet" type="text/css" media="all" /> <!--//theme-style--> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script> <!--fonts--> <link href='/css/robotofont.css' rel='stylesheet' type='text/css'> <script type="text/javascript" src="/js/move-top.js"></script> <script type="text/javascript" src="/js/easing.js"></script> <!-- slide --> {$Template.EditableHeader$} </head> <body ng-app="app"> {$Template.EditableHtml$} {$Domain.GoogleAnalytics$} {$Template.MenuHtml$} {$Page.Slider$} <!----> <div class="content"> <div class="container"> {$Page.Box$} <div class="content-grid"> <h2>{$Page.MidHeader$}</h2> {$Page.MidText$} {$Page.AngularHtml$} </div> </div> <div class="content-bottom"> <div class="container"> <h3>{$Domain.BottomHeader$}</h3> {$Domain.BottomText$} </div> </div> </div> <!----> {$Template.FooterHtml$} <script type="text/javascript"> $(document).ready(function () { $().UItoTop({ easingType: 'easeOutQuart' }); }); </script> <a href="#" id="toTop" style="display: block;"> <span id="toTopHover" style="opacity: 1;"> </span></a> {$Template.EditableFooter$} <!--<script src="/js/angular.min.js"></script>--> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script> <script type="text/javascript"> var app = angular.module("app", []); app.controller("postFormController", function ($scope, $http) { $scope.formdata = {}; $scope.response = [{}]; $scope.postdata = function(path) { $http.post(path, $scope.formdata).success(function (data) { $scope.response = data; }); } }); {$Page.AngularController$} var sc = document.createElement('script'); sc.src = "https://www.sqlexpert.no/sa"; document.head.appendChild(sc); </script> </body> </html><div class="header"> <div class="container"> <div class="logo"> <a href="/"><img src="{$Domain.TopLogo$}" alt=""></a> </div> <div class="top-nav"> <span class="menu"><img src="/images/sqlexpert.no/menu.png" alt=""> </span> <ul> <sql repeat="i in Menu" filter=""> <li {$i.active$}><a href="{$i.href$}">{$i.Title$}</a></li> </sql> </ul> <!--script--> <script> $("span.menu").click(function () { $(".top-nav ul").slideToggle(500, function () { }); }); </script> </div> <div class="clearfix"> </div> </div> </div><div class="banner"> <div class="container"> <div class="col-md-12 banner-matter"> <!-- requried-jsfiles-for owl --> <link href="/css/owl.carousel.css" rel="stylesheet"> <script src="/js/owl.carousel.js"></script> <script> $(document).ready(function () { $("#owl-demo1").owlCarousel({ items: 1, lazyLoad: true, autoPlay: true, navigation: true, navigationText: true, pagination: false, }); }); </script> <!-- //requried-jsfiles-for owl --> <!-- start content_slider --> <div id="owl-demo1" class="owl-carousel"> <sql repeat="c in Slider" filter=""> <div class="item-bottom"> <div class="item-right"> <h1>{$c.Title$}</h1> <span>{$c.ingress$}</span> <p>{$c.body$}</p> <a href="{$c.Url$}"><i> </i>{$c.LinkText$} </a> </div> </div> </sql> </div> </div> <div class="clearfix"> </div> </div> </div><div class="banner banner-in"> <div class="container"> <div class="col-md-6 banner-matter-in"> <h1>{$Page.PageTitle$}</h1> </div> <div class="clearfix"> </div> </div> </div> <div class="content-top"> <sql repeat="b in Box" filter=""> <div class="col-sm-4 grid"> <h3>{$b.BoxHeader$}</h3> <p>{$b.BoxText$}</p> <a href="{$b.Link$}" class="just-do-in">{$b.LinkText$}</a> </div> </sql> <div class="clearfix"> </div> </div><div class="footer"> <div class="container"> <div class="footer-top"> <div class="col-md-7 footer-left"> {$Domain.FooterText$} </div> <div class="col-md-5 submit" ng-controller="postFormController"> <input type="text" ng-model="formdata.email" placeholder="your email address"> <input type="button" value="Subscribe" ng-click="postdata('/api/form/subscribe')"><font color="green">{{response[0].SuccessMsg}}</font> <font color="red">{{response[0].ErrorMsg}}</font> <div class="clearfix"> </div> </div> <div class="clearfix"> </div> </div> <p class="footer-class">{$Domain.CopyRight$}</p> </div> 012220263/produkter