Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Typowy problem, nietypowe rozwiązanie - stronnicowanie
Forum PHP.pl > Forum > Przedszkole
MateuszS
Witam. Zapewne wszyscy z Was znają błąd lub się z nim spotkali:

Kod
[b]Warning[/b]:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [b]C:\xampp\htdocs\panel\index.php[/b] on line [b]86


Błąd ten sam, ale problem zawsze inny i inne rozwiązanie. Pobrałem z jakiejś strony stronnicowanie artykułów i dostosowałem.

  1. <?php    
  2.  
  3. include("baza.php");
  4.                    
  5. $start = $_GET['start'];
  6. $na_stronie = 3;
  7.  
  8. $odpytanie = mysql_query("SELECT data,nick,tytul,tresc FROM `news` LIMIT ".$start.",".$na_stronie."");
  9. while($wynik = mysql_fetch_array($odpytanie))
  10. {
  11.    echo '<div class="indexnews">';
  12.    echo '<p class="news"><b>Autor: </b>' . $wynik['nick'] . ',<b> Tytuł: </b>' . $wynik['tytul'] . '</p>';
  13.    echo '</div>';
  14.    echo '<div class="indexnews2">';
  15.    echo '<p class="news2"><b>Data: </b>' . $wynik['data'] . '</p>';
  16.    echo '</div>';
  17.    
  18.    echo '<div class="indexnews3">';
  19.    echo '<p class="news3">' . $wynik['tresc'] . '</p>';
  20.    echo '</div>';    
  21. }    
  22.  
  23. $wykonaj = mysql_query("SELECT * FROM `news`");
  24. $znaleziono = mysql_num_rows($wykonaj);
  25.  
  26. if($znaleziono>$na_stronie)
  27. {
  28.    echo '<center><font size="3">Strona ';
  29.        for($i=0; $i<ceil($znaleziono/$na_stronie); $i++)
  30.    echo '<a href="index.php?start='.($i*$na_stronie).'">'.($i+1).'</a> | ';
  31.    echo '</font></center>';
  32. }  
  33.  
  34.    echo '<br /><br /><br /><br />';            
  35.                        
  36. ?>


I co tu począć. Prześledziłem 100 artykułów o tym błędzie jednak byka nie znalazłem jeszcze... może wy znajdziecie?
[/b]
sowiq
Wydrukuj sobie zapytanie, które wykonujesz, tj.
  1. <?php
  2. echo "SELECT data,nick,tytul,tresc FROM `news` LIMIT ".$start.",".$na_stronie.""
  3. ?>
i odpal np. w phpMyAdmin.

Poza tym poczytaj o MySQL Injection, bo pewnego dnia się możesz zdziwić smile.gif
MateuszS
Efekt wydrukowania:

Kod
SELECT data,nick,tytul,tresc FROM `news` LIMIT 0,3
erix
A sprawdzałeś, co zwraca mysql_error" title="Zobacz w manualu PHP" target="_manual?
MateuszS
Dałem

  1. <?php
  2. ?>


i nic nie pokazało prócz błędu zamieszczonego wyżej.

PS. Gdy dopisuje do linku index.php?start=0 pokazuje mi normalnie newsy itp. Tylko gdy pierwszy raz odpalam strone na index.php wywala ten error
Pilsener
  1. SELECT DATA,nick,tytul,tresc FROM `news` LIMIT 0,3
- nie masz albo pola data, albo nick, albo tytul, albo tresc, albo któreś inaczej się nazywa etc. A na pewno problem dotyczy dokładnie tego zapytania? A spróbuj bez limitu, czy się wykona poprawnie.

I jak chcesz pracować z bazą, a w dodatku jesteś początkujący, to zapomnij o php myadmin i ściągnij sobie jakiś program typu front albo navicat - będziesz mógł tworzyć skomplikowane zapytania klikając myszką oraz testować ich wykonywanie się, a dopiero na końcu je wkleisz do php - tak jest moim zdaniem wygodniej, zwłaszcza, gdy przyjdzie Ci pobierać dane z 20-stu tabel.
nospor
Cytat
i nic nie pokazało prócz błędu zamieszczonego wyżej.

mysql_error() masz dac po mysql_query() a nie przed....

Cytat
Tylko gdy pierwszy raz odpalam strone na index.php wywala ten error
Bo wtedy nie masz zmiennej $start i masz nic w zapytaniu...

  1. <?php
  2. if (isset($_GET['start']))
  3. $start = $_GET['start'];
  4. else
  5. $start = 0;
  6. ?>

i po sprawie
MateuszS
tak problem lezy w zapytaniu bo gdy bawie sie limitem blad znika

  1. <?php
  2. $odpytanie = mysql_query("SELECT data,nick,tytul,tresc FROM `news` LIMIT ".$start.",".$na_stronie."");
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.