Jump to content

Archived

This topic is now archived and is closed to further replies.

jacy

Warning: Not a valid resource

Recommended Posts

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 group

I 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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
I don't understand -- is it a valid resource or not?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Then I don't understand at all... what do you mean by "it breaks"? Obviously not invalid resource! Please clarify.

Share this post


Link to post
Share on other sites

×

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.