Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]poprawienie błędu
Forum PHP.pl > Forum > Przedszkole
uczeń php
Jak można poprawić ten błąd i co on oznacza , który wyświetla mi się na kodzie źródłowym strony ? Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /media/disk/projekty_www/staz/wyswietlanie.php on line 20.
artur_dziocha
nie przekazujesz żadnych danych z wyniku mysql_query do mysql_fetch_array();
Zapraszam tutaj Jak poprawnie zadać pytanie
uczeń php
Problem pojawia się gdy drugi raz odwołuje się do tego samego zapytania odwołując się do tej samej tabeli przy drugim wywołaniu funkcji mysql_fetch_array($wyniki), bo jak pierwszy raz się odwołuje to zapytania sql i tej tabeli przy wykorzystaniu mysql_fetch_array($wyniki) to wyniki są zwracane poprawnie.
gigzorr
daj kod?
thek
Funkcje mysql_fetch_* (array,row, assoc) pobierają z wyniku wiersz i przesuwają wskaźnik wyniku o 1. Jeśli więc doszedłeś do ostatniego to następne wywołanie tych funkcji zwróci FALSE. By tego uniknąć, musisz odpowiednio ustawić wskaźnik rekordu. Zapewne chcesz by znowu był na początku. Polecam zobaczyć funkcję mysql_data_seek().
uczeń php
Kod
function wysw()
   {
     podlaczeniebd();
    
     $zapyt = "SELECT * FROM `pozycja_w_google`.`google` ";

     $zapytaniegoogle = mysql_query($zapyt);


      $danedoaktualizacji = array(array());
      
   //  echo '<table border="1"><tr><td>L.P.</td><td>SERWERY GOOGLE</td><td>STRONY WWW</td><td>SŁOWA FRAZY</td><td>DATA</td><td>POZYCJA W GOOGLE</td></tr>';


     $rek = 0;



      

   while($google = mysql_fetch_array($zapytaniegoogle))
             {                                  
              $danedoaktualizacji[$rek][0] = $google['SERWERY GOOGLE'];   $danedoaktualizacji[$rek][1] = $google['STRONY WWW'];  $danedoaktualizacji[$rek][2] = $google['SLOWA FRAZY']; $danedoaktualizacji[$rek][3] = $google['L.P.'];



      



        //    echo '<tr><td>'.$google['L.P.'].'</td><td>'.$google['SERWERY GOOGLE'].'</td><td>'.$google['STRONY WWW'].'</td><td>'.$google['SLOWA FRAZY'].'</td><td>'.$google['DATA'].'</td><td>'.$google['POZYCJA W GOOGLE'].'</td></tr>';

            $rek ++;
            }

            echo '</table>';

          
           return $danedoaktualizacji;
    
       }
i ta funkcja działa dane zwraca mi prawidłowe a teraz to funkcję chciałbym wykorzystać do wyświetlania danych
Kod
$zapytanie = "SELECT * FROM pozycja_w_google.google;";

   $wynik = mysql_query($zapytanie);

    print "<!-- Zapytanie;  $zapytanie -->";  $rek = 0;

print '<form action="wyswietlanie.php" method="post"><select name= "serwery_google">';



  while($google = mysql_fetch_array($wynik)) {


       echo $google[$rek]['SERWERY GOOGLE'];

           $poka_ser = $google[$rek]['SERWERY GOOGLE'];
    
        

   print  '<option value="'.$poka_ser.'">'.$poka_ser.'</option>'; $rek++; }

print '</select></form>';
to samo select dla 'STRONY WWW' gdzie po wyborze odpowiednich pól select wyświetlą mi się właściwe dane dla 'serwery google' i 'strony www' problem jest taki <option></option> jest puste a albo pojawiają się dziwne wartości.
Wicepsik
  1. SELECT * FROM `pozycja_w_google`.`google`


Co to za zapytanie? winksmiley.jpg
phpion
Cytat(Wicepsik @ 6.07.2010, 12:09:46 ) *
  1. SELECT * FROM `pozycja_w_google`.`google`


Co to za zapytanie? winksmiley.jpg

Normalne. Wybiera wszystkie rekordy z tabeli google z bazy danych pozycja_w_google. Zaskoczony?
gigzorr
zobacz jak powinno wygladac , jak chcesz wyswietlac dane , jesli dobrze zrozumialem:

http://php.net/manual/en/function.mysql-fetch-array.php

i daj kod w dobre znaczniki , w tym przypadku php , bo nie da sie tego czytac.
Wicepsik
Cytat(phpion @ 6.07.2010, 12:10:52 ) *
Normalne. Wybiera wszystkie rekordy z tabeli google z bazy danych pozycja_w_google. Zaskoczony?

Oj.. tak. Nigdy się z czymś takim nie spotkałem dry.gif mój błąd :/
thek
  1. $rek = 0;
  2. while($google = mysql_fetch_array($zapytaniegoogle) ) {
  3. $danedoaktualizacji[$rek][0] = $google['SERWERY GOOGLE'];
  4. $danedoaktualizacji[$rek][1] = $google['STRONY WWW'];
  5. $danedoaktualizacji[$rek][2] = $google['SLOWA FRAZY'];
  6. $danedoaktualizacji[$rek][3] = $google['L.P.'];
  7. $rek ++;
  8. }

  1. $rek = 0;
  2. while($google = mysql_fetch_array($wynik)) {
  3. echo $google[$rek]['SERWERY GOOGLE'];
  4. $poka_ser = $google[$rek]['SERWERY GOOGLE'];
  5. $rek++;
  6. }
Maksymalnie wykroiłem co się dało niepotrzebnego. Pierwsze działa ok i prawidłowo. Ale popatrz co masz w drugim. Skąd wytrzasnąłeś $google[$rek]['SERWERY GOOGLE'] ? Skąd Ci się w zmiennej wyniku $google pobranej mysql_fetch_* znalazła $rek? Zmień na
  1. echo $google['SERWERY GOOGLE'];
  2. $poka_ser = $google['SERWERY GOOGLE'];
... i myśl następnym razem co robisz zamiast walić Copy-Paste.

Twój błąd wynika z innego podejścia do danych. W 1 przypadku wszystko wrzucałeś do tablicy. Inna sprawa, że też bezsensownie. Można było użyć składni, która redukuje potrzebę użycia zmiennej $rek:
  1. while($google = mysql_fetch_array($zapytaniegoogle) ) {
  2. $danedoaktualizacji[] = array( [0] => $google['SERWERY GOOGLE'], [1] => $google['STRONY WWW'], [2] => $google['SLOWA FRAZY'], [3] => $google['L.P.'] );
  3. }
. W 2 wariancie kod od razu waliłeś wewnątrz pętli przez echo do wyświetlania i $rek też było zbędne. Bo po czym miałbyś iterować na zewnątrz?
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.