-
Posts
36 -
Joined
-
Last visited
Posts posted by eatc7402
-
-
I'm using Win 8, php 5.3.13 on a new pc for the first time.
The following simple if test should return EITHER of the choices (or so I do
beleive)
But when I run it on my new Windiows 8 PC for the first time it does
neither. Strange!
The line echo "$info_test_file<br><br>" ; does return a correct result
but the if test doesn't seem to.
================================
<?php
echo "test<br><br>" ;
$info_test_file ="../php/info_test.txt" ;
echo "$info_test_file<br><br>" ;
if (file_exists($info_test_file)) {
echo "<font color=\"#FFFFFF\">File test DOES exist!</font><br />" ;
$we_are_local = "1" ;
} else {
echo "<font color=\"#FFFFFF\">File test DOES NOT exist!</font><br />" ;
}
?>
=========================
eatc7402
-
Well I found a php function to strip out and remove whitespace and special character, and then
using strlen and strreplaece from the then know positions seems to br getting me closer
to my desired outcome. The regular expression function given in a reply DID not do what I
desired which was a TEXT SUBSTITUION.
eact7402
-
I have a number of records of the html sections of a series of Google Earth placemarks
that I managed to extract from the raw kml file. The purpose of the exersize was to then use
the simplehtmldom.php api to extract the DATA from the raw html code. Some of the process is
going well... and some is NOT.
I have found that if I modify the raw html code by entering ID attributes into the html code
the simplehtmldom api has an easy time identifying the desired data, and the data can be far
'cleaner' by entering an id attribute as 'close' to the data as possible. But doing a php text search
and replace often requires finding a 'unique' identifyable portion of the html code and THEN placing
the 'id' attribute in a nearby html tag because the desired data is nested inside a non-unique tag.
As in I can identify a SPECIFIC <td> tag section where the data i desire is located but the data
is nested inside a <font> tag inside the <td> cluster.
Hence my problem...
If I do a search in the following code...
<td><b><font size="+2" color="#FF0000">Neighborhood:</font> <font size="+2" color="#0000FF">City of Sidney</font></b></td>
I can locate the 'Neighborhood:' string because it is unique in the whole html code. Then by some
charcter counting I am desiring to put my 'id' attribute in the NEXT font tag because it surrounds
the desired data the 'City of Sidney'... as in...
<td><b><font size="+2" color="#FF0000">Neighborhood:</font> <font id="neighborhood" size="+2" color="#0000FF">City of Sidney</font></b></td>
With this modification the desired data is easily found and cleanly produced.
But the html code while all operating correctly in a web page is not all identicle from a
'whitespace' point of view AND thus my problem. If I search the following code...
<td> <b><font size="+2" color="#FF0000">Neighboorhood:</font> <font size="+2" color="#0000FF">Greenacre</font></b> </td>
While being identical as far as html is concerned if I search this code for the 'Neighboorhood:'
identifier I find it... but then attempting to place the id tag into the NEXT font tag is being
problematic. What i seem to need is a function that once the 'Neighboorhood:' string position is
identied and noted in the whole of the html code, to FIND and modify the NEXT occurance of
a font tag no matter what whitespace (or special charachters) may be occuring.
Any suggestions??
eatc7402
-
I altered my code and when I called the function WITHOUT a file path like this...
$html = file_get_html("table_data.txt");
it no longer complains about any missing arg.
So... what is the required arg if I want to fully specify the path to the file??
eatc7402
-
Ahhh yes.. an EQUAL sign... that fixed that error.. but NOW I get this...
Warning: file_get_contents(C:\eaahmpg\eatc7402\www\stations\Sydney\code able_data.txt) [function.file-get-contents]: failed to open stream: Invalid argument in C:\eaahmpg\eatc7402\www\php\simplehtmldom\simple_html_dom.php on line 39
An argument? What does it need here.. if I give it an empty argument is complains also.
$html = file_get_html("C:\eaahmpg\eatc7402\www\stations\Sydney\code\table_data.txt", "");
eatc7402
-
I am a new simplehtmldom user. It is working and the php api loads, and I can parse
when I lod data from a string. But if I attemp yo load data from a file like this...
$html->file_get_html("C:\eaahmpg\eatc7402\www\stations\Sydney\code\table_data.txt");
I receive the following error.
Fatal error: Call to undefined method simple_html_dom::file_get_html() in...
Hmmm. The function IS defined in the api.
I'm not sure where I'M going wrong here.
eac7402
-
What exactly am I trying to do??
I want to find a way to ensure that even if the user has the html page chache
turned ON, that they will get a REFRESHED copy of a particular html page
EACH time they view it, so they do not MISS updates.
eatc7402
-
Well this ALMOST seems to work. If I force the page to go to a
DIFFERENT url than the one I'm already on, it works.
But, I don't want to go to another page, I simply want to force
a REFRESH of the one I'm already on.
So, turning the new url into the page I'm already on
causes a LOOP of refreshes that continues forever. I tried to add
an exit statement but that did not seem to fix it.
Also somethings wrong with the syntax, as I see a
"; ?>
on the screen which are the last 5 characters of the echo command
not being properly recognized. Hummm.
eatc7402
-
I am sorry, but I don't understand what you are telling me.
What does PgDn have to do with REFRESH??
eatc7402
-
I have an html page that gets updated about once a week. I would like
to FORCE the browser (IE, Firefox, Netscape, or Opera) to REFRESH
when the user opens the page to ensure they receive the latest
update. Been searching around for some php
code to add to the page to accomplish this
without success. Can anyone give me
a steer to how to accomplish this. Thanks.
Dave, eatc7402
-
Yup, I thought about number 1
1) An if statement that will run one of 3 queries. If they are searching on company, you'll use the query above. If on er another query that starts there instead of on c. And if on e, then you don't have to join those other tables at all.I'll have to figure out which field (or fields) the user desires, and run
the appropriate query based on that. I can do that in my php
script beforehand.
It seems to me that all this would almost be a 'non-issue' if I
could use a subquery selecting primary keys, so suggestion
number 2, upgrading to a newer version of MySql would be a better
choice. Unfortunately that is not up to me, as the server is provided
by our website ASP. But I can always try to convince them.
eatc7402
-
To aritcus...
Nicely done... That works fine (I tested it), when the users search is
from the BOTTOM of the hierarchy upward. But when the user might search on
a field in a TOP DOWN manner they will get multiple rows returned
for each primary key. Bottom up, lets you get three rows for a fire
when searching by Engine number. But searching the same fire by address
(which is TOP DOWN) it returns NINE rows using the query articus suggested.
My users will be able to choose from ANY field, at any level,
and mix them to search by. I have to return all the rows for
an individual fire, no matter what field, or what level, the
user chooses to search by.
Would I get anywhere to create a FLAT table of all data where
most all rows would contain the top level data (including pri keys), and
those same rows would be partially filled by those fields
coming from lower level tables?
eatc702
-
Thats why in a previous reply I stated that I relized that GROUP BY 'reduces'
the query to ONE ROW per query. That is what I have already (before using
a GROUP BY) have. What I need is an..
EXPAND BY
but such a construct does not exist, exactly. That is where the discussion about
sub queries on primary keys ensued. As I have mentioned my version
of MySql does not support sub queries. I need a two step process.
Step 1. run a query to gather the subset of required primary keys.
Step 2. run a second query using the list of primary keys gathered in step one
as the selectors in the WHERE clause
That will return ALL the rows of the main table, AND the subtable with
ALL the rows that 'belong' to a single fire incident.
as in...(This is what I WANT)....
Pri_key Address Date Alarm Time Engines Ladders ------------------------------------------------------------------------------------------ 200 123 Some St. 2/11/2005 1st Alarm 1205 6-14-21 6-9 200 123 Some St. 2/11/2005 2nd Alarm 1209 19-11 3 200 123 Some St. 2/11/2005 3rd Alarm 1213 8-7 4
This is what I am getting....
200 123 Some St. 2/11/2005 2nd Alarm 1209 19-11 3
Because the search for a fire that Engine 11 responded to is kept
in a SUBTABLE (on the MANY side of the join), and hence
returns only one of the three rows that pertain to this one fire.
So, I then need to take the primary kee returned (then 200 key), and
do another query with it as the seector in the WHERE
clause to return ALL THREE ROWS that actually have the 200 value
as their key.
Hence the need for not a GROUP BY, but rather the equivalent
of an EXPAND BY. Therefor the suggestion of using a
WHERE main_table.primary_key IN('a list of keys')
Where the list of keys gets returned by Step 1 (above).
I hope that explains it.
I have two tables A main table (with primary keys)
and a subtable joined to the main table in a
ONE (the main table) to MANY (the subtable).
However searches for fields located in the subtable return
a subset of the rows that actually contain the same primary key,
because I seem to be not findinf these fields by going through
the full relationship created by the one-to-many join.
eatc7402
-
Okay, first thanks for the suggestion about using the special formmat
for code sections.
Yes, I just tried the
WHERE 'primary_key' IN ('20', '68', '40')
and that works nicely and 'possibly' removes the need for looping.
But I wonder how large the IN clause can be. There may be cases where
there may be 10,000 primary keys to search. The data we are searching
are all the major fires in Minneapolis, and St. Paul from 1911 to 2007
(today). There is a lot of data. A hundred (or more) major fires each year
for nearly a hundred years, for each city, presents a lot of keys. Thus my
question on how many items can be fit into one IN clause.
The keys may be need to be broken into subsets, and several
queries with IN clauses run, if there is a limit as to how many
entries arec allowed. ??
eatc7402
p.s. I will provide another message describing how the table are related
again using the 'code' styler. But it's late tonite here....
-
Well I don't think so as that is exactly what the GROUP BY is now
gathering, the primary key of table 'e'. Yes those are the keys for the
records I desire.... but I then need to run another query, using those
keys as the WHERE's., and that is exactly what I am attempting to avoid.
The clause says...
GROUP BY (e.fires_to_responces_link2)
and e.fires_to_responces_link2 is the PRIMARY key from Table 1 (the main
table) to Table 2, the responces table (which I misspelled, sorry).
It gathers today 32 rows. However there over 100 keys not being selected
by the query as it is written.
eatc7402
-
The MySql Reference Manual suggests a way for those servers PRIOR to Version 4.1
, and thus not supporting subquereis, there may be a way to rewrite the jois, and the sql
syntax to accomplish the desired result.
However, not being an SQL guru, could anyone suggest another way to write
a query that would gather ALL the desired primary keys and do a search on them,
without the several pages of PHP code required to accomplish the same result.
eatc7402
-
Well.... After more thought I think what I really need is not a GROUP BY,
but an EXPAND BY.... which of course does exist, at least not exactly.
Your suggestion about 'changing' the GROUP BY field to gather the
primary keys is true, and that is exactly what it is doing now. Which is why
the query runs the SAME with or without the GROUP BY.
What I really need is a SUBQUERY to gather a 'iist' of ALL the desired,
and then run the master query looking for the master keys.
But unfortunately the MySql Server version is 4.0.21, not 4.1 or
later, as as such does NOT support subqueries.
My alternate strategy is use PHP and first query to determine the
list of desired primary keys, and populate an array with those values.
Then, run a second query (in a loop) using the list of primary key as
the WHERE, thus returning all the desired rows.
That seems to me to be a very inefficient way to do it, but it
may be the only way when subqueries are not available.
If someone has an alternate method, I would love to hear it.
eatc7402
-
Okay, lets try this...
If I do a query that asks, "Which major fires did Engine 11 respond to in 2005"
I get 32 rows returned. Each returned row contains the primary key of
the main table, lets a number like, 200.
A query for a FIRE returns full relational results like this....
This means the a major fire has a GROUP of records with the key of '200',
because that major fire also has OTHER ALARMS, but engine 11 only
responded on ONE of those alarms.... like this
Pri_key Address Date Alarm Time Engines Ladders
------------------------------------------------------------------------------------------
200 123 Some St. 2/11/2005 1st Alarm 1205 6-14-21 6-9
200 123 Some St. 2/11/2005 2nd Alarm 1209 19-11 3
200 123 Some St. 2/11/2005 3rd Alarm 1213 8-7 4
ect, ect.
A search for the FIRE will return the above, ALL the related records for
one fire EVENT.
But a search for Engine 11's responses will only return ONE ROW,
with the primary key indicated, like this...
200 123 Some St. 2/11/2005 2nd Alarm 1209 19-11 3
Now using PHP I could first do a query to gather subinformation,
such as ANY records with primary keys, and THEN do a second query
with the search keys set to the primary keys discovered in the first query.
However, this could be be a LARGE query depending on how many keys
were discovered by the first query. And it seems like an inefficient way to
perform the task.
So, not being an SQL expert I thought maybe there was a way in the
first query to specify it to return ALL ROWS where the pirmary key
are equal to any rows returned by the subquery for an ENGINE lets say
which comes from a subtable, and seems to scoot around the relation
aspect of the date.
It seems I am trying to discover a way to do a 'RELATIONAL QUERY'
even though I am search for data in a subtable of related tables.
Hope that explains it better.
eatc7402
-
Yes, you are correct. A careful reading of the MySql sql syntax indicates the the
GROUP BY clause must come after the WHERE clause like this:
SELECT * FROM eatc7402.extra_alarm_fires AS e
JOIN eatc7402.extra_alarm_responces AS er
ON e.fires_to_responces_link2 = er.fires_to_responces_link2
JOIN eatc7402.companies_table AS c
ON er.responce_to_companies_link = c.responce_to_companies_link
WHERE c.engines like '%11%'
GROUP BY e.fires_to_responces_link2
ORDER BY e.city_name,
e.fire_year DESC ,
e.extra_alarms_sort_order,
er.sort_order_responces
Which fixed my SYNTAX ERROR, but NOT the FUNCTIONAL ERROR.
In other words, the same query with or whithout the
GROUP BY clause returns the exact same results.
My desire is to have the searches on, lets say, Engine
value, which in a SUBTABLE, will return ALL ROWS that correspond to
the primary key from the master table returned by the 'subsearch'..
If I am not being clear on what I desire pleasec let me know and I
will try a more explicit example.
eatc7402
-
Well, I now have this:
SELECT * FROM eatc7402.extra_alarm_fires AS e
JOIN eatc7402.extra_alarm_responces AS er
ON e.fires_to_responces_link2 = er.fires_to_responces_link2
JOIN eatc7402.companies_table AS c
ON er.responce_to_companies_link = c.responce_to_companies_link
WHERE c.engines like '%11%'
ORDER BY e.city_name,
e.fire_year DESC ,
e.extra_alarms_sort_order,
er.sort_order_responces
Which works with the JOIN lines adjusted as suggested.
(BTW the my first join syntax was simply the way
MySql Query EDITOR formultated the query).
Then I added back this:
SELECT * FROM eatc7402.extra_alarm_fires AS e
JOIN eatc7402.extra_alarm_responces AS er
ON e.fires_to_responces_link2 = er.fires_to_responces_link2
JOIN eatc7402.companies_table AS c
ON er.responce_to_companies_link = c.responce_to_companies_link2
GROUP By (e.fires_to_responces_link2)
WHERE c.engines like '%11%'
ORDER BY e.city_name,
e.fire_year DESC ,
e.extra_alarms_sort_order,
er.sort_order_responces
and I am back to my original problem.
The error near the GROUP BY clause still DOES NOT WORK.
While appreciate the comments about the JOINS, my bigger
concern is the GROUP BY issue.
eatc7402
-
I am using a MySql Server version 4.0.21.
I have 3 related tables. Table 1 (extra_alarm_fires e), Table 2
(extra_alarm_responces er), and Table 3 (companies_table c).
They contain information about major fires. Table 1 has data such as
date, time, & address of a particular fire. Table 2 contains the responces
to that PARTICULAR fire such the First Alarm, Second Alarm, Third
Alarm and the times for each alarm. Table 1 has a one-to-many relationship
to Table 2, and has a relating primary key (fires_to_responces_link2).
Table 3 holds information about the actual fire companies that responded
to each item in Table 2, such as Engine 1, Ladder 6, responded on the
Second Alarm to some fire. Table 2 and Table 3 have a one-to-one
relationship linked by key (responce_to_companies_link).
I have the following SQL query which SEEMS to work fine:
SELECT * FROM eatc7402.extra_alarm_fires e,
eatc7402.extra_alarm_responces er,
eatc7402.companies_table c
WHERE e.fires_to_responces_link2 = er.fires_to_responces_link2
AND er.responce_to_companies_link=c.responce_to_companies_link
ORDER BY e.city_name,
e.fire_year DESC ,
e.extra_alarms_sort_order,
er.sort_order_responces
This query returns all the rows for each fire as I would expect.
However, if I add this line,
SELECT * FROM eatc7402.extra_alarm_fires e,
eatc7402.extra_alarm_responces er,
eatc7402.companies_table c
WHERE e.fires_to_responces_link2 = er.fires_to_responces_link2
AND er.responce_to_companies_link=c.responce_to_companies_link
AND c.engines like '%11%'
ORDER BY e.city_name,
e.fire_year DESC ,
e.extra_alarms_sort_order,
er.sort_order_responces
Which returns EACH record that Engine 11 responded to. However each
record in this case is a SUBSET of a particular fires records. In other words I
receive only a subset of the records related by the primary keys.
So, I figured some kind of a GROUP BY clause might help out. So I
tried the following:
SELECT * FROM eatc7402.extra_alarm_fires e,
eatc7402.extra_alarm_responces er,
eatc7402.companies_table c
GROUP BY (e.fires_to_responces_link2)
WHERE e.fires_to_responces_link2 = er.fires_to_responces_link2
AND er.responce_to_companies_link=c.responce_to_companies_link
AND c.engines like '11%'
ORDER BY e.city_name,
e.fire_year DESC ,
e.extra_alarms_sort_order,
er.sort_order_responces
But instead of working I get the following error.
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'WHERE
e.fires_to_responces_link2 = er.fires_to_responces_link2 AND ' at line 5
I am ATTEMPTING to return ALL rows that contain the same primary key value
as the row returned by the ?subselection? for fires to which Engine 11 responed
to (example 2). I don?t see my error, and am NOT SURE if this even the right
way to accomplish what I desire to accomplish.
Any help would be appreciated.
eatc7402
-
Is there a limit to the length (number of chacter) I can seng from
a PHP script to a MySql server. Wondering because I need to do a
search with multiple WHERE clauses containing primary key values
and the string used to pass the SQL command may be a somewhat
lengthy string.
eatc7402
-
I believe the extract() function is what I needed. Just discovered it.
All the index names are the datatable column names and extract()
fills in the variables automatically.... just what I needed.
http://www.hudzilla.org/phpbook/read.php/5_0_0
This url I discovered really helped me work through
through this problem.
eatc7402
-
$cell_value=$my_array[1]['some_cell'];
$cell_value is blank (apparently not being assigned a value
at least an echo() of it show nothing, and using $cell_value
in a <td> cell outputs no value either.
eatc7402
Old Timer says hello!
in Introductions
Posted · Edited by eatc7402
Hi to all!
My name is David and I just turned 70 years of age. I started programming in 1972
on a Bendix G15 vacuum tube computer with punched paper tape and an IBM
Selectric typerighter as I/O devices.
I was a Senior Software Engineer for the 3M Company for 25 years (now retired).
I also have been a firefighter for 35 years.
http://www.extraalarm.org
I have been a PHP for many years.
David
eatc7402