![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 7.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam uczę się dopiero kupiłem książkę php5, MySQL, apache od podstaw i utknąłem w rozdziale 4 - Wyświetlanie danych w PHP, nie wiem dlaczego pokazuje mi się taki błąd, przy uruchomieniu skryptu:"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\testy\movie_details.php on line 82", nie wiem co jest grane wszystko do tej pory wychodziło dobrze. Poniżej przedstawiam cały kod:
CODE $link = mysql_connect("localhost","root","root")
or die(mysql_error()); mysql_select_db("moviesite") or die (mysql_error()); //Funkcja obliczająca, czy film okazał sie kasowym sukcesem czy raczej sromotną porażką function calculate_differences($takings, $cost) { $difference = $takings - $cost; //LINIA 10 if ($difference < 0) { $difference = substr($difference, 1); $font_color = 'red'; $profit_or_loss = "$" . $difference . "m"; } else if ($difference > 0) { $font_color ='green'; $profit_or_loss = "$" . $difference . "m"; } else { $font_color = 'blue'; $profit_or_loss = "Równowaga"; //LINIA 20 } return "" . $profit_or_loss . ""; } //Funkcja pobierająca imie i nazwisko rezysera z tabeli people function get_director() { global $movie_director; global $director; $query_d = "SELECT people_fullname " . //LINIA 30 "FROM people " . "WHERE people_id='$movie_director'"; $results_d = mysql_query($query_d) or die(mysql_error()); $row_d = mysql_fetch_array($results_d); extract($row_d); $director = $people_fullname; } //Funkcja pobierajaca imie i nazwisko glownego aktora z tabeli "people" //LINIA 40 function get_leadactor() { global $movie_leadactor; global $leadactor; $query_a = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$movie_leadactor'"; $results_a = mysql_query($query_a) or die(mysql_error()); $row_a = mysql_fetch_array($results_a); //LINIA 50 extract($row_a); $leadactor = $people_fullname; } $movie_query = "SELECT * FROM movie " . "WHERE movie_id='" . $_GET['movie_id'] . "'"; $movie_result = mysql_query($movie_query, $link) or die(mysql_error()); $movie_table_headings=<< Tytuł filmu Rok produkcji Reżyser Główny aktor Czas trwania Zysk lub strata EOD; //LINIA 70 $review_table_headings=<< Data wystawienia Tytuł recenzji Recenzent Treść recenzji Ocena EOD; while($review_row = mysql_fetch_array($review_result)) { //LINIA 82 $review_flag =1; $review_title[] = $review_row['review_name']; $reviewer_name[] = ucwords($review_row['review_reviewer_name']); $review[] = $review_row['review_comment']; $review_date[] = $review_row['review_date']; $review_rating[] = generate_ratings($review_row['review_rating']); } $i = 0; $review_details = ''; while ($i $review_details .=<< $review_date[$i] $review_title[$i] $review_name[$i] $review[$i] $review_rating[$i] EOD; $i++; } while ($row = mysql_fetch_array($movie_result)) { $movie_name = $row['movie_name']; $movie_director = $row['movie_director']; $movie_leadactor = $row['movie_leadactor']; $movie_year = $row['movie_year']; $movie_running_time = $row['movie_running_time']." min. "; $movie_takings = $row['movie_takings']; $movie_cost = $row['movie_cost']; //pobranie imienia i nazwiska reżysera z tabeli "people" get_director(); //pobranie imienia i nazwiska glownego aktora z tabeli people get_leadactor(); } $review_query = "SELECT * FROM reviews " . "WHERE review_movie_id ='" . $_GET['movie_id'] . "' " . "ORDER BY review_date DESC"; $review_result = mysql_query($review_query, $link) or die(mysql_error()); $movie_health = calculate_differences($movie_takings, $movie_cost); $page_start =<< Szczegóły i recenzja dla: $movie_name EOD; $movie_details =<< cellpadding="2" align="center"> $movie_name: szczegóły $movie_table_headings $movie_name $movie_year $director $leadactor $movie_running_time $movie_health EOD; if ($review_flag) { $movie_details .=<< $review_table_headings $review_details EOD; } $page_end =<< EOD; $detailed_movie_info =<< $page_start $movie_details $page_end EOD; echo $detailed_movie_info; mysql_close(); function generate_ratings($review_rating) { $movie_rating = ''; for($i=0; $i<$review_rating; $i++) { $movie_rating .= " "; } return $movie_rating; } ?> Ten post edytował mpablo85 7.11.2008, 16:46:36 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 9 Dołączył: 26.01.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
1. nie polecam krasnala, dużo rzeczy działających pod krasnalem nie działa na produkcyjnych serwerach.
2. Na pewno albo masz pusty result z mysql_query(), albo błąd w składni sql proste rozwiązanie za zapytaniem dodaj:
jeżeli błędu nie będzie w sql'ce to zmień toszkę strukturę
pozdro |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 7.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
1. Wiem, że krasnal nie jest za bardzo ok, bo już raz miałem z nim problem - po kilku dniach użytkowania okazało się ze nie mogę się zalogować, wiec musiałem odinstalować i zainstalowac jeszcze raz. podobno vertigoserv jest bardzo dobre, jednak po zainstalowaniu nie mogłem sobie dac z nim rady, nigdzie nie moglem znalesc zadych opisów dzialania, instrukcji itp
2. Dziekuje bardzo za pomoc, ale dopiero sie ucze php i mysql, wiec czy mozesz ma dokladniej napisac gdzie mam zmienic swoj kod, przez te błedy juz sam za bardzo nie wiem co i jak, dodam jeszcze ze znalazlem, strone z wszystkimi kodami z tej ksiażki, strona autorstwa wydawnictwa, i powiem Ci, że jak przekopiowałem ten orginalny kod nie napisany przezemnie bład był taki sam, co o tym myslisz? jak mozesz prosze o uściślenie gdzie mam dokonać zmian pozdrawiam, z góry dziekuje za pomoc |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Ale dzióbek, na linii #82 odnosisz się do zmiennej $review_result - tą zmienną ustawiasz dopiero na linii #116 - więc masz tam jakąś kaszankę... Możesz podać nam linka do tej strony o której mówisz? Z kodem tego konkretnego przykładu?
Ten post edytował bregovic 7.11.2008, 19:22:41 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 7.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
http://mln-web.cs.odu.edu/~mln/code/ch04.htm - na samym dole, ostatni kod "Try It Out 12"
Ale nawet jak się uparłem i na sztywno przekopiowałem oryginalny kod do swojego pliku(oczywiście zmieniłem login, hasło oraz bazę na swoje) to nadal ma taki sam błąd z tą różnicą, że tym razem w linii 112. Zaznaczam że wszystkie wcześniejsze skrypty działały mi poprawnie, dokładnie tak jak opisano w książce. Ten post edytował mpablo85 7.11.2008, 20:07:17 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
No, oczywiście errara humanum i tak dalej, ale IMHO to ten kod nie będzie działał. Nie można odnieść się do zmiennej przed jej deklaracją. Używając kodu z podanego linka jako referencji, zamień linię 112-131:
Na:
Ale nie przeczytałem całego kodu - to straszna kaszanka, może tam być więcej błędów. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:57 |