Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Po przenosinach skrypt sypie błędami
Forum PHP.pl > Forum > Przedszkole
ericsson
Witam serdecznie!

Swoją przygodę z php zacząłem kilka ładnych lat temu, początkowo działania na z phpBB by Przemo, Joomla! i inne takie smile.gif smile.gif Kilka razy przenosiłem fora internetowe znajomym, przeniosłem parę stron na World Pressie i jakoś zawsze udawało się rozwiązywać bezboleśnie pojawiające się problemy ale ostatnio stanąłem przed nowym wyzwaniem i walczę z tym za pomocą google'a i finalnie postanowiłem poszukać pomocy u ludzi którzy mają dużo większą wiedzę od mojej, jednakże przyznaję iż jestem bardzo cieńki w te klocki...

Skrypt który przeniosłem działał bezawaryjnie na pewnym hostingu, jednakże zmuszony jestem go przenieść gdzieś indziej i o ile zaadoptowanie ścieżek konfiguracja bazy itd poszło bez żadnego problemu to na nowym hostingu skrypt zaczął sypać błędami

pierwszy błąd:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /public_html/obsluga/dziennik.php on line 60

Linie w pliku:

  1. 56)######### PETLA - DLA KAZDEJ KABINY
  2. 57)
  3. 58)
  4. 59)while( $kabrow = mysql_fetch_assoc( $kabresult ) )
  5. 60) {
  6. 61) $kab++;
  7. 62) $kabina_id = $kabrow[ "id" ];
  8. 63) array_push( $kab_id, $kabina_id );
  9. 64)
  10. 65) $kabina_nazwa = $kabrow[ "nazwa" ];
  11. 66) array_push( $kab_nazwa, $kabina_nazwa );
  12. 67) #echo( " ---------------------------------- \n kabina: $kabina_id $kabina_nazwa \n\n" );
  13. 68)
  14. 69) $cstart = split( ':', $kabrow[ "czynna_start" ] );
  15. 70) $h_start = $cstart[0];
  16. 71) $m_start = $cstart[1];
  17. 72) $ckoniec = split( ':', $kabrow[ "czynna_koniec" ] );
  18. 73) $h_koniec = $ckoniec[0];
  19. 74) $m_koniec = $ckoniec[0];
  20. 75)
  21. 76) $dz[ $kab ] = array( );


W lini 60 wg programu ezHtml znajduje się tylko znak ' { ' Myślałem że jest zbędny/błędnie użyty ale jak go usunąć to skrypt wykazuje inny błąd:

Parse error: syntax error, unexpected '}' in /public_html/obsluga/krakow/dziennik.php on line 531

  1. 531 }; # while h, m


Czyli jest potrzebny questionmark.gif

Zatem pytanie gdzie to to kuleje ?
vonski
Tak, ten nawias jest dość istotny smile.gif
Problem tkwi w linijce wcześniej, mianowicie

  1. while( $kabrow = mysql_fetch_assoc( $kabresult ) )


a dokładniej w zmiennej $kabresult, która ma zapewne wartość FALSE, a powinna być zasobem (rezultatem wykonania zapytania do bazy danych). Wskazuje to na to, że jest jakiś problem z zapytaniem do bazy danych. Musisz więc znaleźć linijkę, gdzie do zmiennej $kabresult przypisywana jest wartość, prawdopodobnie będzie to coś w stylu: $kabresult = mysql_query("....."); i zaraz po tym wstaw coś takiego:



i napisz co się wyświetliło.
ericsson
Witaj!

Dziękuję serdecznie za odpowiedź.... przeszukałem skrypt przez Ctrl+F i w lini 45 mam coś takiego

  1. $kabresult = mysql_query( $query, $db );


Po tym wstawiłem to co napisałeś i mi się rozjaśniło...

Taa jestem głupek, no wstyd po całości sad.gif

Należy mi się tęgie lanie albo przynajmiej wiadro wody na głowę bo w swoich zapędach się zakręciłem że zapomniałem o najważniejszym...

komunikat brzmiał:

Tabela 'prefix_1234' nie istnieje ... siedzę nad tym kolejną noc z rzędu i po prostu zrobiłem, przeniosłem pliki, przepisałem konfigację w plikach, w cPanelu zrobiłem bazę więc skrypt nie pokazywał błędu w połączeniu więc myślałem że jest cacy a tu się okazuje że baza jest pusta jak nie powiem co.... sad.gif No debil exclamation.gif exclamation.gif Jak słowo daję tak się zakręcić no wstyd i hańba sad.gif


I dzięki Twojej pomocy wyszło szydło z worka a ja siedzę jak głupek po nocach i szukam...


O ile ruszyło to wysypuje się w kilku podstronach komunikat o treści:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in [i tu nazwy plików] czyli jakby ten sam typ błędu w różnych plikach no chyba że są ze soba powiązane...


plik osoby.php błąd in line 104
  1. 102) $result = mysql_query( "select uzytkownicy.id, imie, nazwisko, xywa, kontakt , sum(czas) as MINUTY from konkursy, uzytkownicy left outer join opalanie on (uzytkownicy.id=user AND data >=
  2. 103)konkursy.poczatek AND data <= konkursy.koniec) WHERE konkursy.id=$this_k group by uzytkownicy.id $search ".$ORDER[$ORD] ,$db);
  3. 104) $ilosc = mysql_num_rows($result);



ten sam błąd w pliku opalanie.php in line 87

  1. 85) $result = mysql_query("select imie, nazwisko, xywa, kontakt , czas, data, uzytkownicy.id, opalanie.id from konkursy, uzytkownicy , opalanie where uzytkownicy.id=user AND data >= konkursy.poczatek 86)AND data <= konkursy.koniec AND konkursy.id=$this_k ORDER BY data DESC, nazwisko ASC, imie ASC",$db);
  2. 87) }


No i cholera znów ten ' } ' ale tym razem baze mam wgraną smile.gif

Pozdrawiam serdecznie
Ericsson
vonski
Generalnie gdziekolwiek masz błąd o podobnej treści ("not a valid MySQL result resource") możesz się spodziewać, że błąd jest z zapytaniem. Więc jeśli nadasz masz jakiś problem, po prostu szukaj mysql_query() zwracającego problematyczny wynik (czyli FALSE, który miał być zasobem) i dodawaj po nim echo mysql_error(); i na podstawie tych informacji dostosowuj zapytania / strukturę bazy danych.
ericsson
OKi wink.gif Dziękuję za cenną wskazówkę z tym echem wink.gif Fajna sprawa wink.gif

Więc w pliku:

osoby.php

po dodaniu tego echa mam komunikat:

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 'group by uzytkownicy.id ORDER BY nazwisko ASC, imie ASC' at line 1

a w pliku:

opalanie.php

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 'ORDER BY data DESC, nazwisko ASC, imie ASC' at line 1

Czyli ten chyba ten sam błąd?

Ogólnie skrypt ruszył i teoretycznie gra ale nie wiem jakie mogą być następstwa gdyby to zignorować....

------------
Mały UP

na ' starym ' hostingu w porównaniu do ' nowego ' są trochę inne wersje php oraz MySql'a
------------
alex19
A co masz w zmiennej $this_k ?
Wygląda na to że problem właśnie w niej leży i przez to nie można zwrócić wyniku zapytania.
ericsson
A co masz w zmiennej $this_k ?

Oj sad.gif wprowadziłeś mnie w zakłopotanie... gdzie mam tego cuda szukać ?

mały up..

wrzuciłem zapytanie do SQL o treści:

string gettype ( mixed $this_k )

wróciło z komunikatem na czerwono

#1064 - 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 'string gettype ( mixed $this_k )' at line 1

ale to chyba nie to co było potrzebne

alex19
Tradycyjnie jak już to robiłeś wink.gif

Daj przed zapytaniem:
  1. echo 'Zmienna $this_k='.$this_k;
  2.  
  3. albo
  4.  
  5. var_dump($this_k);


Dzięki temu zobaczysz co jest w zmiennej i będzie wiadomo czy jest tam oczekiwane ID klienta czy coś innego.
ericsson
metodą prób i błędów... biggrin.gif bo działam po omacku...

użycie var_dump($this_k);

dało komunikat 'NULL'
alex19
No i tu właśnie leży problem. W skrócie wyszukujesz użytkowników z ID=NULL, a powinien tam być numer. Dlatego zapytanie jest błędne.
Musisz szukać zmiennej $this_k wcześniej w skrypcie i prześledzić skąd powinny brać się w niej dane i dlaczego nic nie jest do niej zapisywane.
Naprawisz $this_k, to i zapytanie zacznie działać smile.gif
ericsson
OK jedziemy dalej smile.gif


Wyszukujesz użytkowników z ID=NULL jasne .... czyli co domyślam się że... gdzieś ( w bazie ? ) znajduje się tabela ( z użytkownikami? ) w której jakiś wiersz ( w którym są wymienieni użytkownicy) ma ID=NULL questionmark.gif

Mam tego szukać w phpMyadmin jakoś questionmark.gif

W pliku osoby.php
Zmienna $this_k występuje wcześniej w skrypcie w kilku miejscach

  1. 66)$this_k = $tresc[0];


  1. 75) if ($K_ID != 0) $this_k = $K_ID;


oraz linie

  1. 102) $result = mysql_query( "select uzytkownicy.id, imie, nazwisko, xywa, kontakt , sum(czas) as MINUTY from konkursy, uzytkownicy left outer join opalanie on (uzytkownicy.id=user AND data >= 103)konkursy.poczatek AND data <= konkursy.koniec) WHERE konkursy.id=$this_k group by uzytkownicy.id $search ".$ORDER[$ORD] ,$db);
  2. 104) $ilosc = mysql_num_rows($result);


  1. 133)$smarty->assign('this_k', $this_k);


w drugim pliku który szwankuje

opalanie.php

  1. 19) $this_k = $tresc[0];

  1. 29) if ($K_ID != 0) $this_k = $K_ID;
  2. 30) $smarty->assign('this_k', $this_k);


  1. 79)$result = mysql_query("select imie, nazwisko, xywa, kontakt , czas, data, uzytkownicy.id, opalanie.id from konkursy, uzytkownicy , opalanie where uzytkownicy.id=user AND user=$ID AND data >= 80)konkursy.poczatek AND data <= konkursy.koniec and konkursy.id=$this_k ORDER BY data DESC, nazwisko ASC, imie ASC",$db);


  1. 85)$result = mysql_query("select imie, nazwisko, xywa, kontakt , czas, data, uzytkownicy.id, opalanie.id from konkursy, uzytkownicy , opalanie where uzytkownicy.id=user AND data >= konkursy.poczatek AND 86)data <= konkursy.koniec AND konkursy.id=$this_k ORDER BY data DESC, nazwisko ASC, imie ASC",$db);



Widzę że w obu plikach stosowane są podobne fragmenty kodu..

alex19
Cytat(ericsson @ 30.03.2014, 01:36:08 ) *
Wyszukujesz użytkowników z ID=NULL jasne .... czyli co domyślam się że... gdzieś ( w bazie ? ) znajduje się tabela ( z użytkownikami? ) w której jakiś wiersz ( w którym są wymienieni użytkownicy) ma ID=NULL questionmark.gif


Tak, tabela jest na pewno. Ale id zapewne musi być jakąś cyfrą, a nie NULL... ten NULL to właśnie błąd, bo to jest brak wartości.

Cytat(ericsson @ 30.03.2014, 01:36:08 ) *
W pliku osoby.php
Zmienna $this_k występuje wcześniej w skrypcie w kilku miejscach

  1. 66)$this_k = $tresc[0];


  1. 75) if ($K_ID != 0) $this_k = $K_ID;


No to teraz trzeba szukać dalej po sznureczku zmiennych
Skąd się bierze $tresc[0], a konkretniej tablica $tresc oraz $K_ID.

Cytat(ericsson @ 30.03.2014, 01:36:08 ) *
oraz linie

  1. 102) $result = mysql_query( "select uzytkownicy.id, imie, nazwisko, xywa, kontakt , sum(czas) as MINUTY from konkursy, uzytkownicy left outer join opalanie on (uzytkownicy.id=user AND data >= 103)konkursy.poczatek AND data <= konkursy.koniec) WHERE konkursy.id=$this_k group by uzytkownicy.id $search ".$ORDER[$ORD] ,$db);
  2. 104) $ilosc = mysql_num_rows($result);


No to jest Twoje nie działające zapytanie.

Cytat(ericsson @ 30.03.2014, 01:36:08 ) *
w drugim pliku który szwankuje
...
Widzę że w obu plikach stosowane są podobne fragmenty kodu..


Naprawisz pierwszy plik, to drugi pójdzie tak samo. Chyba że zaraz okaże się że te zmienne są z innego pliku i wszystko naprawi się za jednym zamachem smile.gif
ericsson
Czyli jeżeli zrozumiałem dobrze to:

w phpMyAdmin wybrałem swoją bazę, następnie tabelę uzytkownicy i mi się wyświetliło ileś tam wpisów... i nawet jak zaznaczyłem żeby sortowało ID od 1 do końca to wychodzi na to że każdy wiersz (użytkownik) ma swoje ID określone numerem fakt że nie każde id ma kompletne pozostałe dane czasem brakuje imienia lub nazwiska... tego jest trochę ale można by na piechotę poszukać czy np. się numer nie dubluje jakiś ?

Zagadka od Ciebie...

Skąd się bierze $tresc[0], a konkretniej tablica $tresc oraz $K_ID.

Tablica ? Bo tabeli '$tresc' nie ma w bazie zatem wnioskuję że nie tego szukamy zatem czego szukać?
alex19
Cytat(ericsson @ 30.03.2014, 02:04:41 ) *
Czyli jeżeli zrozumiałem dobrze to:

w phpMyAdmin wybrałem swoją bazę, następnie tabelę uzytkownicy i mi się wyświetliło ileś tam wpisów... i nawet jak zaznaczyłem żeby sortowało ID od 1 do końca to wychodzi na to że każdy wiersz (użytkownik) ma swoje ID określone numerem fakt że nie każde id ma kompletne pozostałe dane czasem brakuje imienia lub nazwiska..


I tak i nie. Udowodniłeś sobie właśnie że jest błąd w php i MySQL nie ma tu nic do rzeczy i wiesz już na pewno, że zmienna $this_k powinna mieć wartość z przedziału 1 do obcnie maksymalnej wartości w bazie.
Ale nie w bazie szukamy błędu w a skrypcie, więc zostaw phpmyadmina w spokoju i szukaj w kodzie.

Cytat(ericsson @ 30.03.2014, 02:04:41 ) *
Zagadka od Ciebie...

Skąd się bierze $tresc[0], a konkretniej tablica $tresc oraz $K_ID.

Tablica ? Bo tabeli '$tresc' nie ma w bazie zatem wnioskuję że nie tego szukamy zatem czego szukać?


Nie żadna tabela! Szukaj w skrypcie zmiennych $tresc i $K_ID. Trzeba ustalić skąd się mają brać ich wartości, bo z tego co podałeś to one są (w chwili obecnej) źródłem problemu i maja wartość NULL, a nie liczbową. Potem są tylko podstawiane do $this_k.
ericsson
W związku z prowadzonymi pracami wykopaliskowymi znalazłem dość sporo wyników odnośnie zmiennej $tresc oraz zmiennej $K_ID ale jest tego tyle że w jednym poście się nie może zmieścić i muszę to rozbić na 2 posty:

Cześć 1

Plik export.php
  1. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  2. $kid[$i] = $tresc[0];
  3. $typ[$i] = $tresc[1];
  4. $pozostalo[$i] = $tresc[2];
  5. $data_wydania[$i] = $tresc[3];
  6. $imie[$i] = $tresc[4];
  7. $nazwisko[$i] = $tresc[5];
  8. $xywa[$i] = $tresc[6];
  9. $haslo[$i] = $tresc[7];
  10. }


Plik exporto.php
  1. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  2. $id[$i] = $tresc[0];
  3. $imie[$i] = $tresc[1];
  4. $nazwisko[$i] = $tresc[2];
  5. $xywa[$i] = $tresc[3];
  6. $kontakt[$i] = $tresc[4];
  7. $minuty[$i] = $tresc[5];
  8. }


Plik karnety.php

  1. {
  2. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  3.  
  4. $kid[$i] = $tresc[0];
  5. $typ[$i] = $tresc[1];
  6. $pozostalo[$i] = $tresc[2];
  7. $data_wydania[$i] = $tresc[3];
  8. $imie[$i] = $tresc[4];
  9. $nazwisko[$i] = $tresc[5];
  10. $xywa[$i] = $tresc[6];
  11. $haslo[$i] = $tresc[7];
  12. $cena[$i] = $tresc[8];
  13. }


i w tym samym pliku

  1. {
  2. $tresc = mysql_fetch_array($rresult, MYSQL_NUM);
  3.  
  4. $uid[$i] = $tresc[0];
  5. $uimie[$i] = $tresc[1];
  6. $unazwisko[$i] = $tresc[2];
  7. $uxywa[$i] = $tresc[3];
  8. }


Kolejny plik nazywa się karty.php i prócz powtarzających się zmiennych $tresc mam coś jeszcze...

  1. $tresc = mysql_fetch_array($rresult, MYSQL_NUM);
  2.  
  3.  
  4. $id[$i] = $tresc[0];
  5. $imie[$i] = $tresc[1] . " " . $tresc[2];
  6. $nazwisko[$i] = $tresc[2];
  7. $iop[$i] = $tresc[3];
  8. $modg[$i] = $tresc[4];
  9. $aktywnosc[$i] = $tresc[5];
  10. $lokalizacja[$i] = $tresc[6];
  11. $data_wydania[$i] = $tresc[ 7 ];
  12.  
  13. $query = "SELECT count(*) FROM karty_uzycie "
  14. . " WHERE karta_id = " . $tresc[0]


  1. {
  2. $tresc = mysql_fetch_array($rresult, MYSQL_NUM);
  3.  
  4. $uid[$i] = $tresc[0];
  5. $uimie[$i] = $tresc[1];
  6. $unazwisko[$i] = $tresc[2];
  7. $uxywa[$i] = $tresc[3];
  8. }


Znalazłem coś jeszcze w tym pliku co rzuciło mi się w oczy choć nie wiem czy to to nie ma coś wspólnego bo miałem szukać $K_ID
a mam fragment kodu który wygląda tak:

  1. {
  2. $KID = (int) $_GET['kid'];
  3.  
  4. # nie ma już kasowania kart - jest dezaktywacja
  5.  
  6. $query = "UPDATE karty_klienta SET is_aktywna = 0 WHERE id = " . $KID;
  7. mysql_query( $query, $db );
  8.  
  9.  
  10. } else if ( $_GET['act' ] == 'act' )
  11. {
  12.  
  13. ############## ACTIVATE
  14.  
  15. $KID = (int) $_GET['kid'];
  16. $query = "UPDATE karty_klienta SET is_aktywna = 1 WHERE id = " . $KID;
  17. mysql_query( $query, $db );
  18.  
  19.  
  20. }


Zamiast zmiennej $K_ID mam $KID questionmark.gif questionmark.gif questionmark.gif Czy duże i małe litery też mogą mieć wpływ czy są traktowane jednakowo?


Ciąg dalszy...


Plik klient.php

  1. {
  2. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  3.  
  4. $id[$i] = $tresc[0];
  5. $imie[$i] = $tresc[1];
  6. $nazwisko[$i] = $tresc[2];
  7. $xywa[$i] = $tresc[3];
  8. }


Plik konkurs.php pierwszy raz $k_id
  1. $k_id = array();
  2. $k_nazwa = array();
  3. $k_dp = array();
  4. $k_dk = array();
  5.  
  6.  
  7. for ($i= 0; $i < $ilosc; $i++)
  8. {
  9. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  10.  
  11. $k_id[$i] = $tresc[0];
  12. $k_nazwa[$i] = $tresc[1];
  13. $k_dp[$i] = $tresc[2];
  14. $k_dk[$i] = $tresc[3];
  15. }
  16.  
  17. $smarty->assign('k_id', $k_id);



Plik minuty.php
  1. {
  2. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  3.  
  4. $id[$i] = $tresc[0];
  5. $imie[$i] = $tresc[1];
  6. $nazwisko[$i] = $tresc[2];
  7. $xywa[$i] = $tresc[3];
  8. }


Plik opalanie.php zawiera i $tresc oraz $K_ID i $k_id

  1. $k_id = array();
  2. $k_nazwa = array();
  3. $k_dp = array();
  4. $k_dk = array();
  5.  
  6. for ($i= 0; $i < $ilosc; $i++)
  7. {
  8. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  9.  
  10. $k_id[$i] = $tresc[0];
  11. $this_k = $tresc[0];
  12. $k_val[$i] = $tresc[1] . " (".$tresc[2]." - ".$tresc[3].")";
  13. }


  1. $K_ID = (int) $_GET['konkurs'];
  2. if ($K_ID != 0) $this_k = $K_ID;


Plik osoby.php
  1. $k_id = array();
  2. $k_nazwa = array();
  3. $k_dp = array();
  4. $k_dk = array();
  5.  
  6. for ($i= 0; $i < $ilosc; $i++)
  7. {
  8. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  9.  
  10. $k_id[$i] = $tresc[0];
  11. $this_k = $tresc[0];
  12. $k_val[$i] = $tresc[1] . " (".$tresc[2]." - ".$tresc[3].")";
  13. }
  14.  
  15. $smarty->assign('k_id', $k_id);
  16. $smarty->assign('k_val', $k_val);
  17.  
  18.  
  19. $K_ID = (int) $_GET['konkurs'];
  20. if ($K_ID != 0) $this_k = $K_ID;


i kawałek dalej znów
  1. {
  2. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  3.  
  4. $id[$i] = $tresc[0];
  5. $imie[$i] = $tresc[1];
  6. $nazwisko[$i] = $tresc[2];
  7. $xywa[$i] = $tresc[3];
  8. $kontakt[$i] = $tresc[4];
  9. $minuty[$i] = $tresc[5];
  10. }


W przedostatnim pliku usluga-op.php zmienna $tresc się pojawia wiele razy wiecej niż w poprzednich plikach

  1. while( $tresc = mysql_fetch_assoc( $result ) )
  2. {
  3. #### - tu się decyduje czy używamy kolumny numer czy nie
  4. array_push( $karty_klienta_id, $tresc["id"] );
  5. array_push( $karty_klienta_numery, $tresc["id"] );
  6. };
  7. mysql_free_result( $result );
  8. $smarty->assign( 'karty_klienta_id', $karty_klienta_id );
  9. $smarty->assign( 'karty_klienta_numery', $karty_klienta_numery ); #<
  10.  
  11. $query = "SELECT id FROM karnety WHERE uzycie < pozostalo AND wlasciciel = " . $klient_id;
  12. $result = mysql_query( $query, $db );
  13. $karnety_id = array();
  14. while( $tresc = mysql_fetch_assoc( $result ) )
  15. {
  16. array_push( $karnety_id, $tresc["id"] );
  17. };


  1. while( $tresc = mysql_fetch_row( $result ) )
  2. {
  3. array_push( $kabiny_id, $tresc[0] );
  4. array_push( $kabiny_nazwa, $tresc[1] );
  5. };


  1. while( $tresc = mysql_fetch_assoc( $result ) )
  2. {
  3. array_push( $klienci_id, $tresc["id"] );
  4. array_push( $klienci_dane, $tresc["imie"] . " " . $tresc["nazwisko"]
  5. . " " . $tresc["kontakt"] );
  6. if ( $tresc["id"] == $klient_id )
  7. { $klient_dane = $tresc["imie"] . " " . $tresc["nazwisko"]
  8. . " " . $tresc["kontakt"]; }
  9. };


  1. while( $tresc = mysql_fetch_assoc( $result ) )
  2. {
  3. array_push( $kosmetyki_id, $tresc["id"] );
  4. array_push( $kosmetyki_nazwy, $tresc["nazwa"] );
  5. array_push( $kosmetyki_ceny, $tresc["cena"] );
  6. };



Ostatni plik usluga-rez.php

  1. while( $tresc = mysql_fetch_assoc( $result ) )
  2. {
  3. #### - tu się decyduje czy używamy kolumny numer czy nie
  4. array_push( $karty_klienta_id, $tresc["id"] );
  5. array_push( $karty_klienta_numery, $tresc["id"] );
  6. };
  7. mysql_free_result( $result );
  8. $smarty->assign( 'karty_klienta_id', $karty_klienta_id );
  9. $smarty->assign( 'karty_klienta_numery', $karty_klienta_numery ); #<
  10.  
  11. $query = "SELECT id FROM karnety WHERE uzycie < pozostalo AND wlasciciel = " . $klient_id;
  12. $result = mysql_query( $query, $db );
  13. $karnety_id = array();
  14. while( $tresc = mysql_fetch_assoc( $result ) )
  15. {
  16. array_push( $karnety_id, $tresc["id"] );


  1. while( $tresc = mysql_fetch_row( $result ) )
  2. {
  3. array_push( $kabiny_id, $tresc[0] );
  4. array_push( $kabiny_nazwa, $tresc[1] );
  5. };


  1. while( $tresc = mysql_fetch_assoc( $result ) )
  2. {
  3. array_push( $klienci_id, $tresc["id"] );
  4. array_push( $klienci_dane, $tresc["imie"] . " " . $tresc["nazwisko"]
  5. . " " . $tresc["kontakt"] );
  6. if ( $tresc["id"] == $klient_id )
  7. { $klient_dane = $tresc["imie"] . " " . $tresc["nazwisko"]
  8. . " " . $tresc["kontakt"]; }
  9. };



  1. while( $tresc = mysql_fetch_assoc( $result ) )
  2. {
  3. array_push( $kosmetyki_id, $tresc["id"] );
  4. array_push( $kosmetyki_nazwy, $tresc["nazwa"] );
  5. array_push( $kosmetyki_ceny, $tresc["cena"] );
  6. };

alex19
No dobra. Nawklejałeś tu kawałków kodu z miliona plików. A to nic nie daje.

Skupmy się na jednym pliku, tym o którym była mowa od początku, tam gdzie się wali zapytanie.

Z tego co wkleiłeś jasno wynika że zmienna treść to wynik wcześniejszego zapytania do SQLa i w niej powinny być wyniki z bazy.
Zacznijmy od sprawdzenia zapytania oraz tego czy nie ma błędu (masz napisane wcześniej jak to zrobić). Kolejnym krokiem będzie sprawdzenie zawartości tablicy $tresc pod kątem tego czy nie jest z jakiegoś powodu pusta lub czy wyniki w niej nie są w innej kolejności niż oczekujemy.
  1. var_dump($tresc);
ericsson
szlag by trafił tyle się naszukałem no ale trudno sad.gif tak to jest jak się człowiek uczy smile.gif Powiem Ci że ciut mi rosjaśniło się kilka rzeczy ale to tylko takie drobnostki smile.gif

Zatem walczymy z pierwszym plikiem w którym się wysypało zapytanie..

Był to plik
osoby.php który w lini 104 wysadzał błąd : mysql_num_rows(): supplied argument is not a valid MySQL result resource in ....
  1. 102) $result = mysql_query( "select uzytkownicy.id, imie, nazwisko, xywa, kontakt , sum(czas) as MINUTY from konkursy, uzytkownicy left outer join opalanie on (uzytkownicy.id=user AND data >= konkursy.poczatek 103) AND data <= konkursy.koniec) WHERE konkursy.id=$this_k group by uzytkownicy.id $search ".$ORDER[$ORD] ,$db);
  2. 104) $ilosc = mysql_num_rows($result);


Zgodnie z postem usera 'vonski' z dziś z 00:56 ...
Czyli sprawdzam zapytanie szukając przed linią 104 frazy: mysql_query i po niej dodaję echo mysql_error(); questionmark.gif

Jeżeli o to chodzi to to już zrobiłem i otrzymałem wynik:

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 'group by uzytkownicy.id ORDER BY nazwisko ASC, imie ASC' at line 1

Uprzedzając następnego posta 'sprawdzenie zawartości tablicy '$tresc' zatem w pliku osoby.php znalazłem miejsce w którym pierwszy raz wystepuje zmienna $tresc i dodałem ten ' var_dump($tresc); ' i wynikiem jest komunikat NULL
trueblue
Pytanie jakie padło wcześniej, a co masz w $this_k?
alex19
Cytat(ericsson @ 30.03.2014, 16:04:25 ) *
Uprzedzając następnego posta 'sprawdzenie zawartości tablicy '$tresc' zatem w pliku osoby.php znalazłem miejsce w którym pierwszy raz wystepuje zmienna $tresc i dodałem ten ' var_dump($tresc); ' i wynikiem jest komunikat NULL

OK. Jak wygląda zapytanie do bazy oraz czy nie ma błędu?

Cytat
Pytanie jakie padło wcześniej, a co masz w $this_k?


Już pisał wcześniej, że jest NULL.
ericsson
  1. $result = mysql_query( "SELECT id, nazwa, poczatek, koniec FROM konkursy order by poczatek DESC" ,$db);
  2.  
  3. $ilosc = mysql_num_rows($result);
  4.  
  5. $k_id = array();
  6. $k_nazwa = array();
  7. $k_dp = array();
  8. $k_dk = array();
  9.  
  10. for ($i= 0; $i < $ilosc; $i++)
  11. {
  12. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  13. var_dump($tresc);
  14. $k_id[$i] = $tresc[0];
  15. $this_k = $tresc[0];
  16. $k_val[$i] = $tresc[1] . " (".$tresc[2]." - ".$tresc[3].")";
  17. }


Chyba chodzi Ci o to ?

Panowie pełen szacunek dla Waszej cierpliwości i wyrozumiałości normalnie czuję się jak głupia blondynka której ktoś tłumaczy wymianę rozrządu w silniku V12 biggrin.gif oraz z regulacją wszystkich 48 zaworów biggrin.gif
alex19
Tak, o to chodziło.
Teraz doklej tam w 2 lini tego kodu

bo trzeba zobaczyć co jest nie tak z zapytaniem, bo ewidentnie coś nie trybi jak w $tresc jest NULL.
ericsson
Zrobiłem tak:

  1. $result = mysql_query( "SELECT id, nazwa, poczatek, koniec FROM konkursy order by poczatek DESC" ,$db);


Po wyświetleniu strony widzę komunikat NULL (znowu ? ) jeszcze sprawdziłem czy przypadkiem gdzieś mi się nie powtarza 'echo' ale nie jest tylko raz w tym ściśle określonym miejscu.
alex19
Cytat(ericsson @ 30.03.2014, 18:33:04 ) *
Po wyświetleniu strony widzę komunikat NULL (znowu ? ) jeszcze sprawdziłem czy przypadkiem gdzieś mi się nie powtarza 'echo' ale nie jest tylko raz w tym ściśle określonym miejscu.


NULL jest z var_dump'a którego masz niżej.
Czy Ty przypadkiem nie masz pustej tabeli "konkursy" ?

Zapytanie jest OK, bo nie ma błędu, ale podejrzewam, że mysql_num_rows zwraca 0 i stąd nie działa reszta jak trzeba, bo nie ma żadnych wyników tego zapytania.

Możesz dopisać sobie
  1. $ilosc = mysql_num_rows($result);
  2. echo "Ilość wierszy w tabeli=".$ilosc;

i będziesz miał pewność ile jest wyników.
ericsson
W bazie danych tabela konkursy jest pusta zgadza, się komunikat że zawiera ZERO WIERSZY no ale teoretycznie powinna być pusta bo nie mam ustawionego żadnego konkursu a jak ustawię coś na próbę to otrzymuję komunikat że jeden wiersz ale błąd występuje nadal




alex19
Tam jest jeszcze zmienna $K_ID. Skąd ona się bierze?

Możesz wkleić całość kodu pliku osoby.php, bo tak to my tu będziemy jeszcze tydzień szukać?
ericsson
Proszę o to całość


  1. <?
  2. require_once ('config.php');
  3.  
  4. $smarty->assign('message', $_GET['message']);
  5.  
  6.  
  7. if ($_POST['act'] == 'change') {
  8.  
  9.  
  10.  
  11. mysql_query( " UPDATE uzytkownicy SET xywa='". $_POST['xywa'] ."' , imie='". $_POST['imie'] ."' , nazwisko='". $_POST['nazwisko'] ."' , kontakt='". $_POST['kontakt'] ."' WHERE id=". $_POST['uid'] ,$db);
  12.  
  13.  
  14. $smarty->assign('message', "<font color=green>Zmieniono dane osoby: ". $_POST['imie'] . " ". $_POST['nazwisko'] . " (". $_POST['xywa'].") - " . $_POST['kontakt']. " </font>");
  15.  
  16. $smarty->assign('next', 'osoby.php');
  17. $smarty->display('refresh.html');
  18.  
  19. exit();
  20.  
  21.  
  22.  
  23. }
  24.  
  25.  
  26. else if ($_POST['act'] == 'add') {
  27.  
  28. if ($_POST['xywa'] == '') {
  29. $_POST['xywa'] = $_POST['nazwisko'] . "_" . substr ($_POST['imie'], 0,1);
  30. }
  31.  
  32. $test = mysql_query( "SELECT id FROM uzytkownicy WHERE xywa='". $_POST['xywa'] ."'" ,$db);
  33.  
  34. if (mysql_num_rows ($test) > 0 ) {
  35. $smarty->assign('message', "<font color=red>Istnieje juz uzytkownik o pseudonimie ". $_POST['xywa']."</font>");
  36.  
  37.  
  38. }
  39. else {
  40.  
  41.  
  42. $result = mysql_query( "INSERT INTO uzytkownicy (imie, nazwisko, xywa, kontakt) values ('". $_POST['imie']."','". $_POST['nazwisko']. "', '". $_POST['xywa']."', '".$_POST['kontakt']."')" ,$db);
  43.  
  44. $smarty->assign('message', "<font color=green>Dodano uczestnika: ". $_POST['imie'] . " ". $_POST['nazwisko'] . " (". $_POST['xywa'].")</font>");
  45.  
  46. }
  47.  
  48.  
  49. }
  50.  
  51.  
  52. $result = mysql_query( "SELECT id, nazwa, poczatek, koniec FROM konkursy order by poczatek DESC" ,$db);
  53.  
  54. $ilosc = mysql_num_rows($result);
  55. $ilosc = mysql_num_rows($result);
  56. echo "Ilość wierszy w tabeli=".$ilosc;
  57. $k_id = array();
  58. $k_nazwa = array();
  59. $k_dp = array();
  60. $k_dk = array();
  61.  
  62. for ($i= 0; $i < $ilosc; $i++)
  63. {
  64. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  65.  
  66. $k_id[$i] = $tresc[0];
  67. $this_k = $tresc[0];
  68. $k_val[$i] = $tresc[1] . " (".$tresc[2]." - ".$tresc[3].")";
  69. }
  70.  
  71. $smarty->assign('k_id', $k_id);
  72. $smarty->assign('k_val', $k_val);
  73.  
  74.  
  75. $K_ID = (int) $_GET['konkurs'];
  76. if ($K_ID != 0) $this_k = $K_ID;
  77.  
  78.  
  79.  
  80.  
  81. $ORD = (int) $_GET['order'];
  82. $smarty->assign('order', $ORD);
  83.  
  84. $FRAZA= $_GET['fraza'];
  85. $smarty->assign('fraza', $FRAZA);
  86.  
  87.  
  88.  
  89. $search ='';
  90.  
  91. if ($FRAZA != '') {
  92. $search = "HAVING (nazwisko like '%$FRAZA%' or imie like '%$FRAZA%' ) ";
  93.  
  94. }
  95.  
  96. $ORDER [0] = " ORDER BY nazwisko ASC, imie ASC ";
  97. $ORDER [1] = " ORDER BY imie ASC, nazwisko ASC ";
  98. $ORDER [2] = " ORDER BY xywa ASC, nazwisko ASC ";
  99. $ORDER [3] = " ORDER BY kontakt ASC ";
  100. $ORDER [4] = " ORDER BY MINUTY DESC, nazwisko ASC ";
  101.  
  102.  
  103. $result = mysql_query( "select uzytkownicy.id, imie, nazwisko, xywa, kontakt , sum(czas) as MINUTY from konkursy, uzytkownicy left outer join opalanie on (uzytkownicy.id=user AND data >= konkursy.poczatek AND data <= konkursy.koniec) WHERE konkursy.id=$this_k group by uzytkownicy.id $search ".$ORDER[$ORD] ,$db);
  104. $ilosc = mysql_num_rows($result);
  105.  
  106. $id = array();
  107. $imie = array();
  108. $nazwisko = array();
  109. $xywa = array();
  110. $kontakt = array();
  111. $minuty = array();
  112.  
  113.  
  114. for ($i= 0; $i < $ilosc; $i++)
  115. {
  116. $tresc = mysql_fetch_array($result, MYSQL_NUM);
  117.  
  118. $id[$i] = $tresc[0];
  119. $imie[$i] = $tresc[1];
  120. $nazwisko[$i] = $tresc[2];
  121. $xywa[$i] = $tresc[3];
  122. $kontakt[$i] = $tresc[4];
  123. $minuty[$i] = $tresc[5];
  124. }
  125.  
  126. $smarty->assign('id', $id);
  127. $smarty->assign('imie', $imie);
  128. $smarty->assign('nazwisko', $nazwisko);
  129. $smarty->assign('xywa', $xywa);
  130. $smarty->assign('kontakt', $kontakt);
  131. $smarty->assign('minuty', $minuty);
  132.  
  133. $smarty->assign('this_k', $this_k);
  134. $smarty->display('osoby.html');
  135.  
  136.  
  137.  
  138. ?>
alex19
Cytat(ericsson @ 30.03.2014, 19:05:46 ) *
  1. $K_ID = (int) $_GET['konkurs'];
  2. if ($K_ID != 0) $this_k = $K_ID;


Trochę nie rozumiem co to miało robić. Jest podstawiane do $this_k maksymalne ID konkursu, ale jeśli ze zmiennej GET przyszło coś innego niż 0, to jest właśnie podstawiane to ID, ale skoro nie ma konkursów, to przecież i tak się nic nie wyświetli.

Skąd się bierze zmienna $_GET['konkurs'] i co się w niej znajduje?
Dopisz pomiędzy tymi liniami
  1. echo $_GET['konkurs'];

trueblue
Wrzuć do linii 74:
  1. echo "id konkursu=".$_GET['konkurs'];

i pokaż co otrzymałeś.
ericsson
alex 19 wygląda to teraz tak:

  1. $K_ID = (int) $_GET['konkurs'];
  2. echo $_GET['konkurs'];
  3. if ($K_ID != 0) $this_k = $K_ID;


i otrzymuję ' Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/tkkrakow/public_html/solarium_riwiera/obsluga/krakow/osoby.php on line 105 '

trueblue
  1. echo "id konkursu=".$_GET['konkurs'];
  2. $K_ID = (int) $_GET['konkurs'];
  3. if ($K_ID != 0) $this_k = $K_ID;


Co daje komunikat:

id konkursu=
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/tkkrakow/public_html/solarium_riwiera/obsluga/krakow/osoby.php on line 104

tyle że żaden konkurs nie jest ustawiony więc się nie pokazało nic po znaku ' = '
trueblue
Z jakiego adresu wywołujesz skrypt?
Czy na tamtym serwerze wgrany był .htaccess?
ericsson
Wybacz głupie pytanie ale jak mam rozumieć
' Z jakiego adresu wywołujesz skrypt ? ' Internetowego questionmark.gif z adresu www.domena.pl/obsluga/krakow/

Tak na starym serwerze jest .htaccess i niezależnie czy jest czy go usunę to jest dokładnie tak samo.
Na nowym również jest .htaccess i czy usunę czy nie jest to samo
alex19
Dobrze, a do tego skryptu dochodzi się z innej strony przez link, z formularza czy jak?
ericsson
Jest sobie strona

www.domena.pl/obsluga/krakow

jak się na nią wejdzie prosi o hasło które w którymś tam pliku.php jest zabukowane, wpisujesz login hasło i masz dostęp wink.gif
baza danych jest na tym samym hostingu co pliki sktyptu
alex19
Dobrze, ale do pliku osoby.php dochodzisz jakoś przeklikując się przez główną stronę czy klepiesz adres w przeglądarkę www.domena.pl/obsluga/krakow/osoby.php questionmark.gif
ericsson
Można wpisać adres www.domena.pl/obsluga/krakow/osoby.php i się pokazuje błąd... ten o którym mowa.


Ogólnie po zalogowaniu do skryptu wchodzi się w którąś opcję menu i się pokazuje strona z ramkami gdzie w górna ramka to tzw. menu
środkowa ramka pokazuje karnety które są
a dolna ramka zaczyna się od tego właśnie błędu i wyświetla plik osoby.php
alex19
Cytat(ericsson @ 30.03.2014, 20:11:08 ) *
Można wpisać adres www.domena.pl/obsluga/krakow/osoby.php i się pokazuje błąd... ten o którym mowa.


A wklep tak: www.domena.pl/obsluga/krakow/osoby.php?id=10

Cytat(ericsson @ 30.03.2014, 20:11:08 ) *
Ogólnie po zalogowaniu do skryptu wchodzi się w którąś opcję menu i się pokazuje strona z ramkami gdzie w górna ramka to tzw. menu
środkowa ramka pokazuje karnety które są
a dolna ramka zaczyna się od tego właśnie błędu i wyświetla plik osoby.php

A nie klika się a jakiegoś linka z menu żeby to zobaczyć? Wymagana jest zmienna GET, która powinna być przekazana w linku lub formularzem żeby to zadziałało.
ericsson
Wpisanie tego kodu który podałeś nie zmienia NIC, strona wygląda dokładnie tak samo jak bez tego dodatkowego parametru.

Ogólnie skrypt wygląda w ten sposób że całość śmiga na ramkach tak jak na obrazku



Górna ramka to menu jak wybierzesz opcje to się ładuje środkowa ramka poniżej,
w niektórych przypadkach tak jak na obrazku (screen z menu 'karnety') wyświetla się menu, ramka środkowa i ramka dolna z błędem
alex19
Odnoszę wrażenie że znalazłem problem.
Moim zdaniem na poprzednim serwerze było wyłączone obsługiwanie błędów i dlatego to działało.
Wygląda, że wyświetla się wszystko tak jak powinno tylko Ty dopisałeś linijkę z pokazywaniem błędu i teraz go widać.

A powiedz jeszcze jak wygląda link na przycisku "konkursy"?
Skądś musi uzupełniać się zmienna $_GET['id'] i ja nie mam pomysłu gdzie jej szukać. Tu by chyba trzeba było calutki kod od początku do końca prześledzić żeby to znaleźć sad.gif
ericsson
Ale jak je włączyłem na poprzednim Hostingu to błąd się pojawia sad.gif

Jak wygląda link... hmm no więc znalazłem plik menu.php licząc że tam coś znajdę jednakże plik jest dość krótki...

  1. <?
  2.  
  3. require_once( "config.php" );
  4.  
  5. $query = "SELECT nazwa FROM lokalizacje WHERE id = " . $lokalizacja_id;
  6. $result = mysql_query( $query, $db );
  7. $row = mysql_fetch_array( $result );
  8.  
  9. $lokalizacja_nazwa = $row[0];
  10.  
  11. $smarty->assign( "lokalizacja_id", $lokalizacja_id );
  12. $smarty->assign( "lokalizacja_nazwa", $lokalizacja_nazwa );
  13.  
  14.  
  15. $smarty->display( "menu.html" );
  16.  
  17. ?>


a plik menu.html nie istnieje wśród plików które mam na nowym serwerze...

Chyba żeby wyłączyć pokazywanie błędów ... wtedy zniknie 'problem'
alex19
Czyli błąd jest (to nie do końca jest błąd) i był wcześniej. Aplikacja jest źle napisana zapewne. Jak działa i działało, to to zostaw, bo szukamy igły w stogu siana.

Nie chodziło mi o kod, ale o samo sprawdzenie dokąd prowadzi link z poziomu przeglądarki smile.gif
ericsson
Korzystając z Firebug'a wyciągnąłem tylko tyle...

<td class="menu" onclick="parent.fmain.location.href='karnety_fr.php';" onmouseout="this.className='menu';" onmouseover="this.className='menu_on';"></td>

z czego plik karnety_fr.php zawiera nie wiele....

  1. <?
  2.  
  3. require_once( "config.php" );
  4.  
  5. $smarty->display( "karnety_fr.html" );
  6.  
  7. ?>
alex19
Prawy klik na przycisk "karnety" i potem kopiuj adres odnośnika smile.gif
ericsson
Ech Panie ale to tak nie działa...

bo kliknięcie prawym klawiszem na ten napis powoduje wyświetlenie takiego samego menu jakbyś na każdej innej dowolnej stronie w białym polu kliknął prawym masz menu do wyboru

Wstecz
Odśwież
Dodaj zakładkę
Zapisz stronę
Zaznacz wszystko itd...


UPDATE!
ale jak w Firefox'ie dasz 'zbadaj element' to w menu konsola pokazuje sie coś takiego

GET http://domena.pl/obsluga/krakow/karnety_fr.php [HTTP/1.1 200 OK 228ms]
Kodowanie znaków dokumentu w ramce nie zostało zadeklarowane. Dokument może wyglądać inaczej, jeśli zostanie otwarty poza ramką. karnety_fr.php
GET http://domena.pl/obsluga/krakow/karnety.php [HTTP/1.1 200 OK 226ms]
GET http://domena.pl/obsluga/krakow/osoby.php
alex19
Ja się poddaję.
Tak jak napisałem wcześniej jeśli aplikacja działa i działała tak wcześniej, to wyłącz pokazywanie błędów i to zostaw w spokoju.

Trzeba by przejrzeć całość, zobaczyć jak to działa i szukać gdzie wcięło zmienna. Tak to my niestety nic nie znajdziemy sad.gif
ericsson
No to ładnie sad.gif Masakra panie sad.gif Czyli ja szukałem igły w stogu siana a potem przyniosłem cały stóg siana tutaj zawracając niepotrzebnie głowę bo się okazuje że chyba zostało to napisane tak a nie inaczej i tyle...

Zatem wyłączę obsługę błędów i tyle

Zatem na koniec...


Dziękuję przede wszystkim Tobie alex19 za poświęcony czas i nerwy na tłumaczenie jak krowie na miedzy biggrin.gif Również podziękowania dla vonski'emu oraz trueblue którzy również udzielali się w tym temacie!

Moje wyrazy uznania!
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.