Avatar billede nickolajmadsen Nybegynder
19. november 2011 - 22:21 Der er 6 kommentarer og
1 løsning

Warning: mysql_num_rows() expects parameter 1 to be resource

<?php
require_once("pagebegin.php");
$title = "<censored> | Søg";
require_once("header.php");
$query = "";

$cat = "";
$page = 1;
if(isset($_GET['c']))
{ $query = mysql_real_escape_string($_GET['c']); }
if(isset($_GET['p']))
{ $page = mysql_real_escape_string($_GET['p']); }
if($page <= 0) { $page = 1; }

$item_count = mysql_num_rows(mysql_query("SELECT * FROM Movie_Categories WHERE category_id = ".$query));
$page_count = ceil($item_count / 6);
$begin_limit = ($page * 6)-6;
$sql = "SELECT * FROM Movie_Categories WHERE category_id = ".$query." LIMIT ".$begin_limit.",6";
$result = mysql_query($sql);
$row = mysql_fetch_array(mysql_query("SELECT * FROM Categories WHERE id = ".$query));

$category_name = $row['name']

?>
<body>
<div id="wrapper">
    <div id="header">
       
    </div>
    <div id="body">
    <h3><?php echo $category_name; ?></h3>
        <div id="newest_uploads">
            <?php
            if(mysql_num_rows($result)>0) {
            while($row = mysql_fetch_array($result))
            {
                $movie_result = mysql_fetch_array(mysql_query("SELECT * FROM Movies WHERE id = ".$row['movie_id']));
                $thumb = "grafik/NoMini.jpg";
                $link = $movie_result['id'];
                $description = $movie_result['description'];
                $name = $movie_result['name'];
                if($movie_result['thumb']!="")
                {
                    $thumb = "thumbs/".$movie_result['thumb'];
                }
            ?>
            <div class="movie_thumb">
                <a href="movie.php?id=<?php echo $link; ?>" title="<?php echo $description; ?>"><img src="<?php echo $thumb; ?>"title="<?php echo $description; ?>"/></a>
       
        <div class="filmtitle">
        <center><?php echo $name; ?></center>
        </div>
            </div>
            <?php   
            }
            } else {
                echo "Ingen resulater.";
            }
            ?>
            <div style="display:block; clear:both; width:1px;">&nbsp;</div>
            <?php
            if($page-1>=1)
            {
                echo "<a href=\"category.php?c=".urlencode($query)."&p=".($page-1)."\">Forrige</a>|";
            }
            for($a = 1; $a <= $page_count; $a++)
            {
              if($a == $page) {
                  echo("<b>".$a."</b>|");
              } else {
                  echo("<a href=\"category.php?c=".urlencode($query)."&p=".$a."\">".$a."</a>|");
                }
            }
            if($page + 1 <= $page_count)
            {
              echo "<a href=\"category.php?c=".urlencode($query)."&p=".($page+1)."\">Næste</a>|";
            }
            ?>
        </div>
    </div>
    <div id="menu">
  <?php
  include("menu.php");
  ?>
    </div>
</div>
</body>
</html>



Hvad er det der kan være galt?
Jeg får denne fejl når jeg går direkte ind på category.php eller når jeg går ind på category.php?c='
---->

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\category.php on line 34
Avatar billede inteeeL Nybegynder
19. november 2011 - 23:12 #1
En god hjælp når du skal prøve at finde fejl i en query-string er at benytte funktionen die( mysql_error());

$result = mysql_query($sql) OR die( mysql_error());


Ovenstående skulle meget gerne udskrive en fejl i din query. Umiddelbart er det fordi du sætte din $_GET['c'] til at være en apostrof (') via linket, som jo oftest bruges til at bremse eller inficere querien. En god måde at sikre dig, at $_GET['c'] er et integer (tal) og ikke en string, er ved at benytte funktionen is_numeric - eller blot deklarere den et integer ved at tilføje (integer) foran.
Avatar billede CasperFischer Nybegynder
20. november 2011 - 00:22 #2
Mit gæt vil være at du i den nederstående kode har skrevet et forkert table navn. Altså Categories istedet for movie_categories..

:)

$result = mysql_query($sql);
$row = mysql_fetch_array(mysql_query("SELECT * FROM Categories WHERE id = ".$query));

$category_name = $row['name']
Avatar billede webweaver Praktikant
20. november 2011 - 01:53 #3
Prøv at udskifte

$item_count = mysql_num_rows(mysql_query("SELECT * FROM Movie_Categories WHERE category_id = ".$query));

med

$item_count = mysql_num_rows(mysql_query("SELECT * FROM Movie_Categories WHERE category_id = $query"));


Vær sikker på, at du ikke sammenligner en string med et integer field i databasen fx. Det kan give denne fejl.
Avatar billede webweaver Praktikant
20. november 2011 - 01:58 #4
Du skal også ændre det i det statement du lagrer i $result kan jeg se, for at det testes ordentligt, om det er det, som giver fejlen.
Avatar billede nickolajmadsen Nybegynder
20. november 2011 - 10:03 #5
Nu har jeg brugt "OR die", nu er det denne fejl :P

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\category.php on line 15
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 '\' LIMIT 0,6' at line 1
Avatar billede nickolajmadsen Nybegynder
20. november 2011 - 15:12 #6
CasperFisher, Der er en grund til at jeg har kaldt Movie_Categories, for Movie_Categories. Det er ikke en fejl :P
Så lost er jeg heller ikke :P
Avatar billede olebole Juniormester
20. november 2011 - 16:45 #7
<ole>

@nickolajmadsen: Har du ændret din SQL-sætning - eller er det stadig præcis denne:

$sql = "SELECT * FROM Movie_Categories WHERE category_id = ".$query." LIMIT ".$begin_limit.",6";

Fejlmeddelelsen i #5 ser ikke ud til at omtale denne SQL-kommando

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester