Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Sprawdzenie skryptu
Forum PHP.pl > Forum > Przedszkole
koniu90
Witam. Jestem totalnym nowicjuszem w tej dziedzinie i dopiero się uczę, także proszę o wyrozumiałość.
Prosiłbym o sprawdzenie kodu którego napisałem. Skrypt ma instalować bazę na serwerze i dodać tabelę:
  1. $lacz = mysql_connect( $serwer, $login, $haslo );
  2. $zapytanie = 'CREATE DATABASE $nazwabazy';
  3.  
  4. $wykonaj = mysql_query ($zapytanie);
  5.  
  6. if($wykonaj==true)
  7. {
  8. echo 'Baza została utworzona';
  9. }
  10. else
  11. {
  12. echo 'Baza nie została utworzona';
  13. }
  14. $lacz = mysql_select_db ( 'WirtualnyDziekanat' );
  15.  
  16. $zapytanie = 'CREATE TABLE Users (
  17. user_id INT () not null AUTO_INCREMENT,
  18. login VARCHAR (11) not null,
  19. password VARCHAR (30) not null,
  20. forname VARCHAR(20) not null,
  21. surname VARCHAR(40) not null,
  22. group_id INT() not null,
  23. pesel VARCHAR(11) not null,
  24. PRIMARY KEY (user_id))';
  25.  
  26. $wykonaj = mysql_query ($zapytanie);
  27. if($wykonaj==true)
  28. {
  29. echo 'Tabela została utworzona';
  30. }
  31. else
  32. {
  33. echo 'Tabela nie została utworzona';
  34. }
mmmmmmm
1. Staraj sie nie używac w nazwach słow zastrzeżonych - USER, LOGIN, PASSWORD
2. user_id INT () not null,
WTF??
3. user_id powinno być auto_increment
4. typu CHAR raczej nie powinno się używać
koniu90
Ok dzięki za wskazówki... poprawię

Ogólnie skrypt się powinien wykonać?

Jeszcze jedno pytanie:
w bazie będzie kilka tabel czy każdą którą tworzę muszę robić w osobna w znaczniku <?php .... ?> czy można wszystko ze sobą połączyć

ktos odpowie questionmark.gif
IProSoft
Jeśli wprowadziłeś poprawki: tak, wykona się.

Możesz nawet wszystkie wsadzić w jeden string i zainstalować, a osobno tylko kopiujesz kod.
koniu90
dzięki za pomoc smile.gif
Kshyhoo
Przenoszę do Przedszkola.
YourFrog
Zainstaluj coś pokroju "MySQL Workbench", stwórz tabelę i spróbuj wyeksportować. Zobaczysz jak wyglądają poprawne zapytania do bazy danych tworzące tąże bazę. Twój kod uruchomiony 2x poinformuje że nie udało mu się w zasadzie nic co miał zrobić.

Wskazówki
- Sprawdzaj czy SCHEMA bazy danych już istnieje,
- Sprawdzaj czy istnieje tabela którą chcesz utworzyć,
- mysql_* jest oznaczone jako przestażałe używaj mysqli lub \PDO,
koniu90
  1. $lacz = mysql_connect( $serwer, $login, $haslo );
  2. $zapytanie = 'CREATE DATABASE $Dziekanat';
  3.  
  4. $wykonaj = mysql_query ($zapytanie);
  5.  
  6. if($wykonaj==true)
  7. {
  8. echo 'Baza została utworzona';
  9. }
  10. else
  11. {
  12. echo 'Baza nie została utworzona';
  13. }
  14. ?>
  15.  
  16. <?php
  17.  
  18. $lacz = mysql_select_db ( 'WirtualnyDziekanat' );
  19.  
  20. $zapytanie1 = 'CREATE TABLE Users (
  21. user_id INT () not null AUTO_INCREMENT,
  22. login VARCHAR (11) not null,
  23. password VARCHAR (30) not null,
  24. forname CHAR(20) not null,
  25. surname CHAR(40) not null,
  26. group_id INT() not null,
  27. pesel VARCHAR(11) not null,
  28. PRIMARY KEY (user_id))';
  29.  
  30. $wykonaj1 = mysql_query ($zapytanie1);
  31. if($wykonaj1==true)
  32. {
  33. echo 'Tabela została utworzona';
  34. }
  35. else
  36. {
  37. echo 'Tabela nie została utworzona';
  38. }
  39.  
  40. $zapytanie2 = 'CREATE TABLE Group (
  41. group_id INT() not null AUTO_INCREMENT,
  42. name CHAR(20) not null,
  43. PRIMARY KEY (group_id)';
  44.  
  45. $wykonaj2 = mysql_query ($zapytanie2);
  46. if($wykonaj2==true)
  47. {
  48. echo 'Tabela została utworzona';
  49. }
  50. else
  51. {
  52. echo 'Tabela nie została utworzona';
  53. }
  54.  
  55. $zapytanie3 = 'CREATE TABLE GroupDeanery (
  56. group_deanery_id INT() not null AUTO_INCREMENT,
  57. user_id INT() not null,
  58. PRIMARY KEY (group_deanery_id)';
  59.  
  60. $wykonaj3 = mysql_query ($zapytanie3);
  61. if($wykonaj3==true)
  62. {
  63. echo 'Tabela została utworzona';
  64. }
  65. else
  66. {
  67. echo 'Tabela nie została utworzona';
  68. }
  69.  
  70.  
  71. $zapytanie4 = 'CREATE TABLE GroupAdmin (
  72. group_admin_id INT() not null AUTO_INCREMENT,
  73. user_id INT() not null,
  74. PRIMARY KEY (group_admin_id))';
  75.  
  76. $wykonaj4 = mysql_query ($zapytanie4);
  77. if($wykonaj4==true)
  78. {
  79. echo 'Tabela została utworzona';
  80. }
  81. else
  82. {
  83. echo 'Tabela nie została utworzona';
  84. }
  85.  
  86.  
  87. $zapytanie5 = 'CREATE TABLE StudentSubject (
  88. student_subject_id INT() not null AUTO_INCREMENT,
  89. subject_semestr_id INT() not null,
  90. group_student_id INT() not null,
  91. mark_1 INT() null,
  92. mark_2 INT() null,
  93. PRIMARY KEY (student_subject_id))';
  94.  
  95. $wykonaj5 = mysql_query ($zapytanie5);
  96. if($wykonaj5==true)
  97. {
  98. echo 'Tabela została utworzona';
  99. }
  100. else
  101. {
  102. echo 'Tabela nie została utworzona';
  103. }
  104.  
  105. $zapytanie6 = 'CREATE TABLE GroupStudent (
  106. group_student_id INT() not null AUTO_INCREMENT,
  107. user_id INT() not null,
  108. index_no CHAR(10) not null,
  109. semestr_no INT() not null,
  110. activity_status_id INT() not null,
  111. PRIMARY KEY (group_student_id))';
  112.  
  113. $wykonaj6 = mysql_query ($zapytanie6);
  114. if($wykonaj6==true)
  115. {
  116. echo 'Tabela została utworzona';
  117. }
  118. else
  119. {
  120. echo 'Tabela nie została utworzona';
  121. }
  122.  
  123. $zapytanie7 = 'CREATE TABLE ActivityStatus (
  124. activity_status_id INT() not null AUTO_INCREMENT,
  125. status_name CHAR(20) not null,
  126. PRIMARY KEY (activity_status_id))';
  127.  
  128. $wykonaj7 = mysql_query ($zapytanie7);
  129. if($wykonaj7==true)
  130. {
  131. echo 'Tabela została utworzona';
  132. }
  133. else
  134. {
  135. echo 'Tabela nie została utworzona';
  136. }
  137.  
  138.  
  139. $zapytanie8 = 'CREATE TABLE SubjectSemestr (
  140. subject_semestr_id INT() not null AUTO_INCREMENT,
  141. subject_id INT() not null,
  142. semestr_no INT() not null,
  143. year INT() not null,
  144. PRIMARY KEY (subject_semestr_id))';
  145.  
  146. $wykonaj8 = mysql_query ($zapytanie8);
  147. if($wykonaj8==true)
  148. {
  149. echo 'Tabela została utworzona';
  150. }
  151. else
  152. {
  153. echo 'Tabela nie została utworzona';
  154. }
  155.  
  156.  
  157. $zapytanie9 = 'CREATE TABLE Subject (
  158. subject_id INT() not null AUTO_INCREMENT,
  159. name NCHAR(10) not null,
  160. subject_type_id INT() not null,
  161. hours_number INT() not null,
  162. ects INT() not null,
  163. PRIMARY KEY (subject_id))';
  164.  
  165. $wykonaj9 = mysql_query ($zapytanie9);
  166. if($wykonaj9==true)
  167. {
  168. echo 'Tabela została utworzona';
  169. }
  170. else
  171. {
  172. echo 'Tabela nie została utworzona';
  173. }
  174.  
  175.  
  176. $zapytanie10 = 'CREATE TABLE SubjectType (
  177. subject_type_id INT() not null AUTO_INCREMENT,
  178. type_name CHAR(20) not null,
  179. PRIMARY KEY (subject_type_id))';
  180.  
  181. $wykonaj10 = mysql_query ($zapytanie10);
  182. if($wykonaj10==true)
  183. {
  184. echo 'Tabela została utworzona';
  185. }
  186. else
  187. {
  188. echo 'Tabela nie została utworzona';
  189. }
  190.  
  191.  
  192. $zapytanie11 = 'CREATE TABLE LecturerSubject (
  193. lecturer_subject_id INT() not null AUTO_INCREMENT,
  194. subject_semestr_id INT() null,
  195. group_lecturer_id INT() not null,
  196. PRIMARY KEY (lecturer_subject_id))';
  197.  
  198. $wykonaj11 = mysql_query ($zapytanie11);
  199. if($wykonaj11==true)
  200. {
  201. echo 'Tabela została utworzona';
  202. }
  203. else
  204. {
  205. echo 'Tabela nie została utworzona';
  206. }
  207.  
  208.  
  209. $zapytanie12 = 'CREATE TABLE GroupLecturer (
  210. group_lecturer_id INT() not null AUTO_INCREMENT,
  211. user_id INT() not null,
  212. user_title_id INT() not null,
  213. PRIMARY KEY (group_lecturer_id))';
  214.  
  215. $wykonaj12 = mysql_query ($zapytanie12);
  216. if($wykonaj12==true)
  217. {
  218. echo 'Tabela została utworzona';
  219. }
  220. else
  221. {
  222. echo 'Tabela nie została utworzona';
  223. }
  224.  
  225.  
  226. $zapytanie13 = 'CREATE TABLE UserTitle (
  227. user_title_id INT() not null AUTO_INCREMENT,
  228. user_id INT() not null,
  229. title_id INT() not null,
  230. PRIMARY KEY (user_title_id))';
  231.  
  232. $wykonaj13 = mysql_query ($zapytanie13);
  233. if($wykonaj13==true)
  234. {
  235. echo 'Tabela została utworzona';
  236. }
  237. else
  238. {
  239. echo 'Tabela nie została utworzona';
  240. }
  241.  
  242.  
  243. $zapytanie14 = 'CREATE TABLE Title (
  244. title_id INT() not null AUTO_INCREMENT,
  245. full_name CHAR(20) not null,
  246. title CHAR(10) not null,
  247. PRIMARY KEY (title_id))';
  248.  
  249. $wykonaj14 = mysql_query ($zapytanie14);
  250. if($wykonaj14==true)
  251. {
  252. echo 'Tabela została utworzona';
  253. }
  254. else
  255. {
  256. echo 'Tabela nie została utworzona';
  257. }
  258. ?>

tworzy 14 tabele tylko nie wiem czy kazda ma miec oddzielne zapytanie?
com
po pierwsze napisz sobie do tego funkcje do której tylko wrzucisz stringa z strukturą bazy ,bo pewnie koło obiektówki nie stałeś, ale powielanie tego samego kodu 14 razy jest bez sensu smile.gif A poza tym to musisz napisać ten skrypt tak, że tylko raz go wywołasz, bo przecież tabele tworzysz tylko raz w czasie działania, potem tylko ja uzupełniasz danymi wink.gif
mmmmmmm
1. Nie zastosowałeś się do moich rad powyżej (z post w tym wątku)
2. Wszędzie powinieneś mieć IF NOT EXISTS. Np. CREATE DATABASE IF NOT EXISTS ... Bo wcale nie obsługujesz błędów...Co to jest za obsługa, że napiszesz "Baza nie została utworzona"... To nic, że nie została utworzona - lecisz dalej... Może się uda stworzyć tabele... Bez sensu.
3. Z tego samego powodu całość powinieneś robić w transakcji.
4. Brak powiązań pomiędzy tabelami kluczami obcymi.
5. Jeśli chciałbyś je dodać, to w złej kolejności tworzysz tabele... Tabela `Group` powinna być tworzona przed tabelą `Users`.
6. Robisz:
$zapytanie = 'CREATE DATABASE $Dziekanat';
a potem:
$lacz = mysql_select_db ( 'WirtualnyDziekanat' );
Zdecyduj się - czy używasz zmiennej, czy stałej...
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.