jacy Posted January 26, 2006 Share Posted January 26, 2006 I recently had a hard drive failure on our web server and after restoring the backup have an odd problem with a MySQL/php form that worked perfectly in the past. (I'm not much of a coder and have tried to incorporate an 'else' statement to get more error information out of MySQL but I keep getting a T_ELSE error so I'm probably not putting it in the right place. It's not in there at the moment.)The error I'm getting is "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/stj/public_html/school/ar/print-shell.php on line 42." Line 42 is the "while ($row = mysql_fetch_array($result)) [" line.I'm looking for a recommendation on where to include the else to get more error information, or anything obvious that could be causing the problem. As I mentioned, this exact identical code was working -- AFAIK -- before the HDD failure so I'm really stumped. Here's the URL: [a href=\"http://stjuliana.org/school/ar/index.php\" target=\"_blank\"]http://stjuliana.org/school/ar/index.php[/a]Here's my code (it's probably VERY inelegant but at least it used to work :P):[code]<?php $db = mysql_connect("localhost", "XXXX", "XXXX") or die("Unable to connect to MySQL Server"); mysql_select_db("stj_ar", $db) or die("Unable to select database");?><tr><td colspan="5" class="new" align="center" class="t"><b><?php if ($gobutton == "Grade") { echo("Books in Grade: $selgrade</b><br><br></td></tr>"); $result = mysql_query("SELECT * FROM list where grade = '" . $selgrade . "' ORDER BY point asc"); } elseif ($gobutton == "Point") { echo("Books of $selpoint or more AR points</b><br><br></td></tr>"); $result = mysql_query("SELECT * FROM list where point >= '" . $selpoint . "' ORDER BY point asc"); } elseif ($gobutton == "Level") { echo("Books of: $sellevel or higher reading level</b><br><br></td></tr>"); $result = mysql_query("SELECT * FROM list where level >= '" . $sellevel . "' ORDER BY level asc, point asc"); } elseif ($gobutton == "Author") { echo("Entire AR list, sorted by author's name:</b><br><br></td></tr>"); $result = mysql_query("SELECT * FROM list ORDER BY author_l asc, author_f asc, name asc"); } elseif ($gobutton == "Title") { echo("Entire AR list, sorted by book title:</b><br><br></td></tr>"); $result = mysql_query("SELECT * FROM list ORDER BY name asc"); } while ($row = mysql_fetch_array($result)) { if ($alternate == "1") { $color = "#ffffff"; $alternate = "2"; } else { $color = "#d2dbe3"; $alternate = "1"; } $sp = " "; $td = "<td class=\"l\">"; $tdb = "<td class=\"l\"><b>"; $tdc = "<td class=\"l\" align=\"center\" >"; $tdr = "<td class=\"l\" align=\"right\" >"; $tr = "<tr bgcolor=$color>"; echo("$tr $tdr $row[grade] $sp $sp </td> $td $row[name]</td> $td $row[author_l], $row[author_f]</td> $tdr $row[level] $sp $sp </td> $tdr $row[point] $sp $sp </td></tr>"); } ?>[/code]Many thanks for any suggestions on how to fix this. ~Jacy Quote Link to comment Share on other sites More sharing options...
fenway Posted January 26, 2006 Share Posted January 26, 2006 Well, sounds like there's a problem with the query. Before the while() loop, you should see if there were any errors (use mysql_error() to check), and also verify that $result is a valid resource -- which, apparently, it is not. Don't be misled by the HDD failure -- it's probably a red herring, unless it managed to corrupt your tables. Quote Link to comment Share on other sites More sharing options...
jacy Posted January 26, 2006 Author Share Posted January 26, 2006 Thanks for the speedy reply!After a bunch more investigating I think there's a problem with my html. I've pasted the SQL queries directly into phpMyAdmin and everything runs just fine there. And I can pull the entire DB in on the first request -- [a href=\"http://stjuliana.org/school/ar/print-old.php\" target=\"_blank\"]http://stjuliana.org/school/ar/print-old.php[/a] -- with the default sorting and grouping, so I know the DB is not corrupt.When I start to play with the sorting and grouping within my html, either in URLs or with form submits, is where it falls down. Any of the grouped/sorted queries below sort/group perfectly within phpMyAdmin, but within my html all I ever get is the default view ($result = SELECT * FROM list ORDER BY name asc), no matter how I try to sort and groupI know for a fact it was working at one point in the past; last time I can remember checking it was November of 2005, so I'm really stumped as I haven't edited the bulk of this file in ages. I use Dreamweaver, though, and had some trouble with some editable library/template sections going bad on this entire site so I wonder if Dreamweaver didn't rewrite something out of here that I just can't see.[code]$result = mysql_query("SELECT * FROM list ORDER BY grade asc, name asc");$sort = "Grouped by grade and then sorted by book name";if ($view == "name_s") { $result = mysql_query("SELECT * FROM list ORDER BY name asc"); $sort = "Sorted by Book Name";}elseif ($view == "author_s") { $result = mysql_query("SELECT * FROM list ORDER BY grade asc, author_l asc"); $sort = "Grouped by Grade, Sorted by Author";}elseif ($view == "author_ns") { $result = mysql_query("SELECT * FROM list ORDER BY author_l asc"); $sort = "Sorted by Author";}elseif ($view == "level_s") { $result = mysql_query("SELECT * FROM list ORDER BY grade asc, level asc"); $sort = "Grouped by Grade, Sorted by Book Level";}elseif ($view == "level_ns") { $result = mysql_query("SELECT * FROM list ORDER BY level asc"); $sort = "Sorted by Book Level";}elseif ($view == "point_s") { $result = mysql_query("SELECT * FROM list ORDER BY grade asc, point asc"); $sort = "Grouped by Grade, Sorted by Point Value";}elseif ($view == "point_ns") { $result = mysql_query("SELECT * FROM list ORDER BY point asc"); $sort = "Sorted by Point Value";}[/code]~Jacy Quote Link to comment Share on other sites More sharing options...
fenway Posted January 26, 2006 Share Posted January 26, 2006 I don't see how that solved the problem, but OK -- and the issue is PHP-related, not HTML-related. If you're just getting the default search, then your $view variable isn't what you think it is. Quote Link to comment Share on other sites More sharing options...
jacy Posted January 26, 2006 Author Share Posted January 26, 2006 No, it didn't solve the problem -- I can still reproduce the original error. I have a couple different versions of this basic page out there; one that's form inputs for the sorting and the other that's just links, but all incorporate some sort of view variable.Wonder if the fact that a newer version of php is now running on my server could possibly be at fault. As I said, last known good output was in November of 2005, and in December a new php build was installed, which broke a couple other things, which is why i remember. I never throught to check this page in December.~Jacy Quote Link to comment Share on other sites More sharing options...
fenway Posted January 26, 2006 Share Posted January 26, 2006 I don't understand -- is it a valid resource or not? Quote Link to comment Share on other sites More sharing options...
jacy Posted January 28, 2006 Author Share Posted January 28, 2006 Sorry for the confusion.There are two versions of HTML and PHP that I've used for this particular page; one is printer-friendly and the other not.When I use the first code example mentioned above I receive the invalid resource error. However, I can copy and paste the queries within that example directly into phpMyAdmin and NOT get an invalid resource error so I know it's not really an invalid resource. That particular example uses a form and buttons for user input.The second code example is one I've also used in the past and the first run of this (default view is to see every record in the table) works perfectly. When I attempt to use any of the sorting options (the $view) it breaks. This one uses text links with the desired $view passed in the URL to handle the sorting query.Maybe I should just ditch the code entirely and start from scratch.~Jacy Quote Link to comment Share on other sites More sharing options...
fenway Posted January 28, 2006 Share Posted January 28, 2006 Then I don't understand at all... what do you mean by "it breaks"? Obviously not invalid resource! Please clarify. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.