Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie tabeli, problem z nazwą.
Forum PHP.pl > Forum > Bazy danych > MySQL
ublizzard
Witam,
w jaki sposób mogę utworzyć tabelę, której nazwa będzie zawierała zarówno spację jaki polskie znaki.
Gdy chcę utworzyć tabelę przez phpMyadmina to jest ok, ale poniższy kod nie zwraca żadnego błędu, ale też nie powoduje utworzenia tabeli.
Jeśli natomiast $tablica jest ciągiem znaków bez spacji i polskich znaków to tabela się tworzy i nie ma problemu.
Czy ktoś mi pomoże?
  1. <?php
  2. // połączenie się lokalnym serwerem bazy MySQL
  3. $sql_conn = mysql_connect('mysql.pl', 'admin', 'psw');
  4. mysql_query("set names 'utf8';");
  5. // wybieramy bazę danych
  6. mysql_select_db('katalog');
  7.  
  8. $tablica= "Firmy wg branż";
  9. // tworzymy tabelę nba
  10. $zapytanie = 'CREATE TABLE '.$tablica.' (id int NOT NULL AUTO_INCREMENT, nazwisko char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))';
  11. $idzapytania = mysql_query($zapytanie);
  12. mysql_close($sql_conn);
  13. ?>
Niktoś
  1. $zapytanie = 'CREATE TABLE ['.$tablica.'] (id int NOT NULL AUTO_INCREMENT, nazwisko char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))';
ublizzard
@Niktoś Nie działa to zapytanie, ale znalazłem coś podobnego; zamiast ] wstawiam apostrof:
  1. $zapytanie = 'CREATE TABLE `'.$tablica.'` (id int NOT NULL AUTO_INCREMENT, nazwisko char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY KEY(id))';

I to rozwiązuje problem spacji, ale nadal, jeśli zmienna $tablica posiada jakąś polską literę to nie chce mi utworzyć tabeli sad.gif
nospor
' to jest apostrof
` to nie jest apostrof

Bo tak na dobrą sprawę nazw tabel z poslkimi krzakami się nie daje. Po co ci to?
ublizzard
Co do apostrofu to racja.
chcę zrobić coś takiego:
nazwa tabeli jest nazwą jakiejś tam kategorii.
wtedy za pomocą:
  1. $zapytanie = "SHOW TABLES";
  2. echo '<table>'."\n";
  3. while ($wiersz = mysql_fetch_row($idzapytania))
  4. {
  5. echo "\t\t\t".'<tr><td>'. $wiersz[0] ."</td></tr>\n";
  6. }
  7. echo "\t\t</table>\n";

mogę wyświetlić te główne kategorie (dlatego chcę mieć w nazwie polskie znaki).
nospor
No to robisz bardzo źle. Nie robi się oddzielnych tabel dla każdej kategorii. To przeczy każdej podstawowej nauce o bazach danych
ublizzard
No może to i racja.
Bo chodzi mi o to, że pojedynczy wpis wyglądałby tak:
id | adres | nazwa | kategoria | podkategoria

I teraz zastanawiam się jak wyświetlić na jednej stronie wszystkie kategorie. Czy zrobić drugą tabelę z kategoriami, czy jakoś za pomocą zapytania MYSQL?

nospor
Tabela KATEGORIA
ID
NAME
W tej tabeli trzymasz nazwy kategorii

Tabela JAKAS TAM Z TWOIMI DANYMI
ID
NAME
COS TAM JESZCZE
ID_KATEGORII

I już.
Niktoś
Cytat
No to robisz bardzo źle. Nie robi się oddzielnych tabel dla każdej kategorii. To przeczy każdej podstawowej nauce o bazach danych

Nie koniecznie- ma to swoje wady ,ale i zalety.
Ja podobny schemat -aplikacje już prawie kończe, a powiem że nie mam takich kwerend ja na tej stronie
Temat: optymalizacja zapytania nawet przy wyszukiwaniu we wszystkich tabelkach.
Tam to dopiero musi być wszystko rozstrzelone.
nospor
Cytat
Nie koniecznie- ma to swoje wady ,ale i zalety.
W tym przypadku nie ma żadnych zalet, ma same wady.
Niktoś
Jedyną wadą jaką ja widzę w tym schemacie to" wyszukiwanie w wielu kategoriach.
Dla określonej kategorii ,wyszukiwanie będzie szybsze niż przy jednej tabeli głównej dla wszystkich kategorii czy przy %like ,czy full text.
Dla określonej kategorii możemy ,utworzyć unikalną tabele z podkategoriami gdzie dla każedej ketegorii tabela ta będzie inna.Przy ogólnej tabeli będzie to trudniejsze.
Nie można tu mówić ,że ma same wady-jedyną największą wadą ,z którą ja się styknąłem to wyszukiwanie we wszystkich tabelach kategorii,innych wad do tej pory nie zauważyłem.
nospor
Niktoś widzę posiłkujesz się swoim projektem, który kiedyś męczyłeś na forum gdzie miałeś petryliardy danych. To wymagało innego podejście a i wówczas mówiłem ci, że się z tym nie zgadzam.

Wszystko co tu piszesz to bzdura, przepraszam że tak ostro ale to prawda. Tyle w temacie, nie mam czasu dokładniej wyjaśniać tej oczywistej sprawy. Mam tylko nadzieję, że autorowi tematu nie udzieli się Twój tok myślenia. A jeśli się udzieli, to życzę powodzenia na złej drodze projektowania.
Niktoś
Ty tak uważasz,ja uważam inaczej-brudy wyjdą w praniu:).Przytocz mi choćby jeden porządny artykuł,który by mówił o bezsensowności tworzenia tabel kategorii,jakiś o wzorcach projektowych takich baz.Z chęcią poczytam, bo się nie spotkałem z takim.

Mam wrażenie ,że Twoje indywidualne odczucia, bo nie znalazłem takiego artykułu, a wierz mi przeglądłem już chyba perdyliony wityryn.
xdev
Jeśli chcesz to zrobić w ten sposób, to po prostu zrób to na plikach... bo jeśli tak projektujesz tabele, to nie ma najmniejszego sensu używać do tego bazy danych. Cały ten model jest totalnie bez sensu a w związku z kodem który będziesz musiał napisać - cała aplikacja będzie się nadawać do wyrzucenia i napisania od nowa. Bo nikt z taką bazą w rozsądnym czasie porządku nie zrobi.

Właściwie to nawet nie jest baza danych jeśli dane wyciągasz przez SHOW TABLES.

Cytat
Dla określonej kategorii ,wyszukiwanie będzie szybsze niż przy jednej tabeli głównej dla wszystkich kategorii czy przy %like ,czy full text.

To fakt, jeśli źle zrobisz wyszukiwanie to będzie szybsze dla małych tabel.
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.