Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Implementacja SQL - nowicjusz
Forum PHP.pl > Forum > Bazy danych
Opok
Witam!
Od razu pragnę zaznaczyć, że jestem kompletnym początkującym jeżeli chodzi o Bazy danych. Można powiedzieć, że zostałem zmuszony do zapoznania się z tym tematem. Moje pytanie tutaj na pewno będzie dla większości was banalne/głupie, lecz proszę zerknijcie na nie okiem. Nie chce gotowych rozwiązań po prostu goni mnie czas a mam wrażenie, że utknąłem na jednej z podstaw.

Sprawa wygląda tak :

Posiadam ksiąke PHP i MySQL Vademecum profesjonalisty wydanie trzecie (2005). Nie przerobiłem jej całej z braku czasu (chociaż wtedy pewnie nie miałbym obecnego problemu).
Zająłem się rozdziałem 27. Tworzenie koszka na zakupy. Wszystkie pliki gotowego projektu umieściłem na hostingu Friko.pl - http://www.sklepprojekt.doprzodu.com/

Kod zawiera funkcje łączące się z bazami danych ksiazka_kz.sql i populacja.sql, obecnie strona nie działa jak powinna ponieważ z mojego punktu widzenia nie ma dostępu do tych baz (komunikat Brak dost�pnych kategorii ).

Domyśliłem się, że nie wystarczy tych baz po prostu wrzucić na serwer ftp. Zalogowałem się na swojego konto na serwisie friko.pl i dodałem bazę danych 1194930_populacja, następnie zalogowałem się
do jej edycji poprzez phpMyAdmin kliknąłem w zakładkę SQL i spróbowałem zimportować bazę danych (zarrówno z ftp jak i z lokazji fizycznej na dysku ) populacja.sql za pomocą tamtejszej opcji.

Wyrzuciła ona błąd :

Zapytanie SQL:

USE ksiazka_kz;

MySQL zwrócił komunikat: Dokumentacja
#1044 - Access denied for user '1350587972_f'@'%' to database 'ksiazka_kz'

Podczas importu bazy ksiazka_kz

Zapytanie SQL:

CREATE DATABASE ksiazka_kz;

MySQL zwrócił komunikat: Dokumentacja
#1044 - Access denied for user '1350587972_f'@'%' to database 'ksiazka_kz'

I tu pojawia się moje pytanie. Czy moje myślenie idzie w ogóle w dobrym kierunku ? Jeżeli tak to co zrobić aby poprawnie zaimplementować te bazy do serwisu ? Jeżeli nie to czy macie jakieś rady?

Bardzo proszę o pomoc, lub jakiekolwiek materiały. Rozumiem, że to zapewne banalny problem lecz czas nie pozwala mi na dokładną analizę całej ksiązki od strony pierwszej do 604tej.

Pozdrawiam i dołaczam spokrewnione z problem kody.

//////////////////////////////////////////////////////////////////////////////

  1. USE ksiazka_kz;
  2.  
  3. INSERT INTO ksiazki VALUES ('8371973918','Tim Converse, Joyce Park','PHP4. Biblia',1,79, 'Chcesz tworzyć dynamiczne strony WWW współpracujące z bazami danych? Ten rzetelnie opracowany podręcznik zawiera analizy konkretnych problemów. Ułatwi zapoznanie się z najnowszą wersją języka umożliwiającego tworzenie skryptów dołączanych do stron HTML.');
  4. INSERT INTO ksiazki VALUES ('8371975058','Andrzej Kierzkowski', 'PHP 4. Tworzenie stron WWW. Ćwiczenia praktyczne',1,16, 'Zapraszamy do lektury kolejnych "ćwiczeń praktycznych" dotyczących technologii przydatnych w pracy webmastera. Tym razem nie są one przeznaczone dla zupełnych nowicjuszy.');
  5.  
  6. INSERT INTO kategorie VALUES (1,'Internet');
  7. INSERT INTO kategorie VALUES (2,'Podręczniki');
  8. INSERT INTO kategorie VALUES (3,'Fantastyka');
  9. INSERT INTO kategorie VALUES (4,'Ogrodnictwo');
  10.  
  11. INSERT INTO admin VALUES ('admin', sha1('admin'));


--------------------------------------------------------
  1. CREATE DATABASE ksiazka_kz;
  2.  
  3. USE ksiazka_kz;
  4.  
  5. CREATE TABLE klienci
  6. (
  7. idklienta int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  8. nazwisko char(60) NOT NULL,
  9. adres char(80) NOT NULL,
  10. miasto char(30) NOT NULL,
  11. wojew char(20),
  12. kod_poczt char(10),
  13. kraj char(20) NOT NULL
  14. ) type=InnoDB;
  15.  
  16. CREATE TABLE zamowienia
  17. (
  18. idzamowienia int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  19. idklienta int UNSIGNED NOT NULL REFERENCES klienci(idklienta),
  20. wartosc float(6,2),
  21. DATA date NOT NULL,
  22. stan_zam char(10),
  23. dos_nazwisko char(60) NOT NULL,
  24. dos_adres char(80) NOT NULL,
  25. dos_miasto char(30) NOT NULL,
  26. dos_wojew char(20),
  27. dos_kod_poczt char(10),
  28. dos_kraj char(20) NOT NULL
  29. ) type=InnoDB;
  30.  
  31. CREATE TABLE ksiazki
  32. (
  33. isbn char(13) NOT NULL PRIMARY KEY,
  34. autor char(100),
  35. tytul char(100),
  36. idkat int UNSIGNED,
  37. cena float(4,2),
  38. opis varchar(255)
  39. ) type=InnoDB;
  40.  
  41. CREATE TABLE kategorie
  42. (
  43. idkat int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  44. nazwakat char(60) NOT NULL
  45. ) type=InnoDB;
  46.  
  47. CREATE TABLE produkty_zamowienia
  48. (
  49. idzamowienia int UNSIGNED NOT NULL REFERENCES zamowienia(idzamowienia),
  50. isbn char(13) NOT NULL REFERENCES ksiazki(isbn),
  51. cena_produktu float(4,2) NOT NULL,
  52. ilosc tinyint UNSIGNED NOT NULL,
  53. PRIMARY KEY (idzamowienia, isbn)
  54. ) type=InnoDB;
  55.  
  56. CREATE TABLE admin
  57. (
  58. nazwa_uz char(16) NOT NULL PRIMARY KEY,
  59. haslo char(40) NOT NULL
  60. );
  61.  
  62. GRANT SELECT, INSERT, UPDATE, DELETE
  63. ON ksiazka_kz.*
  64. TO ksiazka_kz@localhost IDENTIFIED BY 'haslo';




--------------------------------------------------------

  1. function pobierz_kategorie()
  2. {
  3. // zapytanie bazy danych o listę kategorii
  4. $lacz = lacz_bd();
  5. $zapytanie = 'select idkat, nazwakat
  6. from kategorie';
  7. $wynik = @$lacz->query($zapytanie);
  8. if (!$wynik)
  9. return false;
  10. $ilosc_kat = @$wynik->num_rows;
  11. if ($ilosc_kat ==0)
  12. return false;
  13. $wynik = wynik_bd_do_tablicy($wynik);
  14. return $wynik;
  15. }


--------------------------------------------------------

  1. unction wyswietl_kategorie($tablica_kat)
  2. {
  3. if (!is_array($tablica_kat))
  4. {
  5. echo 'Brak dostępnych kategorii<br />';
  6. return;
  7. }
  8. echo '<ul>';
  9. foreach ($tablica_kat as $rzad)
  10. {
  11. $url = 'pokaz_kat.php?idkat='.($rzad['idkat']);
  12. $tytul = $rzad['nazwakat'];
  13. echo '<li>';
  14. tworz_html_url($url, $tytul);
  15. }
  16. echo '</ul>';
  17. echo '<hr />';
  18. }
sazian
wywal to
  1. USE ksiazka_kz;


  1. CREATE DATABASE ksiazka_kz;
  2.  
  3. USE ksiazka_kz;

nie masz uprawnień do utworzenia oraz używania bazy o nazwie ksiazka_kz
Opok
Wyrzucenie tych fragmentów powoduje inne błędy. Czy mógłby mnie ktoś nakierować na jakiś opis podstaw implementowania gotowych plików .sql do strony www ?
Szukam i szukam, lecz moje zapytania w google nie dają mi odpowiedzi.

Dzięki za reakcje
viking
Książka jest mocno przestarzała. Rozszerzenie mysql nie jest już dłużej rozwijane. Zamiast tego powinieneś poczytać o PDO / mysqli.
Zapytania możesz wklejać przez phpmyadmin albo jeszcze lepiej MySQL Workbench. Tak samo zmiany uprawnień. Poza tym staraj się wyszukiwać składnię bezpośrednio w dokumentacji bo coś mogło się zmienić, coś innego jest nieaktualne. Tutaj nie masz po prostu uprawnień.
mmmmmmm
Wywal jeszcze to:
GRANT SELECT, INSERT, UPDATE, DELETE
ON ksiazka_kz.*
TO ksiazka_kz@localhost IDENTIFIED BY 'haslo';
Opok
Czegokolwiek nie wywalę kodu dalej baza nie przyjmuje. Mój widok : http://imageshack.us/a/img210/908/phpaq.jpg

@viking

Dzięki za informacje, domyślam się z w naszej dziedzinie książka z 2005r jest już nieaktualna.
Bardzo zależy mi na odpaleniu tego kodu aby po prostu kod na stronie działał tak jak zakłada książka.

Cały czas odnoszę wrażenie, że coś prostego nie działa bo po prostu nie wrzucam tego w odpowiednie miejsce.
Czy po tym zrzucie ekranu możecie stwierdzić, że to właśnie tej funkcji import powinienem używać aby
zaimplementować te bazy danych do serwisu www? Czy to wina samego friko.pl który nie supportuje jakieś składni lub składni która jest
już na tyle przestarzała?
sazian
głupie pytanie: oczywiście wybrałeś bazę danych ? to znaczy czy kliknąłeś po lewej stronie to "119..." ?
Opok
Nie takie głupie. Oczywiście nie. Po wyrzuceniu CREATE DATABASE ksiazka_kz; USE ksiazka_kz; oraz GRANT SELECT, INSERT, UPDATE, DELETE ON ksiazka_kz.* TO ksiazka_kz@localhost IDENTIFIED BY 'haslo';
mogłem importować bazę ksiazka_kz. ale populacja już wyrzuca masę błedów.

Ogólnie jestem zdania, że nic tu nie powinienem usuwać, aby to działało najwidoczniej nie rozumiem kodu bardziej niż myślałem. Po prostu nie mam podstaw i raczej nawet z waszą pomocą nie uda mi się tego poprawnie odpalić aby działały wszystkie pliki które na serwer wrzuciłem. Chyba, że ktoś z was ma chwilę - podałbym hasła oraz wszelkie pliki - no ale tu rozumiem, że raczej nikt czasu na tyle nie będzie miał.
Jeżeli posiadacie jakiekolwiek linki do podstaw implementacji sql do serwerów lub jakieś key word które mogłyby mnie do tego naprowadzić to byłbym wdzięczny. Bo póki co klikam na oślep
sazian
sprawdziłem u siebie i wszystko działa.

Małe wyjaśnienie:
Na pewno musisz usunąć CREATE DATABASE ksiazka_kz; i USE ksiazka_kz;

pierwsze zapytanie tworzy bazę danych czyli właśnie to co wybrałeś po lewej. Nie możesz utworzyć nowej bazy ponieważ nie masz do tego uprawnień.

Zapytanie USE wybiera bazę danych którą utworzyłeś przy pomocy CREATE DATABASE. Nie możesz jej wybrać ponieważ jej niema (nie masz uprawnień do utworzenia)

Kliknięcie tego "119..." po lewej miało taki sam efekt jak wpisanie USE 119...


Jeżeli tabele już istnieją import nie zadziała ponieważ będziesz próbował utworzyć tabele o nazwie która już istnieje w bazie, więc najpierw usuń wszystkie tabele - są wylistowane po lewej pod nazwą bazy. Wystarczy kliknąć na wybraną tabelę, a następnie w opcjach "delete the table" lub zapytaniem
  1. DROP TABLE nazwa_tabeli


Teraz gdy masz pustą bazę zrób ponownie import - możesz wklejać zapytania bezpośrednio do zakładki SQL.
Najpierw wszystkie zapytania "CREATE TABLE", później inserty

U mnie lokalnie zadziałało wink.gif
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.