Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z bazą danych, przykład z książki php5 od podstaw
Forum PHP.pl > Forum > Przedszkole
Bjorg
Witam, mam problem z pewnym zadaniem z książki PHP5 Apache i MySql od podstaw. Niestety po wielu godzinach bezsensownej straty czasu na szukanie rozwiązania muszę zwrócic się do bardziej doswiadczonych.


Zapytania i wywołanie (tu jest problem):
  1. link= mysql_connect("localhost", "root", "");
  2.  
  3. mysql_select_db("moviesite");
  4.  
  5. $query= "SELECT movie_name, movie_director, movie_leadactor " .
  6. "FROM movie";
  7.  
  8. $result = mysql_query($query, $link)
  9. or die (mysql_error());
  10.  
  11. $num_movies = mysql_num_rows($result);
  12.  
  13. $movie_header = <<<EOL
  14. <h2> <center> Baza Danych Recenzji filmow </center> </h2>
  15. <table width = "70%" border="1" cellpadding="2" cellspacing="2" align = "center" >
  16.  
  17. <tr>
  18. <th> Tytul filmu </th>
  19. <th> Rezyser</th>
  20. <th> Glowny aktor </th>
  21. </tr>
  22.  
  23. EOL;
  24.  
  25. function get_director (){
  26. global $movie_director;
  27. global $director;
  28.  
  29. $query_d = "SELECT people_fullname ".
  30. "FROM people ".
  31. "WHERE people_id = '$movie_director'";
  32.  
  33. $result_d = mysql_query($query_d) or die (mysql_error());
  34. $row_d = mysql_fetch_array($result_d);
  35. extract($row_d);
  36. $director=$people_fullname;
  37.  
  38. }
  39.  
  40.  
  41. function get_leadactor (){
  42. global $movie_leadactor;
  43. global $leadactor;
  44.  
  45. $query_z = "SELECT people_fullname ".
  46. "FROM people ".
  47. "WHERE people_id = '$movie_leadactor'";
  48.  
  49. $result_z = mysql_query($query_z) or die (mysql_error());
  50. $row_z = mysql_fetch_array($result_z);
  51. extract($row_z);
  52. $leadactor=$people_fullname;
  53.  
  54. }
  55.  
  56. get_director();
  57. get_leadactor();
  58. $movie_details = ' ';
  59. while ($row = mysql_fetch_array($result)){
  60. $movie_name= $row['movie_name'];
  61. $movie_director = $row['movie_director'];
  62. $movie_leadactor= $row['movie_leadactor'];
  63. $movie_details .=<<<EOD
  64. <tr>
  65. <td>$movie_name</td>
  66. <td>$director</td>
  67. <td>$leadactor</td>
  68. </tr>
  69. EOD;
  70. }
  71.  
  72. $movie_details .=<<<EOD
  73. <tr>
  74. <td>&nbsp</td>
  75. </tr>
  76. <tr>
  77. <td>Laczenie filmow: $num_movies</td>
  78. </tr>
  79. EOD;
  80.  
  81.  
  82.  
  83. $movie_footer= "</table>";
  84.  
  85. $movie =<<<MOVIE
  86. $movie_header
  87. $movie_details
  88. $movie_footer
  89.  
  90.  
  91. MOVIE;
  92.  
  93. echo "W bazie danych znajduje sie $num_movies filmow";
  94. echo $movie;


Baza:
  1. <?php
  2. $connect = mysql_connect("localhost", "root", "") or die ("sprawdz polaczenie");
  3.  
  4. $create = mysql_query("CREATE DATABASE IF NOT EXISTS moviesite")
  5.  
  6.  
  7.  
  8.  
  9. mysql_select_db("moviesite");
  10.  
  11.  
  12. $movie = "CREATE TABLE movie (
  13. movie_id int(11) NOT NULL auto_increment,
  14. movie_name varchar(255) NOT NULL,
  15. movie_type tinyint(2) NOT NULL
  16. \default 0,
  17. movie_year int(4) NOT NULL default 0,
  18. movie_leadactor int(11) NOT NULL default 0,
  19. movie_director int(11) NOT NULL default 0,
  20. PRIMARY KEY (movie_id),
  21. KEY movie_type (movie_type,movie_year)
  22. )";
  23.  
  24.  
  25. $results = mysql_query($movie);
  26.  
  27. $movietype ="CREATE TABLE movietype (
  28. movietype_id int(11) NOT NULL auto_increment,
  29. movietype_label varchar (100) NOT NULL,
  30. PRIMARY KEY (movietype_id)
  31. )";
  32.  
  33.  
  34. $results= mysql_query($movietype) ;
  35.  
  36. $people ="CREATE TABLE people (
  37. people_id int(11) NOT NULL auto_increment,
  38. people_fullname varchar(255) NOT NULL,
  39. people_isactor tinyint(1) NOT NULL default 0,
  40. people_isdirector tinyint(1) NOT NULL default 0,
  41. PRIMARY KEY (people_id)
  42. )";
  43.  
  44. $results=mysql_query($people) or die (mysql_error());
  45.  
  46. echo "pp";
  47.  
  48. ?>


I wypełnienie:
  1. <?php
  2. $connect = mysql_connect("localhost", "root", "") or die ("sprawdz polaczenie");
  3.  
  4. $create = mysql_query("CREATE DATABASE IF NOT EXISTS moviesite")
  5.  
  6.  
  7.  
  8.  
  9. mysql_select_db("moviesite");
  10.  
  11.  
  12. $movie = "CREATE TABLE movie (
  13. movie_id int(11) NOT NULL auto_increment,
  14. movie_name varchar(255) NOT NULL,
  15. movie_type tinyint(2) NOT NULL
  16. \default 0,
  17. movie_year int(4) NOT NULL default 0,
  18. movie_leadactor int(11) NOT NULL default 0,
  19. movie_director int(11) NOT NULL default 0,
  20. PRIMARY KEY (movie_id),
  21. KEY movie_type (movie_type,movie_year)
  22. )";
  23.  
  24.  
  25. $results = mysql_query($movie);
  26.  
  27. $movietype ="CREATE TABLE movietype (
  28. movietype_id int(11) NOT NULL auto_increment,
  29. movietype_label varchar (100) NOT NULL,
  30. PRIMARY KEY (movietype_id)
  31. )";
  32.  
  33.  
  34. $results= mysql_query($movietype) ;
  35.  
  36. $people ="CREATE TABLE people (
  37. people_id int(11) NOT NULL auto_increment,
  38. people_fullname varchar(255) NOT NULL,
  39. people_isactor tinyint(1) NOT NULL default 0,
  40. people_isdirector tinyint(1) NOT NULL default 0,
  41. PRIMARY KEY (people_id)
  42. )";
  43.  
  44. $results=mysql_query($people) or die (mysql_error());
  45.  
  46. echo "pp";
  47.  
  48. ?>

Sama baza i wypełnienie działa, utknąłem na wypełnianiu tabeli.

Stosujac przedstawiony wyżej kod otrzymuje:

Warning: extract() expects parameter 1 to be array, boolean given in C:\a\xampp\htdocs\nauka\r1\tabel1.php on line 36

Notice: Undefined variable: people_fullname in C:\a\xampp\htdocs\nauka\r1\tabel1.php on line 37

Warning: extract() expects parameter 1 to be array, boolean given in C:\a\xampp\htdocs\nauka\r1\tabel1.php on line 52

Notice: Undefined variable: people_fullname in C:\a\xampp\htdocs\nauka\r1\tabel1.php on line 53



Stosujac kod znaleziony gdzies w necie:
  1. <?php
  2. $link =mysql_connect("localhost", "root", "")
  3. mysql_select_db("moviesite")
  4. $query = "SELECT movie_name, movie_director, movie_leadactor " .
  5. "FROM movie";
  6.  
  7. $result = mysql_query($query, $link)
  8. $num_movies = mysql_num_rows($result);
  9. $movie_header=<<<EOD
  10. <h2><center>Movie Review Database</center</h2>
  11. <table width="70%" border="1" cellpadding="2"
  12. cellspacing="2" align="center">
  13. <tr>
  14. <th>Movie Title</th>
  15. <th>Year of Release</th>
  16. <th>Movie Director</th>
  17. <th>Movie Lead Actor</th>
  18. <th>Movie Type</th>
  19. </tr>
  20.  
  21. EOD;
  22.  
  23. function get_director(){
  24. global $movie_director;
  25. global $director;
  26.  
  27. $query_d = "SELECT people_fullname " .
  28. "FROM people " .
  29. "WHERE people_id = '$movie_director'";
  30. $results_d = mysql_query($query_d)
  31. $row_d = mysql_fetch_array($results_d);
  32. extract($row_d);
  33. $director = $people_fullname;
  34. }
  35. function get_leadactor(){
  36. global $movie_leadactor;
  37. global $leadactor;
  38.  
  39. $query_a = "SELECT people_fullname" .
  40. "FROM people " .
  41. "WHERE people_id = '$movie_leadactor' ";
  42. $results_a = mysql_query($query_a)
  43. $row_a = mysql_fetch_array($results_a);
  44. extract($row_a);
  45. $leadactor = $people_fullname;
  46. }
  47. $movie_details = '';
  48. while ($row = mysql_fetch_array($result)){
  49. $movie_name = $row['movie_name'];
  50. $movie_director = $row['movie_director'];
  51. $movie_leadactor = $row['movie_leadactor'];
  52.  
  53. get_director();
  54. get_leadactor();
  55.  
  56. $movie_details .=<<<EOD
  57. <tr>
  58. <td>$movie_name</td>
  59. <td>$director</td>
  60. <td>$leadactor</td>
  61. </tr>
  62. EOD;
  63. }
  64. $movie_details .=<<<EOD
  65. <tr>
  66. <td>&nbsp</td>
  67. </tr>
  68. <tr>
  69. <td>Total :$num_movies Movies</td>
  70. </tr>
  71. EOD;
  72. $movie_footer ="</table>";
  73. $movie=<<<MOVIE
  74. $movie_header
  75. $movie_details
  76. $movie_footer
  77. MOVIE;
  78. echo "There are $num_movies movies in our database";
  79. echo $movie;
  80. ?>


Błąd wyswietla: 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 'WHERE people_id = '1'' at line 1.

Proszę o jakąs pomoc.
Bjorg
Problem rozwiązałęm, wywołanie funkcji powinno być w pętli while.

Dla wszystkich którzy będą mieli podobne problemy w przyszłosci:
  1. <?php
  2. $link= mysql_connect("localhost", "root", "");
  3.  
  4. mysql_select_db("moviesite");
  5.  
  6. $query= "SELECT movie_name, movie_director, movie_leadactor " .
  7. "FROM movie";
  8.  
  9. $result = mysql_query($query, $link)
  10. or die (mysql_error());
  11.  
  12. $num_movies = mysql_num_rows($result);
  13.  
  14. $movie_header = <<<EOL
  15. <h2> <center> Baza Danych Recenzji filmow </center> </h2>
  16. <table width = "70%" border="1" cellpadding="2" cellspacing="2" align = "center" >
  17.  
  18. <tr>
  19. <th> Tytul filmu </th>
  20. <th> Rezyser</th>
  21. <th> Glowny aktor </th>
  22. </tr>
  23.  
  24. EOL;
  25.  
  26. function get_director() {
  27. global $movie_director;
  28. global $director;
  29. $query_d = "select people_fullname " .
  30. "from people " .
  31. "where people_id='$movie_director'";
  32. $results_d = mysql_query($query_d)
  33. $row_d = mysql_fetch_array($results_d);
  34. extract($row_d);
  35. $director = $people_fullname;
  36. }
  37.  
  38.  
  39. function get_leadactor() {
  40. global $movie_leadactor;
  41. global $leadactor;
  42.  
  43. $query_a = "select people_fullname " .
  44. "from people " .
  45. "where people_id ='$movie_leadactor'";
  46.  
  47. $results_a = mysql_query($query_a)
  48.  
  49.  
  50. $row_a = mysql_fetch_array($results_a);
  51. extract($row_a);
  52. $leadactor = $people_fullname;
  53. }
  54.  
  55.  
  56. $movie_details = ' ';
  57. while ($row = mysql_fetch_array($result)){
  58. $movie_name= $row['movie_name'];
  59. $movie_director = $row['movie_director'];
  60. $movie_leadactor= $row['movie_leadactor'];
  61. get_director();
  62. get_leadactor();
  63. $movie_details .=<<<EOD
  64. <tr>
  65. <td>$movie_name</td>
  66. <td>$director</td>
  67. <td>$leadactor</td>
  68. </tr>
  69. EOD;
  70. }
  71.  
  72. $movie_details .=<<<EOD
  73. <tr>
  74. <td>&nbsp</td>
  75. </tr>
  76. <tr>
  77. <td>Laczenie filmow: $num_movies</td>
  78. </tr>
  79. EOD;
  80.  
  81.  
  82.  
  83. $movie_footer= "</table>";
  84.  
  85. $movie =<<<MOVIE
  86. $movie_header
  87. $movie_details
  88. $movie_footer
  89.  
  90.  
  91. MOVIE;
  92.  
  93. echo "W bazie danych znajduje sie $num_movies filmow";
  94. echo $movie;
  95. ?>


Temat uważam za wyczerpany.
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.