473,407 Members | 2,326 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,407 software developers and data experts.

PHP XML

I am fairly familiar with PHP and MYSQL and I know a little about XML.

I would like to know if it is possible to do queries on XML similar to the
way that you do queries on MYSQL and then use the results.

An example of a simple PHP/MYSQL setup.

<?php
$user="username";
$host="sqlserver";
$password="password";
$database="database";
$connection = mysql_connect($host,$user,$password)
or die ("Couldn't connect to the server");
$db = mysql_select_db($database,$connection)
or die ("Couldn't connect to the server");

$query = "SELECT * FROM database WHERE(Criteria)";
$result = mysql_query($query)
or die ("Couldn't execute query.");

while ($row = mysql_fetch_array($result))
{
extract($row);
echo"Set of instructions to carry out for each row in the
result";
}

?>

The question is, is it possible to do similar things with PHP/XML?
Lets say that I have an XML file located at a certain URL and I want to run
a query on it and use the results.
1. Is it possible?
2. What is the easiest way to do it?
3. How would I translate the above code to work with XML?
4. Is ther resource on the web on how to structure the queries?
Any help is much appreciated.

Rgds

Joe


Jul 17 '05 #1
7 4082
On Thu, 13 Nov 2003 15:07:34 -0000, "J Sharman" <jo*@joesharman.co.uk>
wrote:
I am fairly familiar with PHP and MYSQL and I know a little about XML.

I would like to know if it is possible to do queries on XML similar to the
way that you do queries on MYSQL and then use the results.


From what I have read, PHP5 will be able to do this, but I'm not sure
about PHP4.x

FWIW, have you thought about storing the XML in the MySQL database and
searching the XML? - MySQL does let you put regular expressions in the
queries :)

We have a couple of projects at work where we have considered putting
an entire record worth of data in XML and bunging it in a text
field...

kafooey
- ka*****@nospam.yahoo.co.uk
- http://www.pluggedout.com/blog
Jul 17 '05 #2
J Sharman:
I am fairly familiar with PHP and MYSQL and I know a little about XML.

I would like to know if it is possible to do queries on XML similar to the
way that you do queries on MYSQL and then use the results.


XQuery is a work in progress: http://www.w3.org/XML/Query

Personally I think this is a terrible idea. History has shown that
hierarchical/network databases are bad.

André Næss
Jul 17 '05 #3
I already import xml into xls and then create a csv and load into mysql, but
the reason i want to do it direct from an xml url is so that I don't have to
keep updating, the xml url is updated by others so it would save me a
massive job.

Rgds

Joe

"kafooey" <ka*****@nospam.yahoo.co.uk> wrote in message
news:j9********************************@4ax.com...
On Thu, 13 Nov 2003 15:07:34 -0000, "J Sharman" <jo*@joesharman.co.uk>
wrote:
I am fairly familiar with PHP and MYSQL and I know a little about XML.

I would like to know if it is possible to do queries on XML similar to theway that you do queries on MYSQL and then use the results.


From what I have read, PHP5 will be able to do this, but I'm not sure
about PHP4.x

FWIW, have you thought about storing the XML in the MySQL database and
searching the XML? - MySQL does let you put regular expressions in the
queries :)

We have a couple of projects at work where we have considered putting
an entire record worth of data in XML and bunging it in a text
field...

kafooey
- ka*****@nospam.yahoo.co.uk
- http://www.pluggedout.com/blog

Jul 17 '05 #4
kafooey:
We have a couple of projects at work where we have considered putting
an entire record worth of data in XML and bunging it in a text
field...


Was that the absolutely most inefficient and unreliable way you could come
up with, or can you actually do worse?

André Næss
Jul 17 '05 #5
On Thu, 13 Nov 2003 22:53:46 +0000, André Næss
<an*********************@ifi.uio.no> wrote:
kafooey:
We have a couple of projects at work where we have considered putting
an entire record worth of data in XML and bunging it in a text
field...


Was that the absolutely most inefficient and unreliable way you could come
up with, or can you actually do worse?


It was just an idea to do with keyword searching where the table
structure may not always be the same.

In the end we chose to go the "textbook" route of building the SQL
completely on the fly from analysis of the content of tables that had
factored in the creation of the tables we wanted to search...

Took a lot longer to design and write, but as you say - much more
efficient.
kafooey
- ka*****@nospam.yahoo.co.uk
- http://www.pluggedout.com/blog
Jul 17 '05 #6
J Sharman wrote:
I am fairly familiar with PHP and MYSQL and I know a little about XML.

I would like to know if it is possible to do queries on XML similar to the
way that you do queries on MYSQL and then use the results.

An example of a simple PHP/MYSQL setup.

<?php
$user="username";
$host="sqlserver";
$password="password";
$database="database";
$connection = mysql_connect($host,$user,$password)
or die ("Couldn't connect to the server");
$db = mysql_select_db($database,$connection)
or die ("Couldn't connect to the server");

$query = "SELECT * FROM database WHERE(Criteria)";
$result = mysql_query($query)
or die ("Couldn't execute query.");

while ($row = mysql_fetch_array($result))
{
extract($row);
echo"Set of instructions to carry out for each row in the
result";
}

?>

The question is, is it possible to do similar things with PHP/XML?
Lets say that I have an XML file located at a certain URL and I want to run
a query on it and use the results.
1. Is it possible?
YES. Any furthermore, you have choices.
2. What is the easiest way to do it?
Maybe you will want to decide this for yourself once checking out your
options. I'll list some down the bottom.
3. How would I translate the above code to work with XML?
//*[(criteria)]

Depending on what it is exactly you're interested in extracting and what
exactly the criteria is for extracting this, the complexity will go up.
That was an XPath query by the way.

4. Is ther resource on the web on how to structure the queries?


For XPath, do the tutorials at zvon.org
OK, stylesheet processors come with XPath built in, but you may not
neccesarily be after a full templating solution, you may just want some
data from the XML document to use in your code. And you seem to be
familiar with XSL so you know how you could use that.

The two main other ways I can think of (before discussing pure XML
databases) is SAX or DOM XPath.

SAX is probably the simplest (hence the name, Simple Api for XML).
Basically you just write a filter function which is targetted at a
particular XML construct. Lets say you want to target an ELEMENT
construct. You then write a handler function that deals with elements.
When you execute the SAX parser, it will call this function everytime it
hits an element as it "scans" down a document. Simply put an "if"
statement in the function which has your criteria, then you can add the
content to some sort of stack (array) when the condition is met.
http://www.php.net/xml
This can be tricky since may probably need to use
xml_set_character_data_handler() instead of xml_set_element_handler()
depending on your target info.

DOM is what I always use. So basically you creat a PHP DOM XML object
instance based on your document, you then use an XPath function on that
object to return you a nodeset. You can extract your data from this
nodeset. THis is generally how I do it.
http://www.php.net/manual/en/function.xpath-eval.php

My framework makes this easy. (http://xao-php.sourceforge.net)
$objDom = new DomDoc($xmlData,XAO_DOC_DATA);
$arrNodes = $objDom->arrNdXPath($criteria_xpath_expression);
and then of course, for each node you can run get_content() on it.
http://www.php.net/manual/en/functio...et-content.php

OK. The last option is the most ideal. **Pure XML databases** have
XQuery which goes beyond XPath and incorporate more SQL-type
functionality (even though XPath by itself is equal to the task). The
difference is that your query can span any amount of XML documents or
document collections :)
Unfortunately I am out of time so maybe an article on that later. The
best product I have seen so far is Tamino by Software AG but an
unlimited licence is not cheap (think tens of thousands $$$ per CPU). On
the other hand, there are 2 strong open-source options.
http://eXist.sourceforge.net
and http://xml.apache.org/xindice
GO LOOK AT THE DOCUMENTATION. You will find that these databases meet
your needs exactly. Both can be accessed from PHP scripts which
implement XML-RPC. This will be the next feature to go into my framework.

good luck.

PS.
Tamino can backend onto other information systems such as MySQL and you
can assign columns to tags/attributes or whatever in your database
documents. XQueries (and other access methods) then pick up the data in
your database completely transparently. Tamino is "THE KILLER PRODUCT"
in my opinion, but it is like Oracle or IBM in the $$$ department :(
One access method is webdav, which is great for win XP users who can
effectively "mount" in in windows explorer. Of course same applies for
unix, but windows gumbies love it :)
Jul 17 '05 #7
Take a look at Xindice, DBXml and SleepyCat, Ipedo, Xcelon and even
(now) Oracle.

All of the above support complex XPath queries over XML data.
All of the above apply any given XPath iteratively over
all xml data in a collection, rather than applying
the XPath over a singleton file. That (queries over a collection)
means they can be described as "xml databases."

Heirarchical databases are not a good choice for large
data sets, but large is a fast moving target these days.
XML is a particularly good choice for describing data with
an evolving schema (flexible schema is an oxymoron in
the relational world).

Jul 17 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL)...
2
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues...
3
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which...
0
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. ...
1
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the...
4
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the...
1
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url ...
2
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value...
3
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.