<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.phpgedview.net/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fisharebest</id>
	<title>PGVWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.phpgedview.net/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fisharebest"/>
	<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php/Special:Contributions/Fisharebest"/>
	<updated>2026-06-13T17:26:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=26_December&amp;diff=11961</id>
		<title>26 December</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=26_December&amp;diff=11961"/>
		<updated>2009-12-26T18:10:19Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Created page with '{{day}}  ==Events==  * 2009 - PhpGedView v4.2.3 was released.  Category:November  da: 26. December'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{day}}&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
&lt;br /&gt;
* [[2009]] - [[PhpGedView v4.2.3]] was released.&lt;br /&gt;
&lt;br /&gt;
[[Category:November]]&lt;br /&gt;
&lt;br /&gt;
[[da: 26. December]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=PhpGedView_v4.2.3&amp;diff=11960</id>
		<title>PhpGedView v4.2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=PhpGedView_v4.2.3&amp;diff=11960"/>
		<updated>2009-12-26T18:09:15Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Created page with ''''PhpGedView v4.2.3''' was released on 26 December, 2009.   Note that PhpGedView 4.2 now requires PHP 5.2.0 or later in order to run.  Please ensure your serve…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PhpGedView v4.2.3''' was released on [[26 December]], [[2009]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that PhpGedView 4.2 now requires [[w:PHP|PHP]] 5.2.0 or later in order to run.  Please ensure your server has a suitable version of PHP before upgrading.  If you don't know your version, you can find it out from the phpinfo link on PGV's admin page.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
{{main|Features v4.2.x}}&lt;br /&gt;
&lt;br /&gt;
== Internal Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Download v4.2.x|Download Page]]&lt;br /&gt;
* [[Installation Guide v4.2.x|Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Category related stuff --&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:4.2.3}}&lt;br /&gt;
[[Category:PhpGedView]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=4.2.3&amp;diff=11959</id>
		<title>4.2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=4.2.3&amp;diff=11959"/>
		<updated>2009-12-26T18:08:20Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Redirected page to PhpGedView v4.2.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PhpGedView v4.2.3]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Template:Latest_development&amp;diff=11958</id>
		<title>Template:Latest development</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Template:Latest_development&amp;diff=11958"/>
		<updated>2009-12-26T18:04:56Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;4.3.0&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
{{template doc}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Google_Map_module&amp;diff=11952</id>
		<title>Google Map module</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Google_Map_module&amp;diff=11952"/>
		<updated>2009-12-21T17:38:40Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Google Map module''' allows users to add maps to their family data.&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm1.png|right|350px|thumb|'''Figure 1.''' A screen capture ([[Xenea theme]]) showing the &amp;quot;map&amp;quot; tab of an individual and the type of information available following the installation of the Google Map module and the addition of relevant information.]]&lt;br /&gt;
&lt;br /&gt;
'' '''Note:''' This is quite separate from the map icons that can be displayed on individual pages. They are generated from specific LAT/LONG tags added to places in a GEDCOM file.''&lt;br /&gt;
&lt;br /&gt;
The module shows additional information for individuals – see [[:Image:Gm1.png|Figure 1]].  There is an additional tab shown on the page for every individual, a map derived from Google Maps, and a table of the events being mapped on this page.&lt;br /&gt;
&lt;br /&gt;
Each map marker may be clicked to show data attached to that particular place.  If more than one event took place at the marker location, the additional events are shown with tabs.&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
If you are using v4.0, you will need to download the software from the Files/Modules section at http://sourceforge.net/project/showfiles.php?group_id=55456   Be aware that the software is still under development, and that it may change from time to time.  Notes will be posted in the Discussion forum when there are significant changes.&lt;br /&gt;
&lt;br /&gt;
In v4.1 and later, the Googlemap module (in appropriate folders) is included in the full download. If you want to be aware of the most recent postings about this (or any other PhpGedView developments) visit the Subversion area at http://sourceforge.net/svn/?group_id=55456&lt;br /&gt;
&lt;br /&gt;
When you download v4.0, you will get these files:&lt;br /&gt;
 &lt;br /&gt;
[[Image:Gm2.jpg|center|450px|thumb|'''Figure 2.''' Some caption needed]]&lt;br /&gt;
&lt;br /&gt;
The ‘extra’ folder should not be uploaded.  The files in it are lists of places that you can import through the ‘Edit Place Locations’ feature.&lt;br /&gt;
&lt;br /&gt;
Copy the googlemap.php and googlemap_readme.txt to your PGV ‘modules’ folder on your web site using FTP or whatever method you prefer, in my case it was &amp;gt;&amp;gt;&amp;gt; /public_html/yourdomainname/phpgedview/modules/ &lt;br /&gt;
&lt;br /&gt;
Copy the rest of the Google map files and folders (such as languages, places, and etc …) to &amp;gt;&amp;gt;&amp;gt; /public_html/yourdomainname/phpgedview/modules/googlemap/ (if googlemap folder does not exist create it then copy the contents over)&lt;br /&gt;
&lt;br /&gt;
Set the attributes (chmod) of the ‘modules’ folder and its contents to ‘777’&lt;br /&gt;
&lt;br /&gt;
 Note: For early versions of PGV (4.1 and earlier) you MIGHT want to update the version of admin.php in the root directory .&amp;lt;br&amp;gt;Go to http://phpgedview.svn.sourceforge.net/viewvc/phpgedview/trunk/phpGedView/&amp;lt;br&amp;gt;and get a fresh copy, but ensuring it is no later than about March 2007..&amp;lt;br&amp;gt;Later versions include many other changes incompatible with early versions of PGV..&amp;lt;br&amp;gt;Upload this to replace the one already on your server..&amp;lt;br&amp;gt;The ONLY benefit of doing this is to gain one-click access to the Google Map Module config file from PGV's admin panel..&amp;lt;br&amp;gt;Without the change you can still access the file, but only from the Map tab of an individual who has valid map data. This change is NOT NECESSARY after PGV 4.1.&lt;br /&gt;
&lt;br /&gt;
 Special note for PGV3.3.8 users:  Go to the root directory of your PGV installation,&amp;lt;br&amp;gt;and rename ‘individual.php’ to ‘zindividual.php’ (or any different name).&amp;lt;br&amp;gt;Then copy ‘individual-3.3.8.php’ to ‘individual.php’ in its place&lt;br /&gt;
&lt;br /&gt;
===API (application programming interface) KEY===&lt;br /&gt;
&lt;br /&gt;
To enable a connection to Google Maps, you need to obtain a key from Google.  &lt;br /&gt;
&lt;br /&gt;
Go to http://www.google.com/apis/maps/signup.html. This is the Google map site, and you will need to become a Google member to go to the next step. So, sign on.  Google are not aggressive phishers, and they will probably never bother you.&lt;br /&gt;
&lt;br /&gt;
Once you have done that, you can log in. Google will ask you where your PhpGedView installation is, so type in www.xxxx.yyyy.zz/yourplace, altered to reflect your own URL.  Select a point in your installed tree that would allow one key to be used for multiple instances (should you have more than one).&lt;br /&gt;
&lt;br /&gt;
When you get your key, take a copy.  In Windows, highlight it, then Ctrl+C - don’t try to copy it by typing – you will get it wrong!  And, for security, open Notepad, paste in the key, and save the file for future reference.  Mac and Linux users should also save a copy.&lt;br /&gt;
&lt;br /&gt;
===Starting the process===&lt;br /&gt;
&lt;br /&gt;
You can now open PhpGedView.  Log in as Admin.  While you are doing this, the Googlemap module will be creating a new table (‘placelocation’) in the database on your server.  See the [[How to:Add Google maps#Technical Section|Technical Section]] below for details of its structure and contents.&lt;br /&gt;
&lt;br /&gt;
The Administration menu will open, and down the bottom you will see the Googlemap configuration entry.  Select ‘Manage Googlemap configuration’.  If the configuration option does not appear, double check to make sure you have the ‘config.php’ file that you created.&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm3.jpg|center|485px|thumb|'''Figure 3.''' Some caption needed]] &lt;br /&gt;
&lt;br /&gt;
This opens a new window:&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm4.jpg|center|690px|thumb|'''Figure 4.''' Some caption needed]] &lt;br /&gt;
 &lt;br /&gt;
Set Enable Googlemap to ‘Yes’ and paste in your API key.  If your data is largely one-country-centric (eg all your data relates to England) then type ‘England’ in Default level value box.  Save the configuration.  You can revisit this and improve the specification as you get more experience.&lt;br /&gt;
&lt;br /&gt;
At this point, log off from PhpGedView.  Then log on again, and check that the page for each individual has a Map tab, although it will be greyed out.  If not, go back to the beginning….but, as a first part of the recovery, copy the file defaultconfig.php to your server, and rename it to config.php (this will mean you have both config.php and defaultconfig.php in that folder).  And also check the Googlemap configuration to make sure your key has not been ‘lost’ somehow.&lt;br /&gt;
&lt;br /&gt;
Now go back to the top of the page and try again…&lt;br /&gt;
&lt;br /&gt;
You are now ready to include map data in your file.  Before you do, go back and reset the attributes (chmod) of the ‘modules’ folder to ‘644’.&lt;br /&gt;
&lt;br /&gt;
For a more detailed explanation of what all the items mean, see the [[How to:Add Google maps#Technical Section|Technical Section]] below.&lt;br /&gt;
&lt;br /&gt;
 Mac users with Safari might find that maps do not display, giving an error message that maps are&amp;lt;br&amp;gt;not available at this zoom level. The workaround is to reset your user preferences to &amp;quot;All&amp;quot;&amp;lt;br&amp;gt;instead of &amp;quot;Personal facts and details&amp;quot; This is in the GEDCOM configuration under&amp;lt;br&amp;gt;Display &amp;amp; Layout - Default tab to show on individual page.&lt;br /&gt;
&lt;br /&gt;
==Making the maps work…==&lt;br /&gt;
&lt;br /&gt;
This next stage can be somewhat involved, so some explanations are required.&lt;br /&gt;
&lt;br /&gt;
===Getting Location Data===&lt;br /&gt;
&lt;br /&gt;
Location data may be obtained in various ways.  &lt;br /&gt;
&lt;br /&gt;
Some well-known sources include:&lt;br /&gt;
* by-hand discovery and recording using Google Earth&lt;br /&gt;
* http://www.itouchmap.com/?r=v&amp;amp;st=l2, which is a method of obtaining co-ordinates from normal Google maps&lt;br /&gt;
* http://www.beeloop.com/maps/flickr_geotagr.php?language=english, another useful site&lt;br /&gt;
* For the UK, http://www.streetmap.co.uk/&lt;br /&gt;
* http://www.maxmind.com/app/country_latlon, countries&lt;br /&gt;
* The U.S. Board on Geographic Names at http://geonames.usgs.gov/domestic/index.html&lt;br /&gt;
* https://sourceforge.net/project/showfiles.php?group_id=55456&amp;amp;package_id=61563&amp;amp;release_id=435146&lt;br /&gt;
&lt;br /&gt;
You may need to inspect any data you acquire to verify that they fit one of the following conventions:&lt;br /&gt;
&lt;br /&gt;
===Co-ordinates===&lt;br /&gt;
&lt;br /&gt;
Traditionally, co-ordinates have been quotes in degrees, minutes (60 to the degree) and seconds (60 to the minute), and written as 33° 44’ 55”.  You can enter these in most computer programs without the symbols – 33 44 55, or you can decimalize them to 33.7486 (in case you are wondering how, multiply minutes by 60, add the seconds, then divide the sum by 3600.  Add the degrees).&lt;br /&gt;
&lt;br /&gt;
Plus and minus: North and East are positive figures, South and West are negative – for example -23.456  144.666 equates to 23.456S  144.666E&lt;br /&gt;
&lt;br /&gt;
Alpha: inclusion of N, S, E or W eg 23.456S 144.666E. The alphas can lead or trail.&lt;br /&gt;
&lt;br /&gt;
Remember that latitudes can be no more than plus or minus 90 degrees, and longitudes no more than plus or minus 180 degrees.&lt;br /&gt;
&lt;br /&gt;
There are various other ways of defining a place on the surface of the earth.  You don’t to know any more than the information provided here to be able to locate a place with Googlemap.&lt;br /&gt;
&lt;br /&gt;
===Places===&lt;br /&gt;
&lt;br /&gt;
In this instance, place names are quoted in descending order of importance (in the geographical sense) and comma-separated.  You only need to enter a specific place once in the edit place locations – the software will re-use it as often as required.  Read the [[How to:Add Google maps#Technical Section|Technical Section]] to see how the Googlemap module handles place data.&lt;br /&gt;
&lt;br /&gt;
===Drill Down Locations===&lt;br /&gt;
&lt;br /&gt;
For a full explanation of the placename hierarchy, see the Technical Section.  But here is an outline of how it works.&lt;br /&gt;
&lt;br /&gt;
To give a locale for an event, it might be sufficient to quote a location such as England.  The co-ordinates would then be sufficient to show a map like this:  &lt;br /&gt;
&lt;br /&gt;
[[Image:Gm5.jpg|center|225px|thumb|'''Figure 5.''' Some caption needed|left]]&lt;br /&gt;
&lt;br /&gt;
All you want to do is indicate the principal geographic descriptor that illustrates where an event took place.  For this level of detail, you would select ‘country’ (see Fig. 7 below) when searching for the location.  &lt;br /&gt;
&lt;br /&gt;
The matching co-ordinates would be relatively ‘crude’ as W0.1 N51.5 and the zoom level 4.  This will put the marker close to the middle of the UK land mass.&lt;br /&gt;
&lt;br /&gt;
To move in closer, you would choose either ‘city’ or ‘neighbourhood’, zoom level 6 to 8 (to suit your taste!) and the co-ordinates would be more refined : W0.0603 and N51.525 would take you to the East End of London.&lt;br /&gt;
&lt;br /&gt;
===What do you provide?===&lt;br /&gt;
&lt;br /&gt;
The information in your home application probably needs some housekeeping, as there will possibly be variations in your data.  The syntax is literal.  Make up a ‘places’ file (most home-use applications do this for you) and check-read it for variations of any place.  Correct duplications (or close-to-duplications) at this stage.  &lt;br /&gt;
&lt;br /&gt;
Remember that the ‘places’ are nested and ‘Bethnal Green’ will be in the ‘London’ ‘folder,’ and ‘London’ will be in the ‘England’ ‘folder.’  Also try to remember to be consistent.  If you use place names such as ‘London’, ‘London, England’ and ‘London, Eng.’, you will end up with three different ‘places (or folders) for that one location.&lt;br /&gt;
&lt;br /&gt;
===Data from applications (TMG, [http://www.legacyfamilytreestore.com/?Click=2387 Legacy], etc)===&lt;br /&gt;
&lt;br /&gt;
Newer versions of commercial genealogy applications try to include place location data, even though the GEDCOM standard does not specify how this is to be done.  As a result (and you should check whatever application you use) you may not be able to use GEDCOM-generated co-ordinates directly from your applications.&lt;br /&gt;
&lt;br /&gt;
A recent post (http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1527087&amp;amp;group_id=55456&amp;amp;atid=477081) showed a way to handle information from TMG.&lt;br /&gt;
&lt;br /&gt;
===Taking in External Data===&lt;br /&gt;
&lt;br /&gt;
* Hand-edit the ‘placelocation’ table: For the very experienced among you.  A table layout is shown in the [[How to:Add Google maps#Technical Section|Technical Section]] below&lt;br /&gt;
* Use the PhpGedView software to add a place – see below&lt;br /&gt;
* Make a comma-separated table by hand, or with an application like Excel, and import it (see the Technical Section for information about this)&lt;br /&gt;
* If your home application stores place/co-ordinate data, check that it exports to one of the accepted forms noted above&lt;br /&gt;
&lt;br /&gt;
===Adding places one by one to your GEDCOM file &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;(not recommended)&amp;lt;/font&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
This method is included so that you may have an idea of how a GEDCOM stores place data. You do not need the Googlemap module to use this procedure.&lt;br /&gt;
&lt;br /&gt;
Events can have places ‘attached’ to them, so you can add places to events by hand.  This is tedious, and not recommended as a general approach.  The process does not allow one place entry to be used by many individual events.&lt;br /&gt;
&lt;br /&gt;
The co-ordinates for an event can only be added directly to a GEDCOM file.  The correct way to do this is for a PLAC record:&lt;br /&gt;
::2 PLAC &amp;lt;Placename&amp;gt;&lt;br /&gt;
::3 MAP   (Make sure you use the ‘3 MAP’ record after a PLAC record.)&lt;br /&gt;
::4 LONG &amp;lt;Longitude&amp;gt;&lt;br /&gt;
::4 LATI &amp;lt;Latitude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MAP, LONG and LATI lines should be added directly after the PLAC line.&lt;br /&gt;
&lt;br /&gt;
In the ‘edit’ function pop-up window, there is a ‘+’ (plus sign) under ‘Place’ where you can select a country, state, county, and city that exists in your PhpGedview ‘place’ file. This can help avoid duplications by various spellings or versions of the same place.  The PhpGedView configuration allows for ‘expanded’ editing if that option is selected.&lt;br /&gt;
&lt;br /&gt;
This method places 4 icons in line with the event, wherever it is shown. These give you the option of using Mapquest, Google Maps, Multimap or Terraserver. You do not get a Map tab.&lt;br /&gt;
&lt;br /&gt;
===Add a place using PhpGedView Googlemap module&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; (recommended method)&amp;lt;/font&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
''Forenote: the Google Map module is designed to work with locations in tree-like fashion.  If we were to consider a suburb of London, the tree would take the order 'England, London, Hackney'. This is not how we enter place names in our family data, but it is how we manage the Google Map module.  This will give access to useful place lookup features as we build up map information. It will help you find groups of people from the same locale. And it conforms to the GEDCOM specification, a feature of PhpGedView.''&lt;br /&gt;
&lt;br /&gt;
''And, BEFORE you start with any mapping endeavours, review your data. Make sure spelling is consistent, there are no 'almost' duplicates, places are in their right country, and the places you describe are in true tree fashion.  Only then will the module make it easy for you to connect family data with Google Maps.''&lt;br /&gt;
&lt;br /&gt;
This feature uses new database tables to store place text and location information. Existing places can be imported and location information can be added using graphic tools (zoom/click on map) or specific location data. &lt;br /&gt;
&lt;br /&gt;
The location information is held outside the GEDCOM (and can be shared between GEDCOMs in PGV) and location data is entered only once for each place. Backup of location data is available by export of each new place database table to a text file (separated with &amp;quot;;&amp;quot;). Bulk additions can be performed by text file import (with reservations for specific place structure and spelling). &lt;br /&gt;
&lt;br /&gt;
Using the tree structure mentioned above, we start to build location data from the top down – which, in 99% of cases, will mean starting by entering a country.  When that is done, we move to the next layer (state, county, whatever is appropriate for your locale.)&lt;br /&gt;
 &lt;br /&gt;
Using your owner's rights, go to the Administrator menu and (down the bottom) click on &amp;quot;Edit geographic place locations&amp;quot;.  The top left of screen will now look like this:&lt;br /&gt;
[[Image:Gm6a.jpg|center|452px|thumb|'''Figure 6a.''' Some caption needed]]&lt;br /&gt;
&lt;br /&gt;
The words &amp;quot;Top Level&amp;quot; tell you that this is the highest level in your tree.  As you add levels, this line will expand and serve as a navigation means. &lt;br /&gt;
&lt;br /&gt;
Click on 'Add place', and we will enter our top level, using England as the country.&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm6b.jpg|center|452px|thumb|'''Figure 6b.''' Some caption needed]]&lt;br /&gt;
 &lt;br /&gt;
This opens the mapping dialog, and we type 'England' in the type box, click 'Country' to give it a level, then click Search.  &lt;br /&gt;
 &lt;br /&gt;
If you are connected to the internet, the mapping script will search a site named Geonames, where information on 2.2 million places is stored. If found, details will be filled in on the form for you. You can always visit the site yourself (http://www.geonames.org/)  If in doubt about which place you really mean, you will be shown options.  Select the appropriate one, and click on 'Use this value'&lt;br /&gt;
The dialog becomes (note that the zoom level has been altered to give a better visual result):&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm6c.jpg|center|452px|thumb|'''Figure 6c.''' Some caption needed]] &lt;br /&gt;
 &lt;br /&gt;
You can save this.&lt;br /&gt;
Now you will have an entry.&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm6d.jpg|center|600px|thumb|'''Figure 6d.''' Some caption needed]]&lt;br /&gt;
  &lt;br /&gt;
Note that the location, England, is clickable.  And note the red X, which indicates that this location can be deleted without any problems.&lt;br /&gt;
&lt;br /&gt;
Having clicked on England you go around the loop again…now you are working within England (see the line that indicates the level you are on?), which has no places to show.[[Image:Gm6e.jpg|center|400px|thumb|Figure 6e]]  &lt;br /&gt;
&lt;br /&gt;
Now you want to enter London….so click on 'Add place' and go back to the top of this section.&lt;br /&gt;
&lt;br /&gt;
The red X has been mentioned.  As you add levels to the hierarchy, only the lowest level items will show the X.  Places higher up the tree will not, because there are lower entries that depend on them.  If you want to delete something using the X, you will have to begin down the tree and work up – delete suburb, then city, then state, then country would be the order of work.&lt;br /&gt;
&lt;br /&gt;
'''Confused about the order of things, and how to show items in your data?'''&lt;br /&gt;
&lt;br /&gt;
The top-down tree structure used here is not the way we actually enter data.  We work from highest detail to the lowest – street address to suburb to city to….country.  That could also be described as lowest to highest, in the social order of things.  So the various concepts of data construction might not be clear, and could take a bit of getting used to.  Don't change what you do with your family data, but the mapping model works in reverse to it.&lt;br /&gt;
&lt;br /&gt;
Don't leave out levels.  Different countries have different management structures using different terms, and these may not accord with the terms used in the Google Map module.  So ignore them if they don't &amp;quot;fit&amp;quot; your needs – just start at the country level (no problem there) and work down one level at a time.  This also applies if you build a file outside PhpGedView for eventual import. &lt;br /&gt;
&lt;br /&gt;
'''Ignoring the tree structure'''&lt;br /&gt;
&lt;br /&gt;
This may be contradictory, but you can ignore the tree structure if you wish.&lt;br /&gt;
&lt;br /&gt;
You could enter your family data as Hackney London England – which your home application and PhpGedView will see as one place name, made of 3 words.  That's not a problem – in the mapping module, just use the identical string, and one will find the other.  But now you will need to figure out the co-ordinates for yourself.  No data will be 'nested'.&lt;br /&gt;
&lt;br /&gt;
And you will be restricted in how you can use geography to help work with your family data.  For example, you couldn't figure out who lived in any suburb of London, or who lived in England.  &lt;br /&gt;
And, of course, there might be the confusion factor.  If the string is just one long line, does everyone know what it means?  Eg 66 St Martins St St Martins Someplace Somewhere is not very readable.&lt;br /&gt;
&lt;br /&gt;
If everyone lives/lived in one country, why would you enter the name of the country?  Is it a gimme?  If you ignore the tree, you might make it easier for yourself.  That's an individual decision for everyone to make.&lt;br /&gt;
&lt;br /&gt;
===Import from current (or all) GEDCOM(s)===&lt;br /&gt;
&lt;br /&gt;
These two options will populate the ‘placelocation’ table with all the places you already have in your GEDCOM file.  BUT – it will not have LAT / LONG coordinates for them  You still need to edit each place to add that information.  See ‘You can edit and delete stuff…’ below.&lt;br /&gt;
&lt;br /&gt;
===Import from file===&lt;br /&gt;
&lt;br /&gt;
This option allows you to import place data, including all necessary fields for the ‘placelocation’ table, from pre-prepared text files.  You can either create your own, or use the ones provided in the ‘modules/googlemap/extra’ folder.  If you have a lot of places from the countries available as text files it is the fastest and easiest way to populate the maps. &lt;br /&gt;
&lt;br /&gt;
However – you will need to check that your PLAC tags, in your GEDCOM file EXACTLY match the places included in these files, in respect of spelling and hierarchy – meaning, do you have every town in the right county and / or state?&lt;br /&gt;
&lt;br /&gt;
==You can edit and delete stuff…..==&lt;br /&gt;
&lt;br /&gt;
This is self-explanatory.  Click on ‘Edit’ and you will get a window like Figure 8.  Fix what needs to be fixed, then Save.&lt;br /&gt;
&lt;br /&gt;
The red X is for delete.  If the X is grey (or there is no X), it indicates that this entry has subordinate entries.  If you plan to clear the topmost entry, you need to clear the lower entries first.  Read the Technical Section below if you want to know more on this.&lt;br /&gt;
&lt;br /&gt;
[[Image:Gm8.jpg|center|532px|thumb|'''Figure 8.''' Some caption needed]]&lt;br /&gt;
&lt;br /&gt;
==Technical Section==&lt;br /&gt;
&lt;br /&gt;
Place data for the GoogleMaps module is stored in its own table, separate from the normal PGV places table. It has this structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;b&amp;gt;Table 1: placelocation&amp;lt;/b&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; table border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field!!Def!!Desc&lt;br /&gt;
|-&lt;br /&gt;
|pl_id||int(11)||Incremented index&lt;br /&gt;
|-&lt;br /&gt;
|pl_parent_id||int(11)||Ref to higher level ‘parent’&lt;br /&gt;
|-&lt;br /&gt;
|pl_level||int(11)||Place in descriptor ‘tree’&lt;br /&gt;
|-&lt;br /&gt;
|pl_place||varchar(255)||The place&lt;br /&gt;
|-&lt;br /&gt;
|pl_long||varchar(30)||Longitude&lt;br /&gt;
|-&lt;br /&gt;
|pl_lati||varchar(30)||Latitude&lt;br /&gt;
|-&lt;br /&gt;
|pl_zoom||int(4)||Googlemap zoom &lt;br /&gt;
|-&lt;br /&gt;
|pl_icon||varchar(255)||Omit for standard icon&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data is stored in a separate table so that it can be used by multiple GEDCOMs. Also when you clear a GEDCOM the location data is kept and will be used when you import your GEDCOM again.&lt;br /&gt;
&lt;br /&gt;
===Places===&lt;br /&gt;
&lt;br /&gt;
In practice, all ‘places’ are defined as descriptors, an ordered way of telling how to find a location that has a name. A descriptor takes the form ‘MyCountry; MyState; MyCounty; My City; MyPlace’  These are identified by their equivalent ‘level’:&lt;br /&gt;
&lt;br /&gt;
::Country = level 0&amp;lt;br&amp;gt;&lt;br /&gt;
::State = level 1&amp;lt;br&amp;gt;&lt;br /&gt;
::County = level 2&amp;lt;br&amp;gt;&lt;br /&gt;
::City = level 3&amp;lt;br&amp;gt;&lt;br /&gt;
::Place = level 4&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When searching for a place name in the table, the application ‘drills down’ as detailed in the descriptor, taking items in sequence until they reach the desired ‘level’ for the intended use. Note that items are separated with &amp;quot;''';'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When you set up a definition for a place, you specify it in the same way.  To point to the place you really want to reference, you add ‘level’ to the mix.  So now your descriptor looks like:&amp;lt;br&amp;gt; ‘Level; MyCountry; MyState; MyCounty; MyCity; MyPlace’.&lt;br /&gt;
&lt;br /&gt;
The level points to the item from the descriptor that you want to use.  In this example, MyCountry would be level 0, MyPlace would be level 4.&lt;br /&gt;
&lt;br /&gt;
The longitude, latitude, zoom and icon variables are simply added on the end.&lt;br /&gt;
&lt;br /&gt;
The final location descriptor would have this appearance:&amp;lt;br&amp;gt;&lt;br /&gt;
‘Level; MyCountry; MyState; MyCounty; MyCity; MyPlace; MyLongitude; MyLatitude; MyZoom; MyIcon’&lt;br /&gt;
&lt;br /&gt;
You can omit any part of the location descriptor, but not the ‘,’ that separates the items. You have to work backwards from the end of the place sequence, so you could have (leaving out MyPlace):&amp;lt;br&amp;gt;&lt;br /&gt;
‘Level; MyCountry; MyState; MyCounty; MyCity;; MyLongitude; My Latitude; My Zoom; My Icon’&lt;br /&gt;
&lt;br /&gt;
The corollary to this is that you need to consider the sequence of places when you import data for any source.  You need to build from the start of the place sequence, so you would have, in order:&amp;lt;br&amp;gt;&lt;br /&gt;
‘Level; MyCountry&amp;lt;b&amp;gt;;;;;&amp;lt;/b&amp;gt; MyLongitude; MyLatitude; MyZoom; MyIcon’&amp;lt;br&amp;gt;&lt;br /&gt;
‘Level; MyCountry; MyState&amp;lt;b&amp;gt;;;;&amp;lt;/b&amp;gt; MyLongitude; MyLatitude; MyZoom; MyIcon’&amp;lt;br&amp;gt;&lt;br /&gt;
‘Level; MyCountry; MyState; MyCounty&amp;lt;b&amp;gt;;;&amp;lt;/b&amp;gt; MyLongitude; MyLatitude; MyZoom; MyIcon’&amp;lt;br&amp;gt;&lt;br /&gt;
…and so on&lt;br /&gt;
&lt;br /&gt;
The ‘placelocation’ table stores place records in 8 fields, designed to store each place name only once, with a cross-reference to its parent (next higher level) stored in the pl_parent_id field. The pl_id which this cross reference relates to is an automatically generated sequential index number.&lt;br /&gt;
&lt;br /&gt;
A typical structure, stored in this table, might therefore be:&lt;br /&gt;
[Note – some columns have been ignored for display purposes only]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; table border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!pl_id!!pl_parent_id!!pl_level!!pl_place!!pl_long!!	pl_lati&lt;br /&gt;
|-&lt;br /&gt;
!1!!	0||	0||	USA||	W100.00||	N39.00&lt;br /&gt;
|-&lt;br /&gt;
!6!!	1||	1||	California||	W119.300||	N36.000&lt;br /&gt;
|-&lt;br /&gt;
!7!!	6||	2||	Los Angeles||	W118.230||	N34.05&lt;br /&gt;
|-&lt;br /&gt;
!8!!	7||	3||	Beverley Hills||	W118.400||	N34.07&lt;br /&gt;
|-&lt;br /&gt;
!25!!	8||	4||	135 Copley Place||	W118.4224||	N34.0767&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that there are 9 fields in the descriptor.  This is fixed, and if you plan to build a file to import, make sure that you have 9 fields in every line, and that you use &amp;quot;;&amp;quot; to separate data items.&lt;br /&gt;
&lt;br /&gt;
==Googlemap configuration – what the items mean==&lt;br /&gt;
&lt;br /&gt;
Refer to Figure 4&lt;br /&gt;
&lt;br /&gt;
The first entry simply turns the Googlemap feature on or off.&lt;br /&gt;
&lt;br /&gt;
The second entry is the Googlemap API key.&lt;br /&gt;
&lt;br /&gt;
The third entry is the type of display – plain map, Satellite, or a combination (hybrid) of these two.&lt;br /&gt;
&lt;br /&gt;
The fourth item sets the size of the map when it is displayed on screen.  The default (600 by 400 pixels) can be adjusted to suit your needs.&lt;br /&gt;
&lt;br /&gt;
The fifth item is the zoom level. Level 0 is country (low detail), the maximum is high detail.  Note that at high level, some satellite data is not available.&lt;br /&gt;
&lt;br /&gt;
Precision: this sets the number of decimal places to be used.  A country probably needs one decimal point, a town or city 3.  The third decimal place moves the pointer in increments of about 110m accuracy.  The 6th decimal place is about 0.1m (4 inch) accuracy.&lt;br /&gt;
&lt;br /&gt;
[[Category:How To]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Language links...DO NOT DELETE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fr: Comment ajouter une carte Googlemap]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Download_v4.1.x&amp;diff=11945</id>
		<title>Download v4.1.x</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Download_v4.1.x&amp;diff=11945"/>
		<updated>2009-12-17T22:42:16Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Download Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The latest release in the v4.1.x series is v[[{{latest version|series=4.1.x}}]]. The release was on {{latest version|series=4.1.x|release date=1}}.[[image:gedview.gif|right]]&lt;br /&gt;
&lt;br /&gt;
==Download Packages==&lt;br /&gt;
For convenience PhpGedView 4.1 has been divided into several packages which allows you to choose what you want to download.&lt;br /&gt;
&lt;br /&gt;
[[Modules]] are plug-ins to PhpGedView which provide additional features or functionality not found in the core files.  Some modules may require additional software.  See the installation instructions for each module for their requirements.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PhpGedView-basic-{{latest version|series=4.1.x}}.zip PhpGedView (BASIC) {{latest version|series=4.1.x}}]&lt;br /&gt;
: This package contains the core files to run PhpGedView.  It includes the most commonly requested themes and language files.  It does not include place maps or any modules.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PhpGedView-all-{{latest version|series=4.1.x}}.zip PhpGedView (ALL) {{latest version|series=4.1.x}}]&lt;br /&gt;
: This package contains the complete set files to run PhpGedView, including all themes and language files,  place maps and modules. After instalation you can disable the modules you don't need. &lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Demo-{{latest version|series=4.1.x}}.zip Windows Demo ]&lt;br /&gt;
: This package is a self contained demo version of PhpGedView which can be run out of the box on Windows based systems.  This package is great if you want to take PGV for a test drive or if you want to burn your own data for distribution on a CD.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Themes-{{latest version|series=4.1.x}}.zip Themes ]&lt;br /&gt;
: This package includes other themes maintained with PhpGedView.  Other user submitted themes can be found at http://www.pgvthemes.com/&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Places-{{latest version|series=4.1.x}}.zip Places ]&lt;br /&gt;
: This package includes place maps for many different countries.  Place maps can be enabled in the place hierarchy and on the editing pages.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Languages-{{latest version|series=4.1.x}}.zip Languages ]&lt;br /&gt;
: This package includes the other languages that have been submitted to PGV including Arabic, Czech, Danish, Greek, Spanish, Finnish, Hungarian, Italian, Lithuanian, Polish, Portuguese, Russian, Turkish, Vietnamese, and Chinese.&lt;br /&gt;
&lt;br /&gt;
==Download Modules==&lt;br /&gt;
To install a module just upload it to the &amp;quot;modules&amp;quot; directory in your PhpGedView folder.  All of these modules are included in the &amp;quot;PhpGedView (ALL) {{latest version|series=4.1.x}}&amp;quot; package above.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-googlemap-{{latest version|series=4.1.x}}.zip GoogleMap Module ] : This module enables GoogleMap support in the program.  It will put a person's events on a map from Google.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-research_assistant-{{latest version|series=4.1.x}}.zip Research Assistant Module ] : This module enables the a research assistant tool in PGV.  This tool is designed to help you with your genealogical research.  It provides a way to manage and track research tasks as well as the ability to quickly enter data from sources such as census forms.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-Module-lightbox-{{latest version|series=4.1.x}}.zip Lightbox Module ] : This module enables an alternate way to experience media in PhpGedView.  It provides an &amp;quot;Album&amp;quot; tab on the individual page, media slideshows, and other media enhancements.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-gallery2-{{latest version|series=4.1.x}}.zip Gallery Module ] : This module enables support and integration with the Gallery project.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-punbb-{{latest version|series=4.1.x}}.zip PunBB Module ] : This module enables support and integration with the PunBB forum project.  It will allow you to include message forums in your PGV site.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-phpsysinfo-{{latest version|series=4.1.x}}.zip PhpSysInfo Module ] : This module enables support and integration with the PhpSysInfo project.&lt;br /&gt;
&lt;br /&gt;
;[https://sourceforge.net/project/downloading.php?group_id=55456&amp;amp;filename=PGV-Module-sitemap-{{latest version|series=4.1.x}}.zip Sitemap Module ] : This module enables a site map useful for crawlers and search engines.&lt;br /&gt;
&lt;br /&gt;
==Source Repositories==&lt;br /&gt;
You can also obtain the files from one of the following source repositories&lt;br /&gt;
&lt;br /&gt;
===Subversion v4.1+===&lt;br /&gt;
You can also get the latest bug fixes from the main trunk of the subversion repository. Code in the [[SVN]] repository can be considered Release Candidate quality.&lt;br /&gt;
&lt;br /&gt;
If you would like to try out the latest features or help to beta test new versions, then you can get the latest development code from the 4.2 branch of the Subversion repository. Code in any branches of the repository should be considered alpha/beta quality and is not recommended for production environments.&lt;br /&gt;
&lt;br /&gt;
The following SVN command will get you the latest code:&lt;br /&gt;
&lt;br /&gt;
 export LC_ALL=en_US &lt;br /&gt;
 svn co https://phpgedview.svn.sourceforge.net/svnroot/phpgedview/trunk/phpGedView phpgedview&lt;br /&gt;
&lt;br /&gt;
You can find out more information and browse the SVN repostory online at this location https://sourceforge.net/svn/?group_id=55456&lt;br /&gt;
&lt;br /&gt;
===CVS v4.0===&lt;br /&gt;
Files in the CVS are currently deprecated and is only kept for urgent maintenance releases of older versions.&lt;br /&gt;
&lt;br /&gt;
CVSROOT=:pserver:anonymous@phpgedview.cvs.sourceforge.net:/cvsroot/phpgedview&lt;br /&gt;
&lt;br /&gt;
Use the following module name when accessing CVS:&lt;br /&gt;
&lt;br /&gt;
* phpGedView&lt;br /&gt;
&lt;br /&gt;
The following CVS command will get you the latest 4.0.x code branch:&lt;br /&gt;
&lt;br /&gt;
 cvs -d:pserver:anonymous@phpgedview.cvs.sourceforge.net:/cvsroot/phpgedview co -r future -P phpGedView&lt;br /&gt;
&lt;br /&gt;
You can find out more information and browse the CVS repostory online at this location https://sourceforge.net/cvs/?group_id=55456&lt;br /&gt;
&lt;br /&gt;
[[Category:PhpGedView]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=FAQ:Sites_powered_by_PhpGedView&amp;diff=11692</id>
		<title>FAQ:Sites powered by PhpGedView</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=FAQ:Sites_powered_by_PhpGedView&amp;diff=11692"/>
		<updated>2009-10-01T10:49:02Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Where can I find a list of web sites using PhpGedView? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Where can I find a list of web sites using PhpGedView?==&lt;br /&gt;
There is no official list.  A search-engine query using the term &amp;quot;phpgedview&amp;quot; can be very effective.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ|Sites powered by PhpGedView]]&lt;br /&gt;
[[Category:PhpGedView]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=PhpGedView_Site_Registry&amp;diff=11691</id>
		<title>PhpGedView Site Registry</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=PhpGedView_Site_Registry&amp;diff=11691"/>
		<updated>2009-10-01T10:47:42Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Until September 2009, there was a '''PhpGedView Site Registry''' - a list of websites using [[PhpGedView]].&lt;br /&gt;
&lt;br /&gt;
Due to problems with spammers and lack of updates this facility has been withdrawn.&lt;br /&gt;
&lt;br /&gt;
[[Category:PhpGedView]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=4.2.2&amp;diff=11657</id>
		<title>4.2.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=4.2.2&amp;diff=11657"/>
		<updated>2009-08-01T08:58:39Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Redirecting to PhpGedView v4.2.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PhpGedView v4.2.2]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=PhpGedView_v4.2.2&amp;diff=11656</id>
		<title>PhpGedView v4.2.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=PhpGedView_v4.2.2&amp;diff=11656"/>
		<updated>2009-08-01T08:57:29Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PhpGedView v4.2.2''' was released on [[1 August]], [[2009]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that PhpGedView 4.2 now requires [[w:PHP|PHP]] 5.2.0 or later in order to run.  Please ensure your server has a suitable version of PHP before upgrading.  If you don't know your version, you can find it out from the phpinfo link on PGV's admin page.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
{{main|Features v4.2.x}}&lt;br /&gt;
&lt;br /&gt;
== Internal Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Download v4.2.x|Download Page]]&lt;br /&gt;
* [[Installation Guide v4.2.x|Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Category related stuff --&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:4.2.2}}&lt;br /&gt;
[[Category:PhpGedView]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=1_August&amp;diff=11651</id>
		<title>1 August</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=1_August&amp;diff=11651"/>
		<updated>2009-08-01T08:54:13Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: New page: ==Events==  * 2009 - PhpGedView v4.2.2 was released.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Events==&lt;br /&gt;
&lt;br /&gt;
* [[2009]] - [[PhpGedView v4.2.2]] was released.&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=FAQ:Error_Messages&amp;diff=11555</id>
		<title>FAQ:Error Messages</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=FAQ:Error_Messages&amp;diff=11555"/>
		<updated>2009-04-21T13:01:36Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Why do I get a blank page? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;='''Common Error Messages'''=&lt;br /&gt;
==Why do I get a blank page?==&lt;br /&gt;
&lt;br /&gt;
If you have copied the PhpGedView files to your website and all you get is a blank page when trying to access PhpGedView in your browser, then this probably means that PHP is not installed on your website.&lt;br /&gt;
&lt;br /&gt;
PhpGedView is written using the PHP programming language and in order for it to run, your website must support PHP. See the PHP section of this page for information about how to find out if you can use PHP files on your website.&lt;br /&gt;
&lt;br /&gt;
==Fatal error: Allowed memory size of 33554432 bytes exhausted==&lt;br /&gt;
&lt;br /&gt;
Your PHP process has run out of memory.  33554432 bytes is 32MB, which is the default value on new installations of PhpGedView.  You can increase this value in your site configuration settings, which you can access from the site administration page.  If you are unable to access this page, you can edit the config.php file directly.  Typical values are;&lt;br /&gt;
&lt;br /&gt;
* 32MB - small gedcoms&lt;br /&gt;
* 64MB - medium gedcoms&lt;br /&gt;
* 128MB - large gedcoms&lt;br /&gt;
* 256MB - very large gedcoms&lt;br /&gt;
&lt;br /&gt;
Note that many servers restrict the amount of memory available to PHP.  Either they impose a maximum value that applications can request, or they prevent you from changing the default value.  If this happens, you will need to contact your host to ask for an increase.&lt;br /&gt;
&lt;br /&gt;
==Warning: Cannot modify header information - headers already sent==&lt;br /&gt;
&lt;br /&gt;
This error is usually the result of other errors on the page beginning before output is printed to the page. Look for other errors that appear first on the page and try to fix them first.  If you get the other errors fixed, this error will disappear.&lt;br /&gt;
&lt;br /&gt;
The most common types of errors that will cause this warning are BOM characters in the language files, file permissions errors, or session configuration errors.  The BOM (Byte Order Mark) in the language files can be checked from the Edit Languages page. Refer to the other sections of this FAQ for details on dealing with the different types of errors.&lt;br /&gt;
&lt;br /&gt;
==Warning: session_start() [function.session-start]: open(/tmp\sess_2056cb1c9e9ebe4bee597b943e7bda56, O_RDWR) failed==&lt;br /&gt;
&lt;br /&gt;
This means that PHP could not write the new session data to a file for storage between requests.  There could be many things that are causing this, but they are all unrelated to PhpGedView.&lt;br /&gt;
&lt;br /&gt;
The first thing to check is that the /tmp directory or the C:\PHP\sessiondata directory have write permissions for PHP.  The next thing to check is that the session.save_path parameter of the php.ini file (/etc/php.ini or C:\WINDOWS\php.ini) is pointing to the correct location.&lt;br /&gt;
&lt;br /&gt;
These settings likely have to be changed by the server administrator, if that is not you then it could take a while for them to answer your request.  PhpGedView has a configuration parameter that will allow you to change the session.save_path paramter just for PhpGedView scripts.  To set this, go to editconfig.php and set the Session Save Path to &amp;quot;./index&amp;quot; or any other directory where you have given PHP write permissions.&lt;br /&gt;
&lt;br /&gt;
==Notice: Undefined variable _SERVER==&lt;br /&gt;
&lt;br /&gt;
This means that you are running PhpGedView on an unsupported version of PHP.  PhpGedView requires PHP version 4.3.0 or later.  To fix this, you should first contact your web host and ask them to upgrade to a newer version of PHP.&lt;br /&gt;
&lt;br /&gt;
If for some reason, your host won't upgrade their installation of PHP, you will have to replace all instances of $_SERVER with $HTTP_SERVER_VARS in the PhpGedView code in order to fix this error.&lt;br /&gt;
&lt;br /&gt;
==SQL Injection warning when adding or editing notes?==&lt;br /&gt;
&lt;br /&gt;
SQL injection is a common technique used by hackers which gives them control of the database. PhpGedView protects you from this attack, but sometimes this message can occur if PhpGedView misinterprets some of the text coming in as an SQL command.&lt;br /&gt;
&lt;br /&gt;
To solve the problem, try to look for words like INSERT, DELETE, UPDATE, DROP, and TABLE and choose alternate words or rearrange thier order. The Error message should give you some clues as to what text triggered the warning.&lt;br /&gt;
&lt;br /&gt;
==Warning: mail() [function.mail]: SMTP server response: 501==&lt;br /&gt;
&lt;br /&gt;
This warning probably means that your email SMTP server does not support email addresses in the form Full Name &amp;lt;email@address&amp;gt;. This error is most common on Windows based SMTP servers.&lt;br /&gt;
&lt;br /&gt;
If possible, you should consult the documentation for your SMTP server to see if you can change these settings. You may also configure PhpGedView to only use the email address instead of including the full name by following these steps:&lt;br /&gt;
&lt;br /&gt;
*Login and a site administrator&lt;br /&gt;
*Go to the Admin page&lt;br /&gt;
*Click on Configuration&lt;br /&gt;
*Set the Use simple mailheaders in external mails to &amp;quot;yes&amp;quot;&lt;br /&gt;
*Click the &amp;quot;Save Configuration&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
== ERROR 8: unserialize()==&lt;br /&gt;
You are getting something similar to this (in PHPGEDVIEW 4.0 Beta 6):&lt;br /&gt;
 ERROR 8: unserialize(): Error at offset 97 of 2658 bytes&lt;br /&gt;
 0 Error occurred on in function unserialize&lt;br /&gt;
 1 called from line 2586 of file functions_db.php in function get_event_list&lt;br /&gt;
 2 called from line 49 of file todays_events.php in function print_todays_events&lt;br /&gt;
 3 called from line 1 of file index.php(277) : eval()'d code in function eval&lt;br /&gt;
 4 called from line 277 of file index.php&lt;br /&gt;
&lt;br /&gt;
I think that this occurs when you simply copy the installation of PHPGedView from one server / domain to another. (Of course you copy the contents of the database as well) You might simply prevent this error when you do the following:&lt;br /&gt;
* Backup your old settings in &amp;quot;MyGedView Portal&amp;quot; under &amp;quot;Site administration&amp;quot; choose &amp;quot;Backup&amp;quot;.&lt;br /&gt;
* Reinstall PHPGedView on the new server&lt;br /&gt;
* Before you run it: upload the contents of the backup file to the new servers directories. - Make sure you have correct settings in config.php.&lt;br /&gt;
&lt;br /&gt;
This way switching the server worked just fine for me.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my case this error appeared during normal operation. After investigation we found that this is probably a problem with PHP. An entry in the user table which should have been 9 Bytes was only 7 Bytes. It was manually corrected and the warnings disappeared.&lt;br /&gt;
&lt;br /&gt;
==Lost password to PhpGedView==&lt;br /&gt;
&lt;br /&gt;
If you loose your admin passsword and can not log in. You would receive the &amp;quot;Unable to authenticate user&amp;quot; error message.&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
Open a text editor and write:&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;?php echo (crypt(''''mypassword'''')); ?&amp;gt;&lt;br /&gt;
Exchange the mypassword to your own password.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For Windows users&amp;lt;br/&amp;gt;&lt;br /&gt;
Save the file as: C:\pgvpass.php, or what ever name you choose. Open your Command prompt and type:&amp;lt;br/&amp;gt;&lt;br /&gt;
 C:\php\php -f C:\pgvpass.php&lt;br /&gt;
The C:\php\ would be the PHP installation folder.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For UNIX/Linux users:&amp;lt;br/&amp;gt;&lt;br /&gt;
Save the file as /home/user/pgvpass.php, or what ever name you choose. Open your terminal and type:&amp;lt;br/&amp;gt;&lt;br /&gt;
 php -f /home/user/pgvpass.php&lt;br /&gt;
&lt;br /&gt;
The -f is the option to the php program to run a file, like pgvpass.php. Copy and past the returned crypted password into your database and log in to PhpGedView.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using MySQL you can use the Command prompt or terminal to do this. Type:&lt;br /&gt;
 mysql -u root -p '''your_phpgedview_databasename'''&lt;br /&gt;
Make sure that you are in the right database! Ones you are logged in to MySQL, type:&lt;br /&gt;
 UPDATE `pgv_users` SET `u_password` = ''''YOUR_CRYPTED_PASSWORD'''' WHERE CONVERT( `u_username` USING utf8 ) = ''''YOUR_USERNAME'''' LIMIT 1 ;&lt;br /&gt;
&lt;br /&gt;
==403 Error - Access Denied==&lt;br /&gt;
&lt;br /&gt;
If you get this error, check the URL line.  If the last parameter on the line is &amp;quot;command=xxx&amp;quot; where xxx is the command to be executed (e.g. ged, user, etc), you may be running into an Apache security module setting.&lt;br /&gt;
&lt;br /&gt;
Check to see if you are running on Apache.  If so, the ISP may have mod_security running.  Mod_security does not like the &amp;quot;command=xxx&amp;quot; parameter to be anywhere on the URL line except as the very first parameter on the URL list.&lt;br /&gt;
&lt;br /&gt;
If you are running into this, the fix is pretty straight forward.&lt;br /&gt;
&lt;br /&gt;
Build a .htaccess file in your application directory with the following entries: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_security.c&amp;gt; &lt;br /&gt;
  SecFilterEngine Off &lt;br /&gt;
&amp;lt;/IfModule&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Category links...DO NOT DELETE --&amp;gt;&lt;br /&gt;
[[Category:phpGedView]]&lt;br /&gt;
[[Category:FAQ|Error Messages]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Language links...DO NOT DELETE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fr:FAQ: Messages d'erreur les plus fréquents]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=FAQ:Miscellaneous&amp;diff=11553</id>
		<title>FAQ:Miscellaneous</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=FAQ:Miscellaneous&amp;diff=11553"/>
		<updated>2009-04-18T19:42:23Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* How do I upgrade to the current version of PhpGedView from version X.XX? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;='''Miscellaneous Questions'''=&lt;br /&gt;
==How do I set which Gedcom file to use on the URL?==&lt;br /&gt;
&lt;br /&gt;
Normally you would change the currently active Gedcom using the Welcome Page menu. However, you may often want to link into a specific Gedcom from another page. This can be done by setting the &amp;quot;ged&amp;quot; parameter on the URL. For example, if you have two gedcoms on your site: gedcom1.ged and gedcom2.ged you could link to the pedigree chart for these gedcoms using the following urls:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://www.mysite.com/phpGedView/pedigree.php?ged=gedcom1.ged&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://www.mysite.com/phpGedView/pedigree.php?ged=gedcom2.ged&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How do I set the default theme?==&lt;br /&gt;
&lt;br /&gt;
*Login as an administrator and go to the Admin-&amp;gt;Manage Gedcoms and Edit Privacy page.&lt;br /&gt;
*Click on the link to edit the gedcom configuration&lt;br /&gt;
*Find the setting for &amp;quot;Theme directory&amp;quot; (should be the second to last setting in the basic configuration settings)&lt;br /&gt;
*Choose a theme from the list or type the theme directory into the field and save the configuration.&lt;br /&gt;
&lt;br /&gt;
Note: if you have enabled the option for users to set their own theme in the site configuration, then when users login they will be able to change the theme in their user account settings.&lt;br /&gt;
&lt;br /&gt;
==What should I do if verification email links are not correct?==&lt;br /&gt;
&lt;br /&gt;
If you get registration or verification emails from PGV with incorrect links in them such as http://www.mygenealogy.com/index.php instead of http://www.mygenealogy.com/phpGedView/index.php it usually means that you need to change the phpGedView configuration for the Site URL.&lt;br /&gt;
&lt;br /&gt;
To fix this, login as an administrator and go to the Admin-&amp;gt;Configuration page. Then change the site url to the location of your phpGedView installation. You usually only need to change this value from its default setting if you want to use your server under HTTPS instead of HTTP.&lt;br /&gt;
&lt;br /&gt;
Many people confuse this setting with the Gedcom configuration for the home page URL because they want to include a link to their main genealogy page. This setting can be found at the Admin-&amp;gt;Manage Gedcoms-&amp;gt;Edit Configuration page.&lt;br /&gt;
&lt;br /&gt;
==How can I change Gedcoms using a URL?==&lt;br /&gt;
&lt;br /&gt;
You can change the currently active Gedcom on any page in PGV by specifying the &amp;quot;ged&amp;quot; parameter on the URL.&lt;br /&gt;
&lt;br /&gt;
Here are some example URLS showing how to do this:&lt;br /&gt;
&lt;br /&gt;
* phpGedView/index.php?command=gedcom&amp;amp;ged=gedcom1.ged&lt;br /&gt;
* phpGedView/pedigree.php?ged=gedcom2.ged&lt;br /&gt;
* phpGedView/indilist.php?ged=gedcom3.ged&lt;br /&gt;
* phpGedView/individual.php?pid=I1&amp;amp;ged=gedcom4.ged&lt;br /&gt;
&lt;br /&gt;
==Why are siblings not sorted by age by default?==&lt;br /&gt;
&lt;br /&gt;
The reason for not automatically sorting by birth date is for those families where you know the correct ordering of the children, but do not have all of the birthdates. If we added automatic date sorting by default someone would surely post a bug saying the children are out of order ;). The convention used by all genealogy programs is to display siblings in the order that they are listed in the GEDCOM, though most have an option to resort the sibling order.&lt;br /&gt;
&lt;br /&gt;
Starting from version 3.3 there is an option to reorder or sort the children in a family (available if editing is enabled). To sort the children in a family, go to the family page and click on the reorder children link. Then you can click the sort by birth date button.&lt;br /&gt;
&lt;br /&gt;
==How can I prevent Search Engine Bots from using All My Available Bandwidth?==&lt;br /&gt;
See [[How to restrict bot access]].&lt;br /&gt;
&lt;br /&gt;
==How does a beginner user ask a question and receive an answer?==&lt;br /&gt;
&lt;br /&gt;
Questions should be directed to the phpGedView forums that are located [http://sourceforge.net/forum/?group_id=55456 here.] Once your question has been asked then you might wish to move it to the wiki so other people can search for it here as well.&lt;br /&gt;
&lt;br /&gt;
==Does any ISP offer an account on a system where PGV is already installed?==&lt;br /&gt;
&lt;br /&gt;
Web Hosting services for phpGedView can be accessed at [http://pgvhosting.com ($) here] or [http://www.yourbeginnings.com/web/ (free) here] ... and there are others as well!&lt;br /&gt;
&lt;br /&gt;
==Can I export my edited data into a gedcom file? If so, can I restrict the export and how?==&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
THE FAMILY TREE CLIPPINGS CART&lt;br /&gt;
&lt;br /&gt;
The Clippings Cart allows you to take extracts (&amp;quot;clippings&amp;quot;) from this family tree and bundle them up into a single file for downloading and subsequent importing into your own genealogy program. The downloadable file is recorded in GEDCOM format.&lt;br /&gt;
&lt;br /&gt;
* How to take clippings?&lt;br /&gt;
**This is really simple. Whenever you see a clickable name (individual, family, or source) you can go to the Details page of that name. There you will see the Add to Clippings Cart option. When you click that link you will be offered several options to download.&lt;br /&gt;
* How to download?&lt;br /&gt;
**Once you have items in your cart, you can download them just by clicking the Download Now link. Follow the instructions and links.&lt;br /&gt;
&lt;br /&gt;
==How do I upgrade to the current version of PhpGedView from version X.XX?==&lt;br /&gt;
*See [[Upgrade]]&lt;br /&gt;
&lt;br /&gt;
==How do I handle children born out of wedlock when there is no idea who the father is?==&lt;br /&gt;
The most precise way to do this is to first add the child as an unlinked person.&lt;br /&gt;
&lt;br /&gt;
Go to Administration page.&lt;br /&gt;
&lt;br /&gt;
Under &amp;quot;Data and GEDCOM Administration&amp;quot;, click on &amp;quot;Add an Unlinked Person&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Fill in all known information for the child.&lt;br /&gt;
&lt;br /&gt;
Review and Accept your changes if you are not set up to automatically accept changes.&lt;br /&gt;
&lt;br /&gt;
Find the child in your Individual List.&lt;br /&gt;
&lt;br /&gt;
From the child's individual page, go to &amp;quot;Quick Update&amp;quot; under Edit Menu.&lt;br /&gt;
&lt;br /&gt;
Under &amp;quot;Family with Parents&amp;quot; tab, find and enter mother's ID number.&lt;br /&gt;
&lt;br /&gt;
If the mother has more than one such child, you can either repeat this to add a separate family for each child, or just add the additional children to the family which was created when you linked the first child.&lt;br /&gt;
&lt;br /&gt;
It is possible to do this by adding a &amp;quot;husband&amp;quot; named Unknown to the mother, but this is technically incorrect, since you end up with a person named Unknown, rather than an unknown person which is shown by (unknown)(unknown). I have wasted a lot of time in the past removing the name &amp;quot;Unknown&amp;quot; from imported GEDCOM records because others didn't understand this distinction.&lt;br /&gt;
&lt;br /&gt;
Another variation to that, is this....&lt;br /&gt;
You can add the child's father (this would be for women tht have more than 2 children with different fathers out of wedlock), by using the word /FATHER/ &amp;quot;Child's Name&amp;quot;, and replace the child's name with the actual name.  This can help to differentiate which child belongs to which father, and removes the &amp;quot;Unknown&amp;quot; variable to some degree.  You could even change the /FATHER/ to read something like /BIO-FATHER/ or whatever variation you like.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Category links...DO NOT DELETE --&amp;gt;&lt;br /&gt;
[[Category:PhpGedView]]&lt;br /&gt;
[[Category:FAQ|Miscellaneous]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Language links...DO NOT DELETE --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=PGV_Database_Functions&amp;diff=11539</id>
		<title>PGV Database Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=PGV_Database_Functions&amp;diff=11539"/>
		<updated>2009-04-05T13:13:13Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Fetching Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Until version 4.2.1, PhpGedView used the Pear::DB library for database access.  From version 4.2.2, it is planned to use the PDO library.  During the migration period, there may be elements of both in use at the same time.&lt;br /&gt;
&lt;br /&gt;
==Rationale for change==&lt;br /&gt;
&lt;br /&gt;
* Pear::DB is deprecated, PDO is actively maintained&lt;br /&gt;
* Pear::DB is a separate library, PDO is a native part of PHP5&lt;br /&gt;
* PDO is faster than Pear::DB&lt;br /&gt;
* PDO supports prepared statements&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
&lt;br /&gt;
Basic usage of the two libraries is very similar.  See these two examples:&lt;br /&gt;
&lt;br /&gt;
 // Pear::DB                                      // PDO&lt;br /&gt;
 gloabl $DBCONN; // a database connection         global $DBH; // a database handle&lt;br /&gt;
                                                  &lt;br /&gt;
 // SQL with no parameters/returned rows          // SQL with no parameters/returned rows&lt;br /&gt;
 $DBCONN-&amp;gt;query(&amp;quot;DROP TABLE my_table&amp;quot;);           $DBH-&amp;gt;exec(&amp;quot;DROP TABLE my_table&amp;quot;);&lt;br /&gt;
                                                  &lt;br /&gt;
 // SQL with fetched rows                         // SQL with fetched rows&lt;br /&gt;
 $res=$DBCONN-&amp;gt;query(&amp;quot;SELECT * FROM my_table&amp;quot;);   $statement=$DBH-&amp;gt;prepare(&amp;quot;SELECT * FROM my_table&amp;quot;);&lt;br /&gt;
                                                  $statement-&amp;gt;execute();&lt;br /&gt;
 while ($row=$res-&amp;gt;fetchRow()) {                  while ($row=$statement-&amp;gt;fetch()) {&lt;br /&gt;
   print_r($res);                                   print_r($res);&lt;br /&gt;
 }                                                }&lt;br /&gt;
 $res-&amp;gt;free();                                    $statement-&amp;gt;closeCursor();&lt;br /&gt;
&lt;br /&gt;
==class PGV_DB - a wrapper for PDO==&lt;br /&gt;
&lt;br /&gt;
As the above example shows, PDO is (like Pear::DB) repetitive, verbose and hence error prone.  It doesn't provide any facility for profiling or logging.  To resolve this, the class PGV_DB was written.  It provides a number of features.&lt;br /&gt;
&lt;br /&gt;
===Singleton Pattern===&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Singleton_pattern singleton pattern] is a design approach which ensures that only a single instance exists of a particular entity.&lt;br /&gt;
&lt;br /&gt;
Since we will only be using a single database connection, we can either create this value once and pass it using global or fetch it as we need it using getInstance().&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 function foo() {&lt;br /&gt;
   global $DBH;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function foo() {&lt;br /&gt;
   $DBH=PGV_DB::getInstance();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Although this looks like more typing, we typically perform just a few action on this single instance many times over.  Instead, we would use the following syntax.  It means that we no longer need to pass a global $DBH variable to every function that accesses the database.&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 $DBH=PGV_DB-&amp;gt;getInstance();&lt;br /&gt;
 $statement=$DBH-&amp;gt;prepare($sql);&lt;br /&gt;
 &lt;br /&gt;
 $statement=PGV_DB::prepare($sql);&lt;br /&gt;
&lt;br /&gt;
===Fluent Interface===&lt;br /&gt;
&lt;br /&gt;
A [http://en.wikipedia.org/wiki/Fluent_interface fluent interface] allows commands to be chained, without the need for intermediate/temporary variables.  This leads to much more readable code.&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 $statement=PGV_DB::prepare(&amp;quot;SELECT COUNT(*) FROM employees WHERE salary&amp;gt;?&amp;quot;);&lt;br /&gt;
 $statement-&amp;gt;execute(array(10000));&lt;br /&gt;
 $total=$statement-&amp;gt;fetchOne();&lt;br /&gt;
 &lt;br /&gt;
 $total=&lt;br /&gt;
   PGV_DB::prepare(&amp;quot;SELECT COUNT(*) FROM employees WHERE salary&amp;gt;?&amp;quot;)&lt;br /&gt;
   -&amp;gt;execute(array(10000))&lt;br /&gt;
   -&amp;gt;fetchOne();&lt;br /&gt;
&lt;br /&gt;
===Automatic Execution===&lt;br /&gt;
&lt;br /&gt;
PGV_DB keeps track of whether a statement has been executed before you fetch data from it.  This means that a parameter-less execute() will be called automatically.  e.g.&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 $results=&lt;br /&gt;
   PGV_DB::prepare(&amp;quot;SELECT MIN(age), MAX(age) FROM employees GROUP BY department&amp;quot;)&lt;br /&gt;
   -&amp;gt;execute()&lt;br /&gt;
   -&amp;gt;fetchAll();&lt;br /&gt;
 &lt;br /&gt;
 $results=&lt;br /&gt;
   PGV_DB::prepare(&amp;quot;SELECT MIN(age), MAX(age) FROM employees GROUP BY department&amp;quot;)&lt;br /&gt;
   -&amp;gt;fetchAll();&lt;br /&gt;
&lt;br /&gt;
==HOWTO / Examples==&lt;br /&gt;
&lt;br /&gt;
The following examples demonstrate how to perform various tasks.&lt;br /&gt;
&lt;br /&gt;
===DDL Statements===&lt;br /&gt;
&lt;br /&gt;
A statement with no parameters or returned rows (typically a [http://en.wikipedia.org/wiki/Data_Definition_Language DDL] statement), can be executed in a single step.&lt;br /&gt;
&lt;br /&gt;
 PGV_DB::exec(&amp;quot;CREATE TABLE my_table (col1 INTEGER, col2 INTEGER)&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Other statements need to be executed using a two-step approach (prepare and execute).&lt;br /&gt;
&lt;br /&gt;
Note that commands such as &amp;quot;OPTIMIZE TABLE&amp;quot; actually return rows, and need to be executed as if they were SELECT queries.&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
Most queries have parameters (bound variables).   These can either specified individually or as an array.&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 PGV_DB::prepare(&amp;quot;UPDATE my_table SET column=? WHERE id=?&amp;quot;)&lt;br /&gt;
   -&amp;gt;execute(array($value, $id));&lt;br /&gt;
 &lt;br /&gt;
 PGV_DB::prepare(&amp;quot;UPDATE my_table SET column=? WHERE id=?&amp;quot;)&lt;br /&gt;
   -&amp;gt;bindValue(1, $value)&lt;br /&gt;
   -&amp;gt;bindValue(2, $id)&lt;br /&gt;
   -&amp;gt;execute();&lt;br /&gt;
&lt;br /&gt;
The latter format can be useful when re-using the same statement, as it is only necessary to set parameters that have changed.&lt;br /&gt;
&lt;br /&gt;
 $statement=&lt;br /&gt;
   PGV_DB::prepare(&amp;quot;UPDATE my_table SET column=? WHERE id=?&amp;quot;)&lt;br /&gt;
   -&amp;gt;bindValue(1, $value)&lt;br /&gt;
   -&amp;gt;bindValue(2, $id)&lt;br /&gt;
   -&amp;gt;execute();&lt;br /&gt;
 &lt;br /&gt;
 $statement&lt;br /&gt;
   -&amp;gt;bindvalue(2, $other_id)&lt;br /&gt;
   -&amp;gt;execute();&lt;br /&gt;
 &lt;br /&gt;
 $statement&lt;br /&gt;
   -&amp;gt;bindvalue(2, $yet_other_id)&lt;br /&gt;
   -&amp;gt;execute();&lt;br /&gt;
&lt;br /&gt;
You can easily run the same query several times, with different parameters&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 $statement=PGV_DB::prepare(&amp;quot;INSERT INTO my_table (col, id) VALUES (?, ?)&amp;quot;);&lt;br /&gt;
 $statement-&amp;gt;execute($value1, $id1));&lt;br /&gt;
 $statement-&amp;gt;execute($value2, $id2));&lt;br /&gt;
 $statement-&amp;gt;execute($value3, $id3));&lt;br /&gt;
 &lt;br /&gt;
 PGV_DB::prepare(&amp;quot;INSERT INTO my_table (col, id) VALUES (?, ?)&amp;quot;)&lt;br /&gt;
   -&amp;gt;execute($value1, $id1))&lt;br /&gt;
   -&amp;gt;execute($value2, $id2))&lt;br /&gt;
   -&amp;gt;execute($value3, $id3));&lt;br /&gt;
&lt;br /&gt;
Instead of using &amp;quot;?&amp;quot; and numeric placeholders, you could use named placeholders.&lt;br /&gt;
&lt;br /&gt;
 // These are equivalent&lt;br /&gt;
 &lt;br /&gt;
 PGV_DB::prepare(&amp;quot;UPDATE my_table SET column=:foo WHERE id=:bar&amp;quot;)&lt;br /&gt;
   -&amp;gt;execute(array('foo'=&amp;gt;$value, 'bar'=&amp;gt;$id));&lt;br /&gt;
 &lt;br /&gt;
 PGV_DB::prepare(&amp;quot;UPDATE my_table SET column=:foo WHERE id=:bar&amp;quot;)&lt;br /&gt;
   -&amp;gt;bindValue('foo', $value)&lt;br /&gt;
   -&amp;gt;bindValue('bar', $id)&lt;br /&gt;
   -&amp;gt;execute();&lt;br /&gt;
&lt;br /&gt;
===Parameter Types===&lt;br /&gt;
&lt;br /&gt;
The bindValue() functions will look at the type of the value, and use it as a null/integer/string as appropriate.  You can force the type by supplying a third parameter.  e.g.&lt;br /&gt;
&lt;br /&gt;
 $statement-&amp;gt;bindValue(1, $var, PDO::PARAM_STR);&lt;br /&gt;
 $statement-&amp;gt;bindValue(1, $var, PDO::PARAM_INT);&lt;br /&gt;
 $statement-&amp;gt;bindValue(1, $var, PDO::PARAM_NULL);&lt;br /&gt;
&lt;br /&gt;
This can be used to ensure that only integers are inserted into certain columns, etc.  these two statements are equivalent:&lt;br /&gt;
&lt;br /&gt;
 $statement-&amp;gt;bindValue(1, $var, PDO::PARAM_INT);&lt;br /&gt;
 $statement-&amp;gt;bindValue(1, (int)$var);&lt;br /&gt;
&lt;br /&gt;
It is not generally necessary to use this parameter.  By default, all values (including numbers) are quoted as strings, and all databases will accept quoted numeric values.&lt;br /&gt;
&lt;br /&gt;
===Fetching Data===&lt;br /&gt;
&lt;br /&gt;
The traditional way of fetching rows of data is to use the following sequence of events&lt;br /&gt;
&lt;br /&gt;
 $statement=PGV_DB::prepare(&amp;quot;SELECT * FROM table&amp;quot;)-&amp;gt;execute();&lt;br /&gt;
 while ($row=$statement-&amp;gt;fetch()) {&lt;br /&gt;
   print_r($row);&lt;br /&gt;
 }&lt;br /&gt;
 $statement-&amp;gt;closeCursor();&lt;br /&gt;
&lt;br /&gt;
Fetching data one row at a time can be very efficient.  Depending on the design of the query, the database may be able to send the first rows before it has found the last ones.  It also reduces memory requirements, as only one row needs to be held in memory at a time.  However, for the majority of PhpGedView's queries, these factors don't apply.  Instead we want to fetch the data as simply as possible.&lt;br /&gt;
&lt;br /&gt;
To fetch all the rows from a query, as an array, use the fetchAll() function.  This will call execute() if needed, and closeCurser() afterwards.  The previous example can be written as&lt;br /&gt;
&lt;br /&gt;
 $rows=PGV_DB::prepare(&amp;quot;SELECT * FROM table&amp;quot;)-&amp;gt;fetchAll();&lt;br /&gt;
 foreach ($rows as $row)) {&lt;br /&gt;
   print_r($row);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note that where no rows are found, fetchAll() returns an empty array.&lt;br /&gt;
&lt;br /&gt;
Where we only want a single row from a query, such as when selecting data based on a primary key, use the fetchOneRow() function.&lt;br /&gt;
&lt;br /&gt;
 $row=&lt;br /&gt;
   PGV_DB::prepare(&amp;quot;SELECT * FROM table WHERE pk=?&amp;quot;)&lt;br /&gt;
   -&amp;gt;bindValue(1, $key)&lt;br /&gt;
   -&amp;gt;fetchOneRow();&lt;br /&gt;
&lt;br /&gt;
Where we only want a single value from a single row, such as when using aggregate functions, use the fetchOne() function.&lt;br /&gt;
&lt;br /&gt;
 $count=PGV_DB::prepare(&amp;quot;SELECT COUNT(*) FROM employees&amp;quot;)-&amp;gt;fetchOne();&lt;br /&gt;
&lt;br /&gt;
Note that where no row is found, fetchOneRow() and fetchOne() both return null.&lt;br /&gt;
&lt;br /&gt;
To fetch two columns, as an associative array of col1=&amp;gt;col2, use the fetchAssoc() function&lt;br /&gt;
&lt;br /&gt;
 $count=PGV_DB::prepare(&amp;quot;SELECT user_id, last_login FROM users&amp;quot;)-&amp;gt;fetchAssoc();&lt;br /&gt;
&lt;br /&gt;
===Row Format===&lt;br /&gt;
&lt;br /&gt;
The fetch(), fetchOneRow() and fetchAll() functions take an optional parameter.  This parameter determines the format of the returned row&lt;br /&gt;
&lt;br /&gt;
* PDO::FETCH_OBJ - fetch the row as an anonymous object.  echo $row-&amp;gt;col1, $row-&amp;gt;col2, ...&lt;br /&gt;
* PDO::FETCH_ASSOC - fetch the row as an associative array.  echo $row['col1'], $row['col2'], ...&lt;br /&gt;
* PDO::FETCH_NUM - fetch the row as a numeric array.  echo $row[0], $row[1], ...&lt;br /&gt;
&lt;br /&gt;
The default is FETCH_OBJ.&lt;br /&gt;
&lt;br /&gt;
===UPDATE/INSERT/DELETE Statements===&lt;br /&gt;
&lt;br /&gt;
Queries without returned rows just need a call to execute().&lt;br /&gt;
&lt;br /&gt;
 PGV_DB::prepare(&amp;quot;UPDATE my_table SET column=? WHERE id=?&amp;quot;)&lt;br /&gt;
   -&amp;gt;execute(array($col, $id));&lt;br /&gt;
&lt;br /&gt;
===Error Handling===&lt;br /&gt;
&lt;br /&gt;
When an error occurs, a PDOException is thrown.  For example&lt;br /&gt;
&lt;br /&gt;
 try {&lt;br /&gt;
    PGV_DB::exec(&amp;quot;CREATE TABLE my_table (col1 INTEGER, col2 INTEGER)&amp;quot;);&lt;br /&gt;
 } catch (PDOException $ex) {&lt;br /&gt;
    //echo &amp;quot;Couldn't create the table &amp;quot;, $ex-&amp;gt;getMessage();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Native PDO Functions===&lt;br /&gt;
&lt;br /&gt;
All the native PDO functions are still available, and are passed directly to the underlying object.  For example, to access the PDO transaction functions, you could do this.&lt;br /&gt;
&lt;br /&gt;
 PGV_DB::beginTransaction();&lt;br /&gt;
 PGV_DB::prepare(&amp;quot;INSERT INTO table foo (?)&amp;quot;)-&amp;gt;execute(array(&amp;quot;bar&amp;quot;));&lt;br /&gt;
 PGV_DB::commit;();&lt;br /&gt;
&lt;br /&gt;
===Logging===&lt;br /&gt;
&lt;br /&gt;
All queries are logged, along with their execution times and number of rows affected.  To display them as a formatted HTML table, use the following function.&lt;br /&gt;
&lt;br /&gt;
 // execute some statements...&lt;br /&gt;
 &lt;br /&gt;
 if ($debug) {&lt;br /&gt;
   echo PGV_DB::getQueryLog();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Quoting/Escaping===&lt;br /&gt;
&lt;br /&gt;
Sometimes it is necessary to generate SQL containing escaped data, rather than using placeholders.  Examples are where fragments of SQL are created separately.  To escape data, use the quote() function.&lt;br /&gt;
&lt;br /&gt;
 $sql=&amp;quot;SELECT foo FROM bar WHERE col=&amp;quot;.PGV_DB::quote(&amp;quot;value&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Note that, unlike the Pear::DB function escapeSimple(), quote() adds the surrounding quotation marks.&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=4.2.1&amp;diff=11534</id>
		<title>4.2.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=4.2.1&amp;diff=11534"/>
		<updated>2009-04-04T20:49:06Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Redirecting to PhpGedView v4.2.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PhpGedView v4.2.1]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=4_April&amp;diff=11530</id>
		<title>4 April</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=4_April&amp;diff=11530"/>
		<updated>2009-04-04T20:45:55Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{day}}&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
&lt;br /&gt;
* [[2008]] - [[PhpGedView v4.1.4]] was released.&lt;br /&gt;
* [[2009]] - [[PhpGedView v4.2.1]] was released.&lt;br /&gt;
&lt;br /&gt;
[[Category:April]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Installation&amp;diff=11441</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Installation&amp;diff=11441"/>
		<updated>2009-02-03T07:21:34Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Redirecting to Installation Guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Installation_Guide]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Upgrade&amp;diff=11440</id>
		<title>Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Upgrade&amp;diff=11440"/>
		<updated>2009-02-03T07:20:38Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: Redirecting to Upgrading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Upgrading]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Installation_Guide_v4.1.x&amp;diff=11439</id>
		<title>Installation Guide v4.1.x</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Installation_Guide_v4.1.x&amp;diff=11439"/>
		<updated>2009-02-03T07:18:16Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Phpgedview}}&lt;br /&gt;
&lt;br /&gt;
This guide is for first-time installations.  If you are upgrading an existing installation, see the article on [[Upgrading]].&lt;br /&gt;
&lt;br /&gt;
The latest release on the v4.1.x series is the v[[{{latest version|series=4.1.x}}]]. The release was made on the {{latest version|series=4.1.x|release date=1}}. &lt;br /&gt;
&lt;br /&gt;
We provide here a list of the [[#Requirements|requirements]] needed to install PhpGedView. We do not provide full details on how to install these since there are many dedicated websites providing such details and we would not do it justice in this guide. We assume you will have these [[#Requirements|requirements]] satisfied by your [[w:ISP|Internet Service Provider (ISP)]] or your chosen [[Web_hosting|web hosting]] solution. If you are unsure, contact them to check if they do.&lt;br /&gt;
&lt;br /&gt;
==Quick Install==&lt;br /&gt;
&lt;br /&gt;
* Contact your [[w:ISP|ISP]] or [[Web_hosting|web host]] to ensure they are able to supply the [[#Requirements|requirements]] to run PhpGedView.&lt;br /&gt;
* Download and unzip &amp;lt;tt&amp;gt;[http://downloads.sourceforge.net/phpgedview/PhpGedView-all-{{latest version|series=4.1.x}}.zip PhpGedView-all-{{latest version|series=4.1.x}}.zip]&amp;lt;/tt&amp;gt; into a directory named &amp;lt;tt&amp;gt;phpgedview&amp;lt;/tt&amp;gt; on your computer.&lt;br /&gt;
* Upload the &amp;lt;tt&amp;gt;phpgedview&amp;lt;/tt&amp;gt; directory and all its contents to your web space using a method allowed by your ISP or [[Web_hosting|web host]].&lt;br /&gt;
* On the webserver, change the permissions of the following files and directories to be writable by the web server:&lt;br /&gt;
 config.php&lt;br /&gt;
 index/*&lt;br /&gt;
 media/&lt;br /&gt;
 media/thumbs/&lt;br /&gt;
* Point your browser to the directory where you uploaded your PhpGedView files (for example, http://www.yourserver.com/phpgedview/). You should now see a PhpGedView configuration screen.&lt;br /&gt;
[[Image:Fig_3.jpg|centre|frame|Configuration Screen]]&lt;br /&gt;
* Enter the information required using the '?' help icons next to each label for guidance. You will need the MySQL database name, username and password provided by your ISP or web [[Web_hosting|web host]]. Click &amp;quot;Save&amp;quot;.&lt;br /&gt;
* Enter the details of the PhpGedView administrator and click &amp;quot;Create User&amp;quot;.&lt;br /&gt;
[[Image:Fig_4.jpg|centre|frame|Create Admin User]]&lt;br /&gt;
* If you have not yet received any errors you will see a message like:&lt;br /&gt;
[[Image:Fig_5.jpg|centre|frame|Configuration Complete]]&lt;br /&gt;
* On the web server, change the permissions of the &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; file to be non-writable by the web server.&lt;br /&gt;
* You now have a clean PhpGedView installation ready for [[Add a GEDCOM|adding a GEDCOM]].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
Your [[w:ISP|ISP]] may provide you with the following  services. If they do not, you will need to to find a suitable [[Web_hosting|web hosting]] solution.&lt;br /&gt;
&lt;br /&gt;
; Web server&lt;br /&gt;
: A web server such as [http://httpd.apache.org/ apache] is required to serve the web pages over the internet.&lt;br /&gt;
&lt;br /&gt;
; PHP v5.2.0+&lt;br /&gt;
: Your web server needs to be running [http://www.php.net PHP] version 5.2.0 or greater to generate dynamic HTML pages and use all of PhpGedView 4.2.x functions. Please note that if you have PHP lower than 5.2.0, but greater than 4.4, you should use PhpGedView 4.1.7.  This was the last version of PhpGedView that ran on PHP4.&lt;br /&gt;
&lt;br /&gt;
; Database&lt;br /&gt;
: You will need at least 1 database and a username and password to access it.&lt;br /&gt;
: PhpGedView primarily supports MySQL, but has also been tested and shown to work with Postgresql, SQLite, and SQL-Server.  The versions required for each of these databases is outlined below:&lt;br /&gt;
: MySQL 4.1+&lt;br /&gt;
: PostgreSQL 8.0+&lt;br /&gt;
: SQLite available through PDO-SQLite which is included in PHP 5&lt;br /&gt;
: MS SQL-Server 2003+&lt;br /&gt;
&lt;br /&gt;
; Web space&lt;br /&gt;
: At least 20MB of web space on the web server. You will need more than this if you intend to store [[w:multimedia|multimedia]] linked to individuals.&lt;br /&gt;
&lt;br /&gt;
; GD Graphics Library (optional)&lt;br /&gt;
: You may wish to install the [[w:GD Graphics Library|GD Graphics Library]] which can then be used by PhpGedView for image manipulation such as creating thumnails. This can be important in saving bandwidth if large images (photos and scanned documents) are used in the genealogy.&lt;br /&gt;
&lt;br /&gt;
; Freetype Library (optional)&lt;br /&gt;
: If [[w:Freetype|Freetype]] is installed, you will have access to the &amp;quot;Circle Diagram&amp;quot; in the Charts menu.  You will also get better watermarking from the [[Media Firewall]].&lt;br /&gt;
&lt;br /&gt;
; Calendar (optional)&lt;br /&gt;
: This is required for Jewish dates/calendars wish to be used.&lt;br /&gt;
&lt;br /&gt;
; zlib (optional)&lt;br /&gt;
: If the web server being used by your ISP or [[Web_hosting|web host]] is the apache web server, it can be configured to send data over the internet in a compressed form using the [[w:zlib|zlib library]] - this will save bandwidth. To enable this compression, your ISP or [[Web_hosting|web host]] needs to add the following lines to the &amp;lt;tt&amp;gt;php.ini&amp;lt;/tt&amp;gt; file:&lt;br /&gt;
 php_flag zlib.output_compression On&lt;br /&gt;
 php_value zlib.output_compression_level 5&lt;br /&gt;
&lt;br /&gt;
Alternatively, your ISP or [[Web_hosting|web host]] may allow you to make these changes yourself. Simply create a file called &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; (including the leading dot) in your PhpGedView directory on the web server and add the above two lines to it.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
You must be familiar with methods to transfer files to another computer.&lt;br /&gt;
&lt;br /&gt;
The method used may depend on the [[w:OS|OS]] and the settings of your web space provider as well as your own computer abilities. It is not possible to address every combination, thus we will address the most generic way to do so - the use of a graphical [[w:File Transfer Protocol|File Transfer Protocol (FTP)]] client. An example of a [[w:Free_software|free]], [[w:Open_source|open source]] [[w:FTP_client|FTP client]] is [[w:FileZilla|FileZilla]] - feel free to explore other [[w:Comparison_of_FTP_clients|alternative clients]].&lt;br /&gt;
&lt;br /&gt;
We aim not detail how to use an FTP client as this is best addressed by the documentation of the client you choose to use. We will however, detail the tasks that need to be undertaken with the FTP client. Another alternative, if your web space provider allows it, is to use an [[w:SSH_clients|SSH client]]. However, we assume that if you know about SSH, you will likely already know what to do, so we will not discuss it here.&lt;br /&gt;
&lt;br /&gt;
===Obtaining PhpGedView===&lt;br /&gt;
There are [[Download_v4.1.x|several packages available for PhpGedView v4.1.x]], and you should decide which is most appropriate for your needs.&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded the appropriate file to your own computer, you will need to [[w:ZIP (file format)|unzip]] the file into a directory of it's own e.g. &amp;lt;tt&amp;gt;phpgedview&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Uploading PhpGedView to Your Web Space===&lt;br /&gt;
Next, you should use your FTP client to transfer the &amp;lt;tt&amp;gt;phpgedview&amp;lt;/tt&amp;gt; directory and all it's contents to your web space. The contents of this directory is quite large (~37MB) so this could take some time depending on your internet connection speed. However, you probably won't need all those files. With careful pruning, the upload can be reduced to around 9MB. You can also use your host's control panel, such as [[w:cPanel|cPanel]], to upload the compressed zip or tarball archive and then extract it once it is on the server.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;phpgedview&amp;lt;/tt&amp;gt; directory in your web space, will now be referred to as the &amp;quot;PhpGedView install directory&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Setting File Permissions===&lt;br /&gt;
{{main|Setting File Permissions}}&lt;br /&gt;
In order for PhpGedView to function correctly, the web server hosting your PhpGedView installation needs to have the permission to save and modify files in a limited number of directories within your PhpGedView install directory. Your FTP client should be capable of allowing you to modify these permissions (called attributes in some clients). Briefly, you should make the following directories and files in your PhpGedView install directory writable by everyone:&lt;br /&gt;
&lt;br /&gt;
 index/*            # comment: '*' means all files and folders in that directory&lt;br /&gt;
 media/&lt;br /&gt;
 media/thumbs/&lt;br /&gt;
&lt;br /&gt;
Essentially, this will allow PhpGedView to save multimedia files on the server.&lt;br /&gt;
&lt;br /&gt;
====More Secure Permissions====&lt;br /&gt;
If your web server is hosted on a [[w:Unix-like|Unix-like]] OS and you know enough about what permissions are and how to set them, you should set permissions rigidly for a more secure installation.&lt;br /&gt;
# Determine what &amp;quot;user group&amp;quot; the web server runs process as. e.g. Apache2 on Debian runs as &amp;quot;www-data&amp;quot; by default.&lt;br /&gt;
# Change the &amp;quot;ownership&amp;quot; of  all directories and files under the PhpGedView install directory to be owned by you.&lt;br /&gt;
# Change the &amp;quot;group membership&amp;quot; of all directories and files under the PhpGedView install directory to be that of the web server.&lt;br /&gt;
# Ensure all directories and files under the PhpGedView install directory '''cannot''' be written by the group members.&lt;br /&gt;
# Set specified directories and files to be group writable.&lt;br /&gt;
&lt;br /&gt;
If you have SSH access to your [[w:Unix-like|Unix-like]] web server, the following commands should take care of this. It assumes the web server is running with group membership of &amp;quot;www-data&amp;quot;, and your username is YOUR_USERNAME):&lt;br /&gt;
 chown -R YOUR_USERNAME ./phpgedview/&lt;br /&gt;
 chgrp -R www-data ./phpgedview/&lt;br /&gt;
 chmod -R g-w ./phpgedview/&lt;br /&gt;
 chmod g+w ./phpgedview/index/&lt;br /&gt;
 chmod g+w ./phpgedview/media/&lt;br /&gt;
 chmod g+w ./phpgedview/media/thumbs/&lt;br /&gt;
&lt;br /&gt;
===Online PhpGedView Configuration===&lt;br /&gt;
There exists a tool in PhpGedView that allows you to make changes to the PhpGedView configuration, this needs to be performed to complete the installation.&lt;br /&gt;
&lt;br /&gt;
In order to do this, the web server must have permissions to write to the &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; file in the PhpGedView install directory to be able to save the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;WARNING: you should set &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; permissions back to not writable by the web server immediately after performing the configuration! Failing to do so will leave your PhpGedView installation at risk!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Using the FTP client, set the permissions of &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; in the PhpGedView install directory to be writable by everyone. Alternatively, if you are using an SSH client you could issue the following command:&lt;br /&gt;
 chmod g+w ./phpgedview/config.php&lt;br /&gt;
&lt;br /&gt;
* Point your web browser to the PhpGedView install directory (for example, http://www.yourserver.com/phpgedview/). You should now see a PhpGedView configuration screen.&lt;br /&gt;
[[Image:Fig_3.jpg|centre|frame|Configuration Screen]]&lt;br /&gt;
&lt;br /&gt;
* Enter all relevant information into the form, clicking the help ('?') icons for guidance. You will need the MySQL database name, username and password provided by your ISP or [[Web_hosting|web host]]. Click &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Extra Configuration tips for those with ISPs who do not host PHPGedview ( this advice relates to an ISP which uses the online control panel program called &amp;quot;cpanel&amp;quot; and the phpmyadmin and mysqldatabases utilities);&lt;br /&gt;
host name is &amp;quot;localhost&amp;quot;, &lt;br /&gt;
database name is &amp;quot;accountname_name of database&amp;quot;, &lt;br /&gt;
use mysqldatabases utility to create a database and then a user that can access the database. Again usernames may have been automatically prefixed with the ISP account name - use the mysqldatabases utility to see.&lt;br /&gt;
&lt;br /&gt;
* Enter the details of the PhpGedView administrator and click &amp;quot;Create User&amp;quot;.&lt;br /&gt;
[[Image:Fig_4.jpg|centre|frame|Create Admin User]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If you have not yet received any errors you will see a message like:&lt;br /&gt;
[[Image:Fig_5.jpg|centre|frame|Configuration Complete]]&lt;br /&gt;
&lt;br /&gt;
* Using your FTP client, change the permissions of the &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; file to be non-writable. If you are using an SSH client, make the &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; file non-writable by the group:&lt;br /&gt;
 chmod g-w ./phpgedview/config.php&lt;br /&gt;
&lt;br /&gt;
* You now have a clean PhpGedView installation ready for [[Add_a_GEDCOM|adding a GEDCOM]].&lt;br /&gt;
&lt;br /&gt;
==Upgrading From a Previous Version==&lt;br /&gt;
&lt;br /&gt;
Go to this page for [[Upgrading]]. It is usually a reasonably straightforward process, but can vary widely depending on your [[w:OS|OS]], your [[w:ISP|ISP]] etc.&lt;br /&gt;
&lt;br /&gt;
=Post-Install Tasks and Configuration=&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
{{License}}&lt;br /&gt;
&lt;br /&gt;
[[Category:PhpGedView]]&lt;br /&gt;
[[Category:Installation Guide]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=31_January&amp;diff=11375</id>
		<title>31 January</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=31_January&amp;diff=11375"/>
		<updated>2009-02-01T06:45:40Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{day}}&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
&lt;br /&gt;
* [[2009]] - [[PhpGedView v4.1.7]] was released.&lt;br /&gt;
* [[2009]] - [[PhpGedView v4.2.0]] was released.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:January]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=Add_Google_Analytics&amp;diff=10963</id>
		<title>Add Google Analytics</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=Add_Google_Analytics&amp;diff=10963"/>
		<updated>2008-05-11T15:54:57Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PhpGedView can automatically add the code required for [http://www.google-analytics.com/ Google Analytics].&lt;br /&gt;
&lt;br /&gt;
There are two versions of the Google Analytics code.  PhpGedView will generate the &amp;quot;new&amp;quot; version.  This offers more features than the &amp;quot;old&amp;quot; version, but is incompatible with the Urchin Tracker software.&lt;br /&gt;
&lt;br /&gt;
You need to obtain a user code from Google Analytics.  This looks something like UA-XXXXX-XX.  You then need to add the following line to the end of your config.php file.&lt;br /&gt;
&lt;br /&gt;
 define('PGV_GOOGLE_ANALYTICS', 'UA-XXXXX-XX');&lt;br /&gt;
&lt;br /&gt;
The end of config.php should then look something like this:&lt;br /&gt;
&lt;br /&gt;
 $CONFIGURED = true;&lt;br /&gt;
 require_once(&amp;quot;includes/session.php&amp;quot;);&lt;br /&gt;
 define('PGV_GOOGLE_ANALYTICS', 'UA-XXXXX-XX');&lt;br /&gt;
&lt;br /&gt;
This functionality was added in SVN3040 / release 4.1.6&lt;br /&gt;
&lt;br /&gt;
[[Category:How To]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=27_April&amp;diff=10925</id>
		<title>27 April</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=27_April&amp;diff=10925"/>
		<updated>2008-04-27T09:52:24Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: New page: {{day}}  ==Events==  * 2008 - PhpGedView v4.1.5 was released.  Category:April  da: 27. April&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{day}}&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
&lt;br /&gt;
* [[2008]] - [[PhpGedView v4.1.5]] was released.&lt;br /&gt;
&lt;br /&gt;
[[Category:April]]&lt;br /&gt;
&lt;br /&gt;
[[da: 27. April]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.phpgedview.net/en/index.php?title=PhpGedView_v4.1.5&amp;diff=10924</id>
		<title>PhpGedView v4.1.5</title>
		<link rel="alternate" type="text/html" href="https://wiki.phpgedview.net/en/index.php?title=PhpGedView_v4.1.5&amp;diff=10924"/>
		<updated>2008-04-27T09:50:56Z</updated>

		<summary type="html">&lt;p&gt;Fisharebest: New page: '''PhpGedView v4.1.5''' was released on 27 April, 2008.  == Features ==  {{main|Features_v4.1.x}}  == Internal Links ==  * Download Page * [[Installation Guide ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PhpGedView v4.1.5''' was released on [[27 April]], [[2008]].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
{{main|Features_v4.1.x}}&lt;br /&gt;
&lt;br /&gt;
== Internal Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Download v4.1.x|Download Page]]&lt;br /&gt;
* [[Installation Guide v4.1.x|Installation Guide]]&lt;br /&gt;
* [[Administrators Guide v4.1.x|Administrators Guide]]&lt;br /&gt;
* [[Users Guide|Users Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Category related stuff --&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:4.1.5}}&lt;br /&gt;
[[Category:PhpGedView]]&lt;/div&gt;</summary>
		<author><name>Fisharebest</name></author>
		
	</entry>
</feed>