Jump to content

eatc7402

Members
  • Posts

    36
  • Joined

  • Last visited

Everything posted by eatc7402

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. I am sorry, but I don't understand what you are telling me. What does PgDn have to do with REFRESH?? eatc7402
  11. 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
  12. Yup, I thought about number 1 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
  13. 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
  14. 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
  15. 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....
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. $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
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.