php-windows Digest 15 Nov 2011 21:53:22 -0000 Issue 3978
Topics (messages 30722 through 30723):
Re: junk from my forms output
30722 by: Toby Hart Dyke
No errors reported -- but no positive data either.
30723 by: BILL MUDRY
Administrivia:
To subscribe to the digest, e-mail:
php-windows-digest-subscr...@lists.php.net
To unsubscribe from the digest, e-mail:
php-windows-digest-unsubscr...@lists.php.net
To post to the list, e-mail:
php-wind...@lists.php.net
----------------------------------------------------------------------
--- Begin Message ---
What are you writing your php files with? It looks like you're using a word
processor or Front Page, and saving as RTF or whatever nasty format FP uses.
You have to save as a raw ASCII text file.
Toby
-----Original Message-----
From: hanson zhou [mailto:hmz...@gmail.com]
Sent: Wednesday, October 19, 2011 5:26 PM
To: php-wind...@lists.php.net
Subject: [PHP-WIN] junk from my forms output
I have the following in a file called "hello.php" in my htdocs directory
(Apache webroot).
<form action="action.php" method="post"> <p>Your name: <input type="text"
name="name" /></p> <p>Your age: <input type="text" name="age" /></p>
<p><input type="submit" /></p> </form>
as well as the following in a file "action.php", also in the same directory.
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.
When I click on the submit button of the form in hello.php, it should say
something like:
"Hi Hanson. You are 33 years old." But instead of just saying that it also
appends a bunch of junk at the beginning like this:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0
Arial;}} {\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\f0\fs20 Hi
hanson .\par You are 33 years old.\par }
Can someone help me with this? Why does my forms reply from action.php contain
so much junk? I have a Windows installation of PHP and Apache.
thanks,
-Hanson
--- End Message ---
--- Begin Message ---
After a few months working on another website, I am back finishing a list of
coding
tasks on my TAXA Wood Knowledge Base. One of the most important pages in the
site is the one that lists (so far) over 15,000 different botanical names of
woods.
Each single name listing is also linked to the corresponding data page for that
wood where details are given on each wood. On such data pages are wood photo
scans of as many as I can supply (So far about 2,100 out of the 15,000 listed).
Rather than cluttering each page with more information than many readers may
want, I have three pop-up pages on each data page to show more colour photos,
UV fluorescence photos and photomicro photos under the microscope.
With only that, readers looking at the large list of species would find all
these scans and photos by coming to them randomly with many species having
none. To make this far easier to actually pick which woods have scans, uv
photos and so on I am adding "look ahead" icons. If a listed wood has any of
these categories have any of these scans on their data pages or on the pop-up
pages, there is or will be an icon beside the botanical name to make it easy to
realize there is and then visit those.
If any of this seems too complex to understand right away, the site is at
www.woodsoftheworld.org under the menu item Woody Species. To drop right out of
the frames environment directly, the page is directly at
www.woodsoftheworld.org/alphaspecies.php.
The color photos are showing fine for a few months already as are the camera
icons
beside the species names for some months now. I have about 100 UV fluorescence
photos that are also showing off ok but I am now working on placing a small
circle with a "UV" in it for all UV photos on woods that do shine under UV.
That is where I have come up with more difficulties than I ever expected.
Now at least I hope this is enough to illustrate what I am trying to do. One
reason it was easy to get the camera icon working well is because the field
where addresses to pick up the camera icon as needed is in the same 'species'
file as is needed to store all basic information on each species. After that
file grew to at least 18 fields, I thought that maybe I should finally pay some
attention to some normalization and store the UV photo addresses in its own
table of 'uvphotos'. It has only 4 fields (uvID, speciesID, species_name and
uv_filename.
The 15,000 names are extracted from the species table and displayed with a
while loop. Each time through that loop it posts the next species name, so I
found it necessary to run a SELECT query within that loop to find if there is
any UV photo address per listed species and to echo out the UV icon if there
is. Because these photo addresses are stored in a separate table, I had to use
a JOIN in the SELECT STATEMENT. To test for the right statement since you
cannot use $variables in MySQL like you can in PHP, I chose a species name that
I knew did have a uv photo.
I found that the query that would find the one unique address to use is:
$uvquery = 'SELECT u.uv_filename
FROM `uvphotos` u
JOIN `species` s ON u.species_name=s.species_name
WHERE u.species_name="$species_name"';
First, then, this ran without any error reported and listed all the species that
do have uv photos for which the uv icon should show. By substituting the
$species_name with one that really does have a uv photo such as Acacia
aneura,the query does properly bring forth the address where the photo is
stored.
In the page (alphaspecies.php), the $uvquery runs fine without errors reporting
and so does $uvresult = mysql_query($uvquery). Running .....
$uvrow=mysql_fetch_array($uvresult, MYSQL_ASSOC); should work ok, too
but
when I try to use extract($uvrow) it constantly complains that it cannot find a
valid array to expand. Doing a row count shows that there are no rows in the
query results even though they list beautifully running the query in phpmyadmin.
The code I have now that I will paste below runs ok without reported errors but
a debug statement reports "No uv photo" both for the ones that do not have one
AND for those that do! <argh!>. I cannot find why it does not pick up the
existence of a uv photo where they do exist. It should be posting a uv icon
beside each species that does have one.
Any code that is related on the issue starts at about line 180 or so. Here,
then is the code for the whole page. You will find quite a few commented out
lines that were used just to understand and try to debug what was going on.
================================================================================
<code:php>
<?php
session_start();
//$_SESSION['$s'] = "speciesname";
error_reporting(-1); // Report every single error going.
ini_set('display_errors', 1); // Show them in-line.
set_time_limit(0); // No time limit.
?>
<HEAD>
<TITLE>TAXA: Display of species by alphabetical groups</TITLE>
<STYLE type="text/css">
A:link { text-decoration: none }
A:active { text-decoration: none }
A:visited { text-decoration: none }
</STYLE>
</HEAD>
<BODY>
<?php
//////////////////////////////////////////////////////////////////////////////////////
// File: alphaspecies.php
// Date last revision: June 17, 2010
// Description: This file offers the user to pick an alphabet that limits the
species
// shown to those having botanical namss starting with that alphabet
and
// displays all the data and picture(s) on one chosen species
// It also will hold the icons that look ahead to let viewers know if
each species
// has a scan picture, additional pictures, a UV fluoresence picture
and/or a
// photomicro photo
//
//
//
//
//
//
//
//////////////////////////////////////////////////////////////////////////////////////
//$speciesname = "";
//$letter = "";
$uv_filename = "";
//rowcount = "";
// Assuming your file name is "index.php"; set up the base link for all pages
$baseLink = "alphaspecies.php?letter=";
////////////////////////////////////////////////////////////////////////////////////////
// CONNECT TO THE DATABASE
////////////////////////////////////////////////////////////////////////////////////////
include ("connecttotaxa.php");
$connection = mysql_connect($hostname, $username, $password)
or die("Unable to connect to database server");
$db = mysql_select_db($dbname, $connection)
or die("Unable to connect to database");
////////////////////////////////////////////////////////////////////////////////////////
// HOPEFULLY CONNECTED TO THE DATABASE
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
//
// This section sets up a choice of alphabet for users to pick to cut down on
the volume
// of species data.
//
////////////////////////////////////////////////////////////////////////////////////////
// SET UP A LETTER DISPLAY AND PICKING AREA.
echo "<table border='3'cellpadding='20' bgcolor='ivory' align='center'><tr><td
valign='top'>";
//$letter=="";
// Printing alphabet with links
echo "<h3 align='center'>Pick Species by Alphabet</h3>";
for($a=65;$a<(65+26);$a++)
{
print "<a href=\"".$baseLink.chr($a)."\">".chr($a)."</a>\n";
}
$letter = "";
@$letter = $_GET["letter"];
//echo "\$letter on line 27 is - $letter.<BR /> ";
echo "<br />";
echo '<div ID="letterbox" align="center">';
if (isset($_GET["letter"]) && $_GET["letter"] != "")
{
Echo "<font color='888'>You picked letter $letter <br /></font>";
}
else {
Echo "Please choose a letter <br />";
};
echo "</div>";
//$letter = $_GET["letter"];
//Echo "\$letter is still readable as $letter <br />";
// Close off the display alphabet box
echo "<br></td></tr></table><br />";
////////////////////////////////////////////////////////////////////////////////////////
// END OF ALPHABET CHOOSING AREA
////////////////////////////////////////////////////////////////////////////////////////
// Now pick up a user chosen alphabet
////////////////////////////////////////////////////////////////////////////////////////
// --------------------------- START OF MAIN DISPLAY TABLE
----------------------- //
////////////////////////////////////////////////////////////////////////////////////////
echo "<table border='3'cellpadding='20' bgcolor='ivory' align='center'><tr>";
echo "<td valign='top' style='white-space: nowrap'>";
///////////////////////////////////////////////////////////////////////////////////////
// Now that the user has chosen a letter, go get the species starting with that
letter
///////////////////////////////////////////////////////////////////////////////////////
$alphaquery = "SELECT * FROM species WHERE species_name LIKE '".$letter."%'
order by species_name"; //
//Echo "Line 124 \$species_name is - $species_name<br>\n";
$result5 = mysql_query($alphaquery)
or die(mysql_error());
//var_dump($result5);
$row=mysql_fetch_array($result5, MYSQL_ASSOC);
//Echo "\$row is - $row<br>\n";
Echo MYSQL_ERROR();
///////////////////////////////////////////////////////////////////////////////////////
// Set up the query to look ahead whether or not the present species has a UV
picture
///////////////////////////////////////////////////////////////////////////////////////
/*
$numrows = mysql_num_rows($uvresult) or die (mysql_error());
//ECHO "Number of rows is - $numrows<br />";
//$row = mysql_fetch_array($uvresult);
//ECHO "\$uvrow on line 104 is - $uvrow<BR />";
//ECHO "The path and file name, line 109 is $uvrow('uv_filename')<BR />";
*/
$l=0;
$m=1;
$n=0;
echo "<H4 align='center'>Each link leads to more information on the chosen
botanical species</h4>";
echo "<table border='3'cellpadding='20' bgcolor='ivory' align='center'><tr>";
echo "<td valign='top' style='white-space: nowrap'>";
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Now as each species is generated in a list of the woody species of the
chosen genus, we want to show a small camera
// icon (as images/cameraicon01.jpg) in front of each listed species ONLY if
the species has a scan or photo
// stored in the 'species' table under column 'picture_filename1'. The program
has to look ahead in the 'species'
// table for all of them to see which ones should and which should not have a
camera icon beside them. The whole
// idea is to let readers be informed on which choices include a scan or photo
before choosing. If there is no
// null or empty value in that location, it is assumed that there is a scan to
view.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Set up image name and path for showing a camera icon for species that have a
scan picture
$camera_icon = "images/cameraicon01.jpg";
$showcamera = "<img src = $camera_icon>";
// Set up image name and path for showing a UV icon for species that have a UV
fluorescence photo
$uv_icon = "images/uv.gif";
$showuv = "<img src = $uv_icon>";
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// LOOPING THROUGH SPECIES STARTS HERE
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//var_dump($result5);
if($result5)
{
while($row5 = mysql_fetch_array($result5))
{
extract($row5);
//Echo "Line 206 \$species_name is - $species_name<br>\n";
//$species_name = 'Acacia aneura'; //Debug statement to set species_name
temporarily
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// UV Lookahead section starts
/////////////////////////////////////////////////////////////////////////////////////////////////////////
$uvquery = 'SELECT u.uv_filename
FROM `uvphotos` u
JOIN `species` s ON u.species_name=s.species_name
WHERE u.species_name="$species_name"';
//Echo "\$speciesname at line 215 is $species_name"; Debug statement
$uvresult = mysql_query($uvquery)
or die(mysql_error());
//var_dump($uvresult);
//Echo "<br />";
$uvrow=mysql_fetch_array($uvresult, MYSQL_ASSOC);
//extract($uvrow);
//Echo "Line 226 - \$uv_filename is - $uv_filename<br />";
$rowcount = mysql_num_rows($uvresult);
//var_dump($rowcount);
//Echo "<br />";
//Echo "Number of UV rows, line 235 is $rowcount<br />";
//if(mysql_num_rows($uvresult) > 0){
//$uvrow = mysql_fetch_array($uvresult, MYSQL_ASSOC);
//ECHO "\$uvrow on line 237 is - $uvrow<BR />";
};
//$uv_filename = $uvrow['uv_filename'];
//ECHO "\$uvrow on line 240 is - $uvrow<BR />";
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// UV Lookahead section ends
/////////////////////////////////////////////////////////////////////////////////////////////////////////
$l++; // Increment counter to set maximum columns lengths
//echo "'\$m is - '.$m";
if ($l>100)
{
echo "</td>";
echo "<td valign='top' style='white-space: nowrap'>";
$l=0;
};
$picture_filename1 = trim($picture_filename1);
$uv_filename = trim($uv_filename);
echo '<a href="displayspecies.php?&species_name='.$species_name.' ">';
echo "<font color=grey>$m</font> - $species_name";
echo"</a>.";
if ($picture_filename1)
echo "$showcamera";
// the only time it should show a camera icon
//echo "<br />\$uv_filename on line 261 is - $uv_filename";
//echo "Line 263 - The UV filename is $uv_filename<br />";
if ($uv_filename)
{
echo $showuv; // the only time it should show a UV icon
};
echo "<br>\n";
//ECHO "$showuv"; // hard coded test to place UV icon on all
/*
*/
$m++; // counter to increment for the next species
$n++; // counter to increment to the next uv photo
}
else echo "No species found";
//}
////////////////////////////////////////////////////////////////////////////////////////////////////
//
// END OF DISPLAY LOOP
//
////////////////////////////////////////////////////////////////////////////////////////////////////
//Echo "species_name is - $species_name<br>\n";
echo "<br></td></tr></table><br>";
///////////////////////////////////////////////////////////////////////////
// ---------------------- End of display table. ---------------------------
///////////////////////////////////////////////////////////////////////////
Echo "<br><hr width='400'>";
echo "<H3 align = 'center'>End of Listing for All Woody Species starting with
$letter</H3>";
/////////////////////////////////////////////////////////////////////////////////////////////
// ----------------------------- Total End of Species Listing
-------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
$letter="";
//$species_name="";
$uv_filename="";
?>`
<!-- -------------------- The following script is needed by GoDaddy for
tracking stats on traffic ---------------->
<SCRIPT type="text/JavaScript">
var TFN='';var TFA='';var TFI='0';var TFL='0';var
tf_RetServer="rt.trafficfacts.com";var
tf_SiteId="44ge27e3f31f6297ededc5ee9d3355117dbc06520fah26";var
tf_ScrServer=document.location.protocol+"//rt.trafficfacts.com/tf.php?k=44ge27e3f31f6297ededc5ee9d3355117dbc06520fah26;c=s;v=5";document.write(unescape('%3Cscript
type="text/JavaScript" src="'+tf_ScrServer+'">%3C/script>'));
</SCRIPT>
<NOSCRIPT><IMG
src="http://rt.trafficfacts.com/ns.php?k=44ge27e3f31f6297ededc5ee9d3355117dbc06520fah26"
height="1" width="1" alt=""/></NOSCRIPT>
</BODY>
</HTML>
</code>
================================================================================
running the query:
SELECT u.uv_filename
FROM uvphotos u
JOIN species s ON u.species_name = s.species_name
WHERE u.species_name = "Acacia aneura"
produces the proper answer only the uv_filename field of
uva/acacia_aneura-mulgaUV02.jpg
At this point, I am stumped to understand why the code I have written does not
successfully bring forth all the photo addresses where they do exist amidst the
15,000 species reported. You can view this right at the output page.
Once this is fixed, it will be much easier to complete the look aheads for the
remaining photomicro and more photos areas --- and a lot closer to finally
finishing all the coding for what I planned to be version 1 of the website.
As always, I am indebted and thankful for your help.
Bill Mudry
Mississauga, Canada.
--- End Message ---