Difference between revisions of "Talk:WikiDB"

From TestWiki
Jump to: navigation, search
(Versioning of WikiDB Extension Files: reply)
(Reply to anonymous user 74.65.72.174)
 
(40 intermediate revisions by 14 users not shown)
Line 1: Line 1:
 +
Some old discussion has been deleted. See here for diffs: [http://www.kennel17.co.uk/testwiki/index.php?title=Talk:WikiDB&diff=2046&oldid=2015].
 +
 
== External queries ==
 
== External queries ==
 +
Moved to [[WikiDB/Feature requests#External queries]].
  
This extension is really cool. Do you have any plans concerning external (read-only) queries to the database? --[[User:Martin|Martin]] 23:51, 10 July 2006 (BST)
+
== Count of records ==
 +
Moved to [[WikiDB/Feature requests#Count of records]].
  
: Can you please expand on this - I'm not sure what you mean. --[[User:HappyDog|HappyDog]] 23:55, 10 July 2006 (BST)
+
== Table Formatting ==
 +
Moved to [[Talk:WikiDB/Repeat tag syntax#Table Formatting]].
  
:: Sure. Suppose I have wiki site which is primarily a user-editable database. Each wiki page may provide several database records (let's say information on sequences of proteins of a given family). There is some text which gives some information about the link between these database entries, that's the traditional wiki part. This cannot be put into the database because it's changing often, it may become large, and it doesn't have a meaningful format--the only field name which would be appropriate would be "comments". But the database records are essential for let's say the community of molecular biologists, who use client software to query and analyze the protein from the database. There may be wikis which want to use the database records as illustration, or maybe group the database records differently and comment on them. The idea is to not duplicate the database, but use feeds which would be updated and propagated from the source. My point of view comes from what I did for inserting bibliographic records (PMIDs from Medline and ISBNs from isbndb.org), in wikis: see [http://wikiomics.org/wiki/Biblio Biblio extension]. Someone also pointed out the [http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Wikicite Wikicite project]. I don't know where these folks are going exactly, but the idea is to build a database of bibliographic references. Have a look. --[[User:Martin|Martin]] 00:19, 11 July 2006 (BST)
+
== Parser Functions & Other Extensions ==
 
+
Due to the way that the WikiDB_Parse function was written, using a local parser it won't call into any extensions that have registered with the global parser (e.g. [http://meta.wikimedia.org/wiki/ParserFunctions Parser Functions]).  However, I have replaced the Parse call with the following, and it seems to be working on my version 1.9.3.
::: I haven't really given this any thought yet, and I will take a look at the links shortly, but on the surface what you say sounds quite plausibleHow I would implement this is to use a new action argument, e.g. $action=rawdata (or an existing action if a suitable one exists - raw?). So if you entered e.g. http://some.domain.org/w/index.php?title=Table:Companies&action=rawdata, you would get the data (and schema?) from the Companies table in a standard format, probably XML.  Does this sound like it would do the trick? (Bear in mind that if the table definition is altered, the XML output will change) --[[User:HappyDog|HappyDog]] 00:58, 11 July 2006 (BST)
+
 
+
:::: I was thinking of something like an SQL SELECT statement. More specifically, the only features that I think would be useful would be:
+
::::* download the whole database for local use as you just mentioned.
+
::::* select one or several records by giving one column name and passing a list of strings. All records for which one of those strings matches is selected.
+
:::: I don't know if you can do this simply using MediaWiki. Basically the URL I would pass would be like http://some.domain.org/w/index.php?title=Table:Companies&action=rawdata&select_id=12,34,567 where id is a column name and 12, 34 and 567 are acceptable id values. Maybe it is easier to just write an independent PHP script which queries the database according to the CGI arguments which are found. --[[User:Martin|Martin]] 01:40, 11 July 2006 (BST)
+
 
+
::::: I think that level of detail is outside the scope of v1, however you're right, it would be fairly trivial to write a PHP script to parse and manipulate the raw data dump, particularly if it is in a standard format such as XML (or, it just occurs to me, SQL - I'm sure that would be possible, and then you could simply import it straight into a traditional database... hmmm... interesting thought!) --[[User:HappyDog|HappyDog]] 02:45, 11 July 2006 (BST)
+
 
+
== Fetch and use elements of a table ==
+
 
+
Hi!
+
 
+
As you know, I expect this extension for a long time.
+
Beside his earlier stage, it is a very important step, if we think to use MediaWiki seriously, in my point of view.
+
 
+
Well, my question is about fetch elements in the DB and use them in a infobox or elsewhere in a page.
+
I think the '''<repeat>''' tag may be used for that, but I think this tag automatically shows a table with the data fetched.
+
 
+
What I need to do is something like:
+
  
 
<pre>
 
<pre>
This are the companies at the DB:
+
function WikiDB_Parse( $Input, $Parser, $LineStart = true )
<repeat table="Companies3" criteria="Name!=Microsoft" sort="Logo desc">
+
{
  {{name}} is founded at {{founded}} and have a revenue of {{revenue}}
+
                        $title = $Parser->mTitle;
</repeat>
+
                        $options = $Parser->mOptions;
 +
                        $output = $Parser->parse( $Input, $title, $options, true, false );
 +
                        return $output->getText();
 +
}
 
</pre>
 
</pre>
  
which produces the next output:
+
-[[User:Jacob|Jacob]] 16:49, 14 April 2007 (BST)
Intel is founded at USA and have a revenue of #N/A   
+
Apple is founded at April 2005 and have a revenue of $7.42
+
  
Maybe we can even use the '''&lt;repeat>''' tag with a additional template option, as in
+
: Looking at my code, a (slightly different) version of this function already exists.  As you don't give details about what code was there ''before'' your changes I'm not sure whether this is something I've already fixed, or whether you are pointing out something a bit more subtle. If I don't hear anything else, I'll assume it's fixed, but if there are still problems then please let me know--[[User:HappyDog|HappyDog]] 12:22, 19 February 2008 (GMT)
  &lt;repeat table="Companies3" criteria="Name!=Microsoft" sort="Logo desc" template="Infobox company">
+
  &lt;/repeat>
+
  
 +
== Using the <nowiki><repeat></nowiki> tag to display filtered/sorted Tables ==
 +
Moved to [[Talk:WikiDB/Repeat tag syntax#Using the &lt;repeat&gt; tag to display filtered/sorted Tables]].
  
Best regards and again, thanks for your effort
+
== Versioning of WikiDB Extension Files ==
  
Ivo Almeida
+
*Since this Extension is in continual development now toward v1 and will continue in development afterwards, I'd like to suggest a small change to ALL of your [[WikiDB/Files|WikiDB extension files]] to contain a Version number so that all of us using the extension can check back [[WikiDB/Files|here]] and quickly determine if there have been any updates to the filesA version number can be attached to the $wgExtensionCredits array in each of your php files as shown below for another extension I have installed on my wiki.
 
+
: Hi Ivo - the first example you give is ''exactly'' how I plan the repeat tag to work!  I have not coded it yet, but basically the contents of the repeat tag will be repeated for each row, with variable substitution working the same way as for templates (I may even harness the template code to do this, if that is possible...).  If you want to [[Special:Emailuser/HappyDog|send me]] your e-mail address I will let you know when this change is in place.  Alternatively, just check back here from time to time.  Thanks for your interest.  --[[User:HappyDog|HappyDog]] 17:20, 20 September 2006 (BST)
+
 
+
:: I added this functionality a little while ago, but forgot to update this page.  There are still a few bugs which need to be ironed out, but the general case works. --[[User:HappyDog|HappyDog]] 19:10, 1 December 2006 (GMT)
+
 
+
== WikiDB hate math? ==
+
 
+
It's imposible to use math and WikiDB on one page.
+
My wiki have a lot of math formulas. I try build special dictionary using WikiDB. If I put on page list of WikiDB records, then any math no works on this page. :((
+
I use MimeTeX as cgi. --[[User:195.16.88.26|195.16.88.26]] 16:03, 22 January 2007 (GMT)
+
 
+
: Hi - Can you give me an example of the markup that you use so that I can investigate further.  Thanks --[[User:HappyDog|HappyDog]] 16:54, 22 January 2007 (GMT)
+
 
+
Thanks for interest. WikiDB is very pleasant extension. I contrive now, how to do nice search for it and it will be beatifull then.
+
 
+
Test page with WikiDB (You can destroy this page, it's only test for you):
+
http://www.astro.hg.pl/wiki/algorytmy/index.php?title=Test_WikiDB%26Math
+
 
+
The same original page without WikiDB:
+
http://www.astro.hg.pl/wiki/algorytmy/index.php?title=Ascendent_i_Descendent
+
 
+
Link for separate page with DB list is no problem here. I only sygnalize you conflict.
+
 
+
 
+
Definition of DB:
+
http://www.astro.hg.pl/wiki/algorytmy/index.php?title=Slownik:Slowka
+
 
+
Definitions of listed records:
+
http://www.astro.hg.pl/wiki/algorytmy/index.php?title=S%C5%82ownik:Ascendent
+
 
+
It can be even :<math>a</math> and listing of one record of DB. Effect is identical like definition of data and listing on the same page: error type ?UNIQ35cb8610deb4633-math-4952b6c343f9c54300000002-QINU instead of formula.--[[User:195.16.88.26|195.16.88.26]] 21:04, 22 January 2007 (GMT)
+
 
+
: Thanks for the examples - I will look into it and post my findings here. --[[User:HappyDog|HappyDog]] 21:29, 22 January 2007 (GMT)
+
 
+
:: OK - I have managed to get textvc installed on my local copy, so I can enable math tags (for a proper test).  I tried it with MW1.6.8 (as installed on your server) and I can replicate the problem.  Interestingly, it is not a problem in MW1.5.6, which is what I have been working with up to now.  I will look further and see what's causing the problem... --[[User:HappyDog|HappyDog]] 02:07, 23 January 2007 (GMT)
+
 
+
::: Fixed it! Download the latest version of [[WikiDB/Files/WikiDB.php|WikiDB.php]] and you should be fine.
+
::: The problem was the way that I was accessing the parser - it caused it to lose the information about tokens that had already been stripped (in this case the math tag).  Using a new Parser instance avoids this. Let me know if you have any other problems or questions! --[[User:HappyDog|HappyDog]] 02:59, 23 January 2007 (GMT)
+
 
+
:::: Oh, yes! Now is excellent! Thanks. :)) --[[User:Neptus|Neptus]] (195.16.88.26) 09:02, 2 February 2007 (GMT)
+
 
+
== WikiDB is too slow ==
+
 
+
If number of base records grows, it is great problem. Server generates timeout and pages with queries no works. I have about 900 simple record definitions now.
+
 
+
Complet list works:
+
 
+
http://www.astro.hg.pl/wiki/algorytmy/index.php?title=S%C5%82ownik:Wszystkie_has%C5%82a
+
 
+
When I use selection, i.e.:
+
  
 
<pre>
 
<pre>
  <repeat table="Slowka" criteria="kod=en" sort="tekst"># {{{tekst}}} = {{{definicja}}}
+
$wgExtensionCredits['parserhook'][] = array(
</repeat>
+
'name' => 'CreateBox',
 +
'url' => 'http://www.mediawiki.org/wiki/Extension:CreateBox',
 +
'description' => 'Specialized Inputbox for page creation',
 +
'author' => 'Ross McClure',
 +
'version' => '1.5'
 +
);
 
</pre>
 
</pre>
  
- it no works because of very long time needing for this operation, considerably higher above server time limits.
+
*Also, what would be even more helpful would be to maintain current version numbers on all files on [[WikiDB/Files|this page]] so that all of us using this extension won't have to look in the file sources themselves for the version numbers.
http://www.astro.hg.pl/wiki/algorytmy/index.php?title=English
+
  
Server generates error(500). It means in short translation: script needs too much server processor time or server memory or in .htaccess file contains any illegal directiv.
+
*Further, since you're working toward v1 right now and common version numbering starts with 0.x.y for pre-v1 release versioning, you could start a version number for your files at 0.1.0 or something similar.
--[[User:Neptus|Neptus]] 17:21, 11 February 2007 (GMT)
+
  
: As it says at the top of the page, there is loads of optimisation that needs to be done to this to make it anywhere near usable for large data sets.  I won't be working on the optimisation of this code until the core functionality is complete (although anyone else is free to try or to offer suggestions for optimisation).  In the meantime, all I can suggest is to increase max_execution_time for PHP (see [http://uk2.php.net/function.set-time-limit] for one method).  This will fix the time-out issue but won't increase the rendering time - i.e. it will still take 30+ seconds, but you will get to view the result (eventually...).  --[[User:HappyDog|HappyDog]] 22:16, 11 February 2007 (GMT)
+
*Finally, would you consider opening up the development of this extension to the open-source community to allow the inclusion of other code developers/designers/contributors to help develop this extension?
  
:: It's only virtual server, not my own PHP server. :( In that case, I must rewrite it to other format... Thanks. --[[User:Neptus|Neptus]] 22:50, 11 February 2007 (GMT)
+
Thanks-- [[User:Mdrayman|Mdrayman]] 04:31, 1 July 2007 (BST)
  
::: All is correct. It was malicious server error - only this one account from a lot of thousends on server works bad. Sorry. WikiDB is really slow, but it works in reasonable time. All my pages are viewed in a few seconds now. I still like and use this extension. :) --[[User:Neptus|Neptus]] 21:09, 13 February 2007 (GMT)
+
: The problem is that when I work on it, changes go live straight away which means that (a) sometimes the code is broken (hence my big warning) and (b) that it is too much work to do a version change on each update. I store the code in a local Subversion repository, so it would be fairly easy to add the SVN revision to the top of each file - this will probably do the trick.  There might be some way of outputting this in some central place as well, but I'm not sure. I will have a think about it... Of course the real solution is to use a separate local testing server (which is what this was, originally, but it has since become the 'public face'), which is something else I might do when I have a bit of time to set one up.
 +
: Re: opening up the code - I am happy for people to make suggestions and to send me feature implementations or bug-fixes.  I am capable of handling patch files, complete source file with modifications or even just informal code snippets, and of incorporating the changes back into the main branch, and have already done so on a few occasions. However for the time being I want to keep everything centralised here.  Once we get a bit nearer v1, and the spec. is more clearly defined (particularly re: syntax issues) I will look into adding it to the MW SVN code repository. --[[User:HappyDog|HappyDog]] 13:48, 4 July 2007 (BST)
  
== WikiDB does not work with mediawiki 1.9.1 ? ==
+
:: I have added SVN revision tags to the files, which contain the most recent revision no. of the files.  I have also added a new feature to my WikiDebug extension to display this info in-wiki, and have added this functionality to the [[WikiDB/Files|files page]]. I hope this solves the problem for you (feedback is always welcome!) --[[User:HappyDog|HappyDog]] 00:50, 13 July 2007 (BST)
  
After installed the extension to mediawiki-1.9.1, I tested and it seems that WikiDB is able to create a table and data can be recorded in the databaseHowever, the data cannot be showing up on a wiki pageNeither using "table" or using "repeat" tag.
+
::: The latest version (which is not yet posted here) has also added code to display the version number on [[Special:Version]]. Check that page, and if a version no. is being displayed then I have updated the site with this new feature.
 +
::: Regarding the overall versioning of the software, I have decided to adopt a scheme whereby I don't have to remember to update version numbers every time I update the files (as the update often happens automatically)The revision number is automatically incremented with every change, plus there is a version number that I manually bump whenever there is a schema or stored-date-format changeThis will be available in the next version, when it is made live. --[[User:HappyDog|HappyDog]] 12:22, 19 February 2008 (GMT)
  
For example, write the following code to a page called Sandbox,
+
== Create Forms to fill in Table data ==
<pre>
+
Moved to [[WikiDB/Feature requests#Create Forms to fill in Table data]].
<data table="Companies" template="Infobox Company">
+
name=Microsoft
+
founded=1492
+
revenue=$8
+
</data>
+
</pre>
+
  
the browser address bar shows
+
== Hyperlink reference to Table:Name when editing page ==
<pre>
+
Moved to [[WikiDB/Feature requests#Hyperlink reference to Table:Name when editing page]].
http://mysiteurl.com/wiki/index.php?title=Sandbox&action=submit
+
</pre>
+
and the sanbox become an '''empty blank page'''
+
  
Checking the undefined table spacial page, I do see the Table:Companies and check the data of the table, I got the following:
+
== Adding table properties within repeat tag ==
  
{|style="background-color:#808089;" border="1"
+
Moved to [[Talk:WikiDB/Repeat tag syntax#Adding table properties within repeat tag]].
!Defined Fields
+
! colspan="3"|Undefined Fields
+
|-style="background-color:white;"
+
!Source Article
+
!name
+
!founded
+
!revenue
+
|-style="background-color:white;"
+
|Sandbox
+
|Microsoft
+
|1492
+
|$8
+
|}
+
  
After that, '''the sandbox page is not accessable any more. Or it shows as a blank page, I cannot edit/delete it'''
+
== Some display suggestions ==
 +
Moved to [[WikiDB/Feature requests#Some display suggestions]].
  
If I define the table first and then use "table" tag to save some data, the data will be saved to the table, but using "repeat" to retrive the data, the data cannot be shown on a page, again, the page shows blank.  
+
== Relationships between tables ==
 +
Moved to [[WikiDB/Feature requests#Relationships between tables]].
  
Is wikiDB tested in mediawiki 1.9.1?
+
==Empty tables==
 +
Moved to [[WikiDB/Bugs#Empty tables]].
  
: No - I haven't tested WikiDB with later versions of MW yet, but I will do so as soon as I have a bit of time and let you know how I get on right here.  --[[User:HappyDog|HappyDog]] 23:15, 14 March 2007 (GMT)
+
== Working with WikiDB and SemanticMediaWiki (SMW) ==
  
:: OK - I've fixed this bug. As far as I know WikiDB now works on MW 1.9.1.  You will need to download the latest version of [[WikiDB/Files/WikiDB.php|WikiDB.php]], but the rest of the files remain unchanged.  Please let me know if you encounter any more bugs.
+
Hi,
:: Here's the technical bit for those who are interested: The Parser::parse() function takes a 'clearstate' argument, which if true resets the state of the parser, and if false leaves it as it is. Because I was calling a new instance of the parser with this flag set to false, it was not being initialised properly, and so a PHP error was being raised.  Presumably your system is set up to not display errors, hence the blank page.  This has clearly changed from earlier versions, whether deliberately or not, which is why there was no problem on this wiki (currently running 1.5.8). Anyway, I have now set the clearstate argument to true and everything seems to work fine on both wikis (fingers crossed!) :-) --[[User:HappyDog|HappyDog]] 10:38, 29 March 2007 (BST)
+
I'm using Mediawiki v1.16. I am wondering if there is a way to integrate between those 2 above extensions.
:::Thanks, Sir!  This fix the problem and it works on Mediawiki 1.9.3 as well! :)
+
I'll explain by simple example:
 +
I created a new semantic form called "Form:Books" which contain 2 fields: book number and book name.
 +
In addition, I created a related template called "Template:Books" and contain a simple <nowiki><repeat></nowiki> tag that based on "Books" table (WikiDB table).
 +
Can I pass the form field and use it as a parameter for the repeat tag? In other words, I want to have a form that is based on a simple tables I defined under this WikiDB.
  
== And with mediawiki 1.10.0? Any successful test? ==
+
(booknum is the field name on Books table. booknumber is the field name on Books form):
 +
<nowiki>
 +
<repeat table="Books" criteria="booknum={{{booknumber}}}" />
 +
</nowiki>
 +
TNX a lot.
  
Hi, I'm not sure who asked this question, but I have successfully tested some of the basic functionality on my MediaWiki 1.10.0 installation. The details are [[Talk:WikiDB/Tables#Creating Tables for WikiDB extension|here on the Tables Talk page]] under '''Creating Tables for WikiDB Extension'''.
+
: Hi there.  This isn't really an issue with SMW as such, but more that WikiDB doesn't currently support &lt;repeat&gt; tags within templates in the way that you want (which affects many use-cases, not just SMW).  This is a feature I would like to add to WikiDB, but it is a non-trivial thing to implement due to the way templates work.  I am considering ways of approaching this, but I don't expect a proper solution for some time as it is hard!  Suggestions, tips or patches welcome... --[[User:HappyDog|HappyDog]] 07:42, 12 July 2013 (UTC)
  
Let me know if you have any questions.
+
:: Note that this should now be possible in WikiDB v4 (r906). --[[User:HappyDog|HappyDog]] 00:52, 3 November 2014 (UTC)
  
--[[User:Mdrayman|Mdrayman]] 05:34, 25 June 2007 (BST)
+
== WikiDB & Cite Extensions ==
 +
Moved to [[WikiDB/Bugs#WikiDB & Cite Extensions]].
  
== simple way to do WikiDB faster ==
+
== Empty string in criteria ==
  
Add second single index '''row_id''' to table '''wikidb_fielddata'''. My WikiDB is like a rocket now! --[[User:Neptus|Neptus]] 15:06, 21 February 2007 (GMT)
+
Hello. How can I test empty strings in criteria of the repeat tag? It looks like simple <code><nowiki>criteria = "column_name = ''"</nowiki></code> does not work. Thanks. --[[User:Okino|Okino]] 11:34, 14 January 2014 (UTC)
  
:Hi Neptus. Sorry about the slow response - I've been away. I've checked the [[WikiDB/Tables|table definitions]] and this index is already there (3rd row in the index table).  Perhaps you forgot to add it when you setup your tables originally (I'm pretty sure it's been there since the start).  Or maybe I've misunderstood what you are saying? --[[User:HappyDog|HappyDog]] 23:15, 14 March 2007 (GMT)
+
: Good spot!
 +
: I have updated WikiDB to allow this (v3, r856 <small>[[Media:WikiDB.zip|download]] &bull; [[WikiDB/CHANGELOG#r856|CHANGELOG]]</small>).  In this new version you can achieve what you want using <code>criteria = "column_name ="</code>, or <code>criteria = "column_name !="</code> to match non-blank values.
 +
: Thanks for bringing this to my attention. --[[User:HappyDog|HappyDog]] 12:29, 15 January 2014 (UTC)
  
:: Ooops.. You are right! Then I'm a blondie... I've put it all to one index... Sorry, then your base isn't slow. It is very fast base. --[[User:Neptus|Neptus]] 02:11, 17 March 2007 (GMT)
+
== Move page problem ==
  
== Count of records ==
+
Moved to [[WikiDB/Bugs#Move page problem]].
  
Is it possible to get number of record definitions without listing all? --[[User:Neptus|Neptus]] 21:34, 14 March 2007 (GMT)
+
== Table Definition Oddities and Getting Unique Data Records ==
  
: Can you please elaborate.  Do you mean via a tag (so it can be displayed in a page) or on the table definition.  I'm sure it would be fairly easy to add in either case - please tell me what you would like to see and where, and I'll see what I can do. --[[User:HappyDog|HappyDog]] 23:15, 14 March 2007 (GMT)
+
I have two questions I'm hoping you might be able to answer.
  
:: I have 4000 definitions in my WikiDB dictonary now and it grows all the time. I can count it only using tag <nowiki><repeat table...># ... </repeat></nowiki> now. This listing is long.
+
One, I'm struggling with Table Definitions.
:: It will be nice to have only one aktual number of positions declared in WikiDB on page (or a number of selected records), visual effect like a number of pages <nowiki>{{NUMBEROFARTICLES}}</nowiki> in wiki - simple base counter: how many records is inside. Nice gadget for information and for a boast. Then it will be a tag, I think. --[[User:Neptus|Neptus]] 01:40, 17 March 2007 (GMT)
+
  
::: The problem is that it would be a single number for the whole wiki.  If I added a <nowiki>{{NUMBEROFROWS}}</nowiki> magic word it would give the no. of rows in ''all'' tables in the wiki, combined.  It might be possible to somehow supply an argument to a magic word (e.g. <nowiki>{{NUMBEROFROWS|Table:Companies}}</nowiki>, in which case it might be possible, but I'm not sure about that. 
+
If I put say:
::: I can definitely add the info at the top of the table definition as a way of seeing it without having to count by hand, but that won't allow you to embed it in other articles.
+
::: I guess a parser function would be possible, e.g. <nowiki>{{#CountRows: Table:Companies}}</nowiki>.  I haven't investigated them yet, but if that's the kind of thing that will do what you're after then I can look into it. --[[User:HappyDog|HappyDog]] 00:12, 27 March 2007 (BST)
+
  
:::: Thanks. It isn't necessary for life, but if it will be not especially complicate work, it will be nice and  usefull tool. --[[User:195.16.88.26|195.16.88.26]] 00:55, 30 March 2007 (BST)
+
<pre>> Edition:string
 +
> Deck:string</pre>
  
::::: OK - I've done a quick fix that gives the info on the 'data' tab when you're [[Table:Companies2|in the table namespace]].  I'll have a think about other ways of getting this information (suggestions welcome) but you can at least see it easily now. [[WikiDB/Files/WikiDB.php|WikiDB.php]] is the only file that changed for this fix (though there may be other fixes elsewhere, depending how old your copy is). --[[User:HappyDog|HappyDog]] 17:26, 3 April 2007 (BST)
+
On the Table Definition page, the definitions will apply to the data correctly, but instead of displaying as a nice table of definitions it will display:
  
:::::: Thank you. Now I know, what big it is and what I can do with it. It's no good way for visitors, but for admin is good. --[[User:Neptus|Neptus]] 16:04, 21 April 2007 (BST)
+
<pre>> Edition:string > Deck:string</pre>
  
== Table Formatting ==
+
On the page. I'm not sure what I'm doing wrong here. (Or if the person who maintains the wiki installed things wrong.)
Hi. I love this use for the Wiki, but I've had one frustration - getting formatted tables. To that end, I have made a modification for my own use, and am passing it on.  Feel free to include, ignore, whatever.  I just thought it might be useful.  I have added two internal tags to the '''repeat''' command so that there can be footers and headers added to the output produced from the repeat tag.
+
  
The trouble was produced because something like:
+
Two, is there a way to output only unique entries?
<pre>
+
{|
+
<repeat table="foo">
+
|{{{colA}}}
+
|{{{colB}}}
+
|-
+
</repeat>
+
|}
+
</pre>
+
gives totally useless results, and after looking at the MediaWiki Parser.php file, it turns out that unless that is rewritten, it always will - the table parsing is all one-pass, and doesn't preserve state while in an extension. 
+
  
So, I have turned that into:
+
Like if I have:
  
<pre>
+
* Name: Testing 1
{|
+
* Name: Testing 1
<repeat table="foo">
+
* Name: Testing 2
<header>
+
* Name: Testing 2
{|
+
</header>
+
|{{{colA}}}
+
|{{{colB}}}
+
|-
+
<footer>
+
|}
+
</footer>
+
</repeat>
+
|}
+
</pre>
+
  
Which now gives the right results.  Of course, this requires the following code I added (I know it is rudimentary, but it works...)
+
Is there some way I can get an output of:
 
+
'''Change to WikiDB.php'''
+
 
+
<pre>
+
                $Data = $Table->PerformQuery($Where, $Sort);
+
if (trim($Input) == "")
+
$Output = $Table->FormatTableData($Data);
+
else
+
{
+
$outputDef = new WikiDB_OutputFormatDef($Input);
+
+
$Output = "";
+
$Data = $Table->NormaliseData($Data);
+
// print_r($Data);
+
 
+
if($outputDef->hasHeader())
+
{
+
$Output .= $outputDef->getHeader() . "\n";
+
}
+
+
$RowFormat = $outputDef->getRow();
+
foreach ($Data as $Row)
+
{
+
$Output .= pWikiDB_ExpandVariables($RowFormat, $Row);
+
}
+
+
if($outputDef->hasFooter())
+
{
+
$Output .= $outputDef->getFooter() . "\n";
+
}
+
// print($Output);
+
}
+
</pre>
+
 
+
Also, you must include the following file:
+
 
+
'''classWikiDB_OutputFormatDef.php'''
+
<pre>
+
<?php
+
 
+
class WikiDB_OutputFormatDef
+
{
+
var $sHeader;
+
var $sFooter;
+
var $sRow;
+
+
function WikiDB_OutputFormatDef($contents)
+
{
+
$this->sHeader = $this->stripTagItem($contents, 'header');
+
$this->sFooter = $this->stripTagItem($contents, 'footer');
+
$this->sRow = $contents;
+
}
+
+
function hasHeader(){ return strlen($this->sHeader) > 0; }
+
function hasFooter(){ return strlen($this->sFooter) > 0; }
+
+
function getHeader(){ return $this->sHeader; }
+
function getFooter(){ return $this->sFooter; }
+
function getRow()  { return $this->sRow; }
+
+
function stripTagItem(&$text, $tag)
+
{
+
$tagLen = strlen($tag);
+
+
$start = stripos($text, '<' . $tag . '>');
+
if($start == FALSE)
+
{
+
return '';
+
}
+
+
$end = stripos($text, '</' . $tag . '>');
+
if($end == FALSE)
+
{
+
return '';
+
}
+
+
$tagTextStart  = $start+$tagLen+2;
+
$tagTextLength = $end - $tagTextStart - 1;
+
$tagTextEnd    = $end + $tagLen + 3;
+
+
$tagContents = substr($text, $tagTextStart, $tagTextLength);
+
//strip out the tag
+
$text = substr($text, 0, $start) . substr($text, $tagTextEnd);
+
+
return $tagContents;
+
}
+
+
}  //END: Class WikiDB_OutputFormatDef
+
 
+
?>
+
</pre>
+
 
+
Thanks!
+
 
+
-[[User:Jacob|Jacob]] 15:50, 8 April 2007 (BST)
+
 
+
===Slight Modifications===
+
I integrated your code into my working wiki, because I too saw the uselessness of the table formatting with the repeat tag.  However, I made a couple other changes:
+
* the table begin and end before and after the repeat are not needed, correct? (the header and footer tags print them)
+
* It seems like the table code was inserting an extra line break in the raw input, which was causing a "br" tag in the output, which was skewing the last column of each table row.  To change this, I added the last line here:
+
<pre>
+
if (trim($Input) == "")
+
  $Output = $Table->FormatTableData($Data);
+
else {
+
  $Input = trim($Input); // get rid of extra line breaks
+
</pre>
+
* However, the trim broke the tag processing in the OutputFormatDef file.  On the lines "if $start == FALSE" and "if $end == false", I changed the "==" to "===" to be a more correct equality test, since after the trim those tags for me were in position 0 (== FALSE, but not ===FALSE).
+
* Finally, "stripos" only works on PHP5, so I changed the 2 lines that use strpos as follows:
+
<pre>
+
OLD: stripos($text, '<' . $tag . '>'));
+
NEW: strpos($text, strtolower('<' . $tag . '>'));
+
</pre>
+
 
+
Thanks for your help and work on this.  It's a cool extension.
+
<p align=right>-- Joe Clark (a guest, joeclark AT joeclarkia DOT net)</p>
+
 
+
== Parser Functions & Other Extensions ==
+
Due to the way that the WikiDB_Parse function was written, using a local parser it won't call into any extensions that have registered with the global parser (e.g. [http://meta.wikimedia.org/wiki/ParserFunctions Parser Functions]).  However, I have replaced the Parse call with the following, and it seems to be working on my version 1.9.3.
+
 
+
<pre>
+
function WikiDB_Parse( $Input, $Parser, $LineStart = true )
+
{
+
                        $title = $Parser->mTitle;
+
                        $options = $Parser->mOptions;
+
                        $output = $Parser->parse( $Input, $title, $options, true, false );
+
                        return $output->getText();
+
}
+
</pre>
+
 
+
-[[User:Jacob|Jacob]] 16:49, 14 April 2007 (BST)
+
 
+
== Using the <nowiki><repeat></nowiki> tag to display filtered/sorted Tables ==
+
 
+
I have a suggestion to efficiently display tables using the <nowiki><repeat></nowiki> tag when a table has a very large number of fields that a user may want to only see a small portion of the fields.
+
 
+
Expand the parameters of the <nowiki><repeat></nowiki> tag such that somehow a user can specify which fields to display in the rendered wiki page.  Perhaps this need be only one additional parameter that contains a comma separated list of field names to display whilst not displaying all other fields in the specified table.
+
 
+
Example:
+
 
+
Suppose a table called "Stock Investments" contains the following fields: "stock_symbol", "name", "ceo_name", "address", "main_phone", "annual_revenue", "website", "current_stock_price", "my_shares_count".
+
 
+
There are 9 fields in this table such that when the current <nowiki><repeat></nowiki> tag was used to display a sorted and/or filtered table of this table, the rendered table in the browser may proceed beyond the right edge of the screen, so perhaps the <nowiki><repeat></nowiki> tag could have a new parameter, ''filter_columns'', that is used as such:
+
 
+
<pre>
+
<nowiki><repeat table="Stock Investments" sort="stock_symbol" filter_columns="stock_symbol,name,current_stock_price,my_shares_count,annual_revenue"></repeat></nowiki></pre>
+
 
+
And this usage of the <nowiki><repeat></nowiki> tag would yield a table such as the following with '''ONLY''' the columns specified in the ''filter_columns'' parameter '''AND''' in the order specified.
+
 
+
{| border="1"
+
|+ Stock Investments
+
! stock_symbol !! name !! current_stock_price !! my_shares_count !! annual_revenue
+
|-
+
| AMD || AMD, Inc || 14.30 || 100 || 5.649B
+
|-
+
| KEI || Keithley Instruments, Inc || 20 || 12.55 || 0.155B
+
|-
+
| MSFT || Microsoft, Inc || 29.47 || 25 || 44.282B
+
|}
+
 
+
This feature would be very useful and I recommend including support for this feature in WikiDB.
+
 
+
Thanks!  -- [[User:Mdrayman|Mdrayman]] 22:02, 30 June 2007 (BST)
+
 
+
: There are a lot of syntax issues with the repeat tag at present, so I need to get those resolved first.  It may be that after the fix-up this kind of thing will be sufficiently simple not to warrant a separate syntax, however if this is not the case then it is a good suggestion, and one I will revisit when the other issues are fixed. --[[User:HappyDog|HappyDog]] 13:35, 4 July 2007 (BST)
+
 
+
== Versioning of WikiDB Extension Files ==
+
 
+
*Since this Extension is in continual development now toward v1 and will continue in development afterwards, I'd like to suggest a small change to ALL of your [[WikiDB/Files|WikiDB extension files]] to contain a Version number so that all of us using the extension can check back [[WikiDB/Files|here]] and quickly determine if there have been any updates to the files.  A version number can be attached to the $wgExtensionCredits array in each of your php files as shown below for another extension I have installed on my wiki.
+
 
+
<pre>
+
$wgExtensionCredits['parserhook'][] = array(
+
'name' => 'CreateBox',
+
'url' => 'http://www.mediawiki.org/wiki/Extension:CreateBox',
+
'description' => 'Specialized Inputbox for page creation',
+
'author' => 'Ross McClure',
+
'version' => '1.5'
+
);
+
</pre>
+
 
+
*Also, what would be even more helpful would be to maintain current version numbers on all files on [[WikiDB/Files|this page]] so that all of us using this extension won't have to look in the file sources themselves for the version numbers.
+
 
+
*Further, since you're working toward v1 right now and common version numbering starts with 0.x.y for pre-v1 release versioning, you could start a version number for your files at 0.1.0 or something similar.
+
 
+
*Finally, would you consider opening up the development of this extension to the open-source community to allow the inclusion of other code developers/designers/contributors to help develop this extension?
+
 
+
Thanks!  -- [[User:Mdrayman|Mdrayman]] 04:31, 1 July 2007 (BST)
+
 
+
: The problem is that when I work on it, changes go live straight away which means that (a) sometimes the code is broken (hence my big warning) and (b) that it is too much work to do a version change on each update.  I store the code in a local Subversion repository, so it would be fairly easy to add the SVN revision to the top of each file - this will probably do the trick.  There might be some way of outputting this in some central place as well, but I'm not sure.  I will have a think about it... Of course the real solution is to use a separate local testing server (which is what this was, originally, but it has since become the 'public face'), which is something else I might do when I have a bit of time to set one up. 
+
: Re: opening up the code - I am happy for people to make suggestions and to send me feature implementations or bug-fixes.  I am capable of handling patch files, complete source file with modifications or even just informal code snippets, and of incorporating the changes back into the main branch, and have already done so on a few occasions.  However for the time being I want to keep everything centralised here.  Once we get a bit nearer v1, and the spec. is more clearly defined (particularly re: syntax issues) I will look into adding it to the MW SVN code repository. --[[User:HappyDog|HappyDog]] 13:48, 4 July 2007 (BST)
+
 
+
== Create Forms to fill in Table data ==
+
  
I'd like to suggest to everyone watching/discussing/contributing to WikiDB that we investigate a way (or create our own way) to create forms inside wiki pages that will actually fill in the fields of a <nowiki><data></nowiki> tag statement so that data in the tables can be easily entered without manual editing of the wiki page that contains the record entry via the <nowiki><data></nowiki> tag.
+
Testing 1, Testing 2
  
I've come across several "forms" style extensions for MediaWik such as [http://www.mediawiki.org/wiki/Extension:Simple_Forms Simple Forms], [http://www.mediawiki.org/wiki/Extension:FormTools FormTools], [http://www.mediawiki.org/wiki/Extension:Semantic_Forms Semantic Forms], however, I haven't found one that will work, either because it still eludes me or I don't understand how to make use of one or more of the extensions I listed here.
+
Instead of
  
Anybody have any ideas about how to create forms to fill fields in a <nowiki><data></nowiki> tag statement inside a wiki article?
+
Testing 1, Testing 1, Testing 2, Testing 2
  
Javascript, perhaps ???
+
?
  
An expansion of WikiDB functionality ???
+
[[Special:Contributions/74.65.72.174|74.65.72.174]] 23:39, 23 May 2021 (BST)
  
-- [[User:Mdrayman|Mdrayman]] 04:48, 3 July 2007 (BST)
+
: Hi there - thanks for getting in touch.
 +
: Re: Your first question - If your table definition is displaying the &gt; characters, then you are not entering into a page within a table namespace.  Your wiki should be configured  to have at least one table namespace, as per [[WikiDB/Installation#Define table namespaces|the instructions on this page]].  Either this has not been set up correctly, or the page you are editing is not within one of the table namespaces you have defined.  If you want to experiment with how things ''should'' work, then feel free to run some tests on this wiki.
 +
: Re: Your second question - There is not currently a way to do this, but it is a good feature suggestion.  I have added it to [[WikiDB/Feature requests#Distinct values|WikiDB/Feature requests]].
 +
: --[[User:HappyDog|HappyDog]] ([[User talk:HappyDog|talk]]) 23:29, 22 June 2021 (BST)

Latest revision as of 22:30, 22 June 2021

Some old discussion has been deleted. See here for diffs: [1].

External queries[edit]

Moved to WikiDB/Feature requests#External queries.

Count of records[edit]

Moved to WikiDB/Feature requests#Count of records.

Table Formatting[edit]

Moved to Talk:WikiDB/Repeat tag syntax#Table Formatting.

Parser Functions & Other Extensions[edit]

Due to the way that the WikiDB_Parse function was written, using a local parser it won't call into any extensions that have registered with the global parser (e.g. Parser Functions). However, I have replaced the Parse call with the following, and it seems to be working on my version 1.9.3.

function WikiDB_Parse( $Input, $Parser, $LineStart = true ) 
{
                        $title = $Parser->mTitle;
                        $options = $Parser->mOptions;
                        $output = $Parser->parse( $Input, $title, $options, true, false );
                        return $output->getText();
}

-Jacob 16:49, 14 April 2007 (BST)

Looking at my code, a (slightly different) version of this function already exists. As you don't give details about what code was there before your changes I'm not sure whether this is something I've already fixed, or whether you are pointing out something a bit more subtle. If I don't hear anything else, I'll assume it's fixed, but if there are still problems then please let me know! --HappyDog 12:22, 19 February 2008 (GMT)

Using the <repeat> tag to display filtered/sorted Tables[edit]

Moved to Talk:WikiDB/Repeat tag syntax#Using the <repeat> tag to display filtered/sorted Tables.

Versioning of WikiDB Extension Files[edit]

  • Since this Extension is in continual development now toward v1 and will continue in development afterwards, I'd like to suggest a small change to ALL of your WikiDB extension files to contain a Version number so that all of us using the extension can check back here and quickly determine if there have been any updates to the files. A version number can be attached to the $wgExtensionCredits array in each of your php files as shown below for another extension I have installed on my wiki.
$wgExtensionCredits['parserhook'][] = array(
'name' => 'CreateBox',
'url' => 'http://www.mediawiki.org/wiki/Extension:CreateBox',
'description' => 'Specialized Inputbox for page creation',
'author' => 'Ross McClure',
'version' => '1.5'
);
  • Also, what would be even more helpful would be to maintain current version numbers on all files on this page so that all of us using this extension won't have to look in the file sources themselves for the version numbers.
  • Further, since you're working toward v1 right now and common version numbering starts with 0.x.y for pre-v1 release versioning, you could start a version number for your files at 0.1.0 or something similar.
  • Finally, would you consider opening up the development of this extension to the open-source community to allow the inclusion of other code developers/designers/contributors to help develop this extension?

Thanks! -- Mdrayman 04:31, 1 July 2007 (BST)

The problem is that when I work on it, changes go live straight away which means that (a) sometimes the code is broken (hence my big warning) and (b) that it is too much work to do a version change on each update. I store the code in a local Subversion repository, so it would be fairly easy to add the SVN revision to the top of each file - this will probably do the trick. There might be some way of outputting this in some central place as well, but I'm not sure. I will have a think about it... Of course the real solution is to use a separate local testing server (which is what this was, originally, but it has since become the 'public face'), which is something else I might do when I have a bit of time to set one up.
Re: opening up the code - I am happy for people to make suggestions and to send me feature implementations or bug-fixes. I am capable of handling patch files, complete source file with modifications or even just informal code snippets, and of incorporating the changes back into the main branch, and have already done so on a few occasions. However for the time being I want to keep everything centralised here. Once we get a bit nearer v1, and the spec. is more clearly defined (particularly re: syntax issues) I will look into adding it to the MW SVN code repository. --HappyDog 13:48, 4 July 2007 (BST)
I have added SVN revision tags to the files, which contain the most recent revision no. of the files. I have also added a new feature to my WikiDebug extension to display this info in-wiki, and have added this functionality to the files page. I hope this solves the problem for you (feedback is always welcome!) --HappyDog 00:50, 13 July 2007 (BST)
The latest version (which is not yet posted here) has also added code to display the version number on Special:Version. Check that page, and if a version no. is being displayed then I have updated the site with this new feature.
Regarding the overall versioning of the software, I have decided to adopt a scheme whereby I don't have to remember to update version numbers every time I update the files (as the update often happens automatically). The revision number is automatically incremented with every change, plus there is a version number that I manually bump whenever there is a schema or stored-date-format change. This will be available in the next version, when it is made live. --HappyDog 12:22, 19 February 2008 (GMT)

Create Forms to fill in Table data[edit]

Moved to WikiDB/Feature requests#Create Forms to fill in Table data.

Hyperlink reference to Table:Name when editing page[edit]

Moved to WikiDB/Feature requests#Hyperlink reference to Table:Name when editing page.

Adding table properties within repeat tag[edit]

Moved to Talk:WikiDB/Repeat tag syntax#Adding table properties within repeat tag.

Some display suggestions[edit]

Moved to WikiDB/Feature requests#Some display suggestions.

Relationships between tables[edit]

Moved to WikiDB/Feature requests#Relationships between tables.

Empty tables[edit]

Moved to WikiDB/Bugs#Empty tables.

Working with WikiDB and SemanticMediaWiki (SMW)[edit]

Hi, I'm using Mediawiki v1.16. I am wondering if there is a way to integrate between those 2 above extensions. I'll explain by simple example: I created a new semantic form called "Form:Books" which contain 2 fields: book number and book name. In addition, I created a related template called "Template:Books" and contain a simple <repeat> tag that based on "Books" table (WikiDB table). Can I pass the form field and use it as a parameter for the repeat tag? In other words, I want to have a form that is based on a simple tables I defined under this WikiDB.

(booknum is the field name on Books table. booknumber is the field name on Books form): <repeat table="Books" criteria="booknum={{{booknumber}}}" /> TNX a lot.

Hi there. This isn't really an issue with SMW as such, but more that WikiDB doesn't currently support <repeat> tags within templates in the way that you want (which affects many use-cases, not just SMW). This is a feature I would like to add to WikiDB, but it is a non-trivial thing to implement due to the way templates work. I am considering ways of approaching this, but I don't expect a proper solution for some time as it is hard! Suggestions, tips or patches welcome... --HappyDog 07:42, 12 July 2013 (UTC)
Note that this should now be possible in WikiDB v4 (r906). --HappyDog 00:52, 3 November 2014 (UTC)

WikiDB & Cite Extensions[edit]

Moved to WikiDB/Bugs#WikiDB & Cite Extensions.

Empty string in criteria[edit]

Hello. How can I test empty strings in criteria of the repeat tag? It looks like simple criteria = "column_name = ''" does not work. Thanks. --Okino 11:34, 14 January 2014 (UTC)

Good spot!
I have updated WikiDB to allow this (v3, r856 downloadCHANGELOG). In this new version you can achieve what you want using criteria = "column_name =", or criteria = "column_name !=" to match non-blank values.
Thanks for bringing this to my attention. --HappyDog 12:29, 15 January 2014 (UTC)

Move page problem[edit]

Moved to WikiDB/Bugs#Move page problem.

Table Definition Oddities and Getting Unique Data Records[edit]

I have two questions I'm hoping you might be able to answer.

One, I'm struggling with Table Definitions.

If I put say:

> Edition:string
> Deck:string

On the Table Definition page, the definitions will apply to the data correctly, but instead of displaying as a nice table of definitions it will display:

> Edition:string > Deck:string

On the page. I'm not sure what I'm doing wrong here. (Or if the person who maintains the wiki installed things wrong.)

Two, is there a way to output only unique entries?

Like if I have:

  • Name: Testing 1
  • Name: Testing 1
  • Name: Testing 2
  • Name: Testing 2

Is there some way I can get an output of:

Testing 1, Testing 2

Instead of

Testing 1, Testing 1, Testing 2, Testing 2

?

74.65.72.174 23:39, 23 May 2021 (BST)

Hi there - thanks for getting in touch.
Re: Your first question - If your table definition is displaying the > characters, then you are not entering into a page within a table namespace. Your wiki should be configured to have at least one table namespace, as per the instructions on this page. Either this has not been set up correctly, or the page you are editing is not within one of the table namespaces you have defined. If you want to experiment with how things should work, then feel free to run some tests on this wiki.
Re: Your second question - There is not currently a way to do this, but it is a good feature suggestion. I have added it to WikiDB/Feature requests.
--HappyDog (talk) 23:29, 22 June 2021 (BST)