Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]poprawienie błędu
uczeń php
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 8.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
artur_dziocha
post
Post #2





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

Ostrzeżenie: (0%)
-----


nie przekazujesz żadnych danych z wyniku mysql_query do mysql_fetch_array();
Zapraszam tutaj Jak poprawnie zadać pytanie
Go to the top of the page
+Quote Post
uczeń php
post
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 8.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
gigzorr
post
Post #4





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


daj kod?
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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().
Go to the top of the page
+Quote Post
uczeń php
post
Post #6





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 8.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Wicepsik
post
Post #7





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. SELECT * FROM `pozycja_w_google`.`google`


Co to za zapytanie? (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Wicepsik 6.07.2010, 11:09:56
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Wicepsik @ 6.07.2010, 12:09:46 ) *
  1. SELECT * FROM `pozycja_w_google`.`google`


Co to za zapytanie? (IMG:style_emoticons/default/winksmiley.jpg)

Normalne. Wybiera wszystkie rekordy z tabeli google z bazy danych pozycja_w_google. Zaskoczony?
Go to the top of the page
+Quote Post
gigzorr
post
Post #9





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


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.

Ten post edytował gigzorr 6.07.2010, 11:11:51
Go to the top of the page
+Quote Post
Wicepsik
post
Post #10





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


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 (IMG:style_emoticons/default/dry.gif) mój błąd :/
Go to the top of the page
+Quote Post
thek
post
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




  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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 20:21