Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]zmienna jako nazwa tabeli w msql
przemo191
post
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Mam taki kod:

  1. $nr_rejestracji=$_POST['nr_rejestracji'];
  2. $typ=$_POST['typ'];
  3. $data_dodania=$_POST['data_dodania'];
  4. $przebieg_przy_dodaniu=$_POST['przebieg_przy_dodaniu'];
  5.  
  6. mysql_connect("localhost",$username,$password);
  7. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  8.  
  9.  
  10. $query= "CREATE TABLE $nr_rejestracji (id int(6) NOT NULL auto_increment, opis_naprawy varchar(300) NOT NULL, cena_naprawy varchar(30) NOT NULL, miejsce_wykonania varchar(30) NOT NULL, data_wykonania varchar(15) NOT NULL, przebieg_przy_naprawie varchar(20) NOT NULL,PRIMARY KEY (id))";
  11. mysql_query($query);


Problem tkwi w tym, że kiedy w "CREATE TABLE $nr_rejestracji" jest zmienna skrypt nie tworzy nowej tabeli w mojej bazie danych. Lecz kiedy $nr_rejestracji zmienię w stałą np. nr_rejestracji (bez znaku dolara), skrypt tworzy nową tabele.

Jestem początkujący w php jak i mysql, więc proszę o wyrozumiałość w moich pewnie podstawowych błędach.

Ten post edytował przemo191 1.08.2011, 10:53:09
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




1)
var_dump($nr_rejestracji);
Co ci wyświetla?

2) Tworzenie tabele na nową rejestracje to bezsens... tworzy sie tabele na rejestracje, gdzie każda rejestracja to nowy rekord w tabeli a nie nowa tabela.
Go to the top of the page
+Quote Post
przemo191
post
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Zwraca:
  1. string 'FZ 2671' (length=7)


Nowa tabela na nowy numer rejestracji jest mi potrzebny, ale dużo tych rejestracji nie będzie, więc nie przeszkadza mi to.

/edit

Ponieważ później do każdej tabeli w inna rejestracją bedę musiał wpisywać sporo rekordów.

Ten post edytował przemo191 1.08.2011, 10:57:58
Go to the top of the page
+Quote Post
bastard13
post
Post #4





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tworzenie tabeli dla każdego pojazdu to bardzo zły pomysł. Powinieneś utworzyć tabelę pojazdy, do której dodajesz kolejne rekordy.
Poza tym nigdy nie używaj @ w kodzie. Błędów się nie ukrywa, błędy się eliminuje lub im zapobiega. W dodatku wiele mówią i gwarantuję ci, że błędy to nie jest czyste zło, wręcz odwrotnie.
Jeżeli jednak upierasz się na tym tworzeniu tabeli to:
- dodaj do kodu, przed wywołaniem mysql_query(), var_dump($_POST) i napisz co ci wyświetla.
- dostajesz jakieś błędy lub cokolwiek takiego, czy zero reakcji?

@up trochę się spóźniłem:)
W nazwie tabeli nie możesz mieć spacji, zamień ją np. na _

Ten post edytował bastard13 1.08.2011, 10:59:19
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




twoja rejestracja ma spację.... gdy wstawiasz tekst stały to nie masz spacji....


nie:
CREATE TABLE $nr_rejestracji
a:
CREATE TABLE `$nr_rejestracji`

Cytat
Nowa tabela na nowy numer rejestracji jest mi potrzebny
Nie, nie jest ci potrzebna. Sam napisałeś, że jesteś początkujący, więc tylko ci się wydaje, że jest ci potrzebna.

Cytat
Ponieważ później do każdej tabeli w inna rejestracją bedę musiał wpisywać sporo rekordów.
To żaden argument
Go to the top of the page
+Quote Post
przemo191
post
Post #6





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Zwraca:

  1. 'nr_rejestracji' => string 'FZ 2671' (length=7)
  2. 'typ' => string 'ciągnik siodłowy' (length=18)
  3. 'data_dodania' => string '1.08.2011r.' (length=11)
  4. 'przebieg_przy_dodaniu' => string '182198km' (length=8)


Co do błędów, to zero.

Cytat(nospor @ 1.08.2011, 11:59:27 ) *
CREATE TABLE $nr_rejestracji
a:
CREATE TABLE `$nr_rejestracji`


Niestety nie działa ;(
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




spacje masz zamienić na _. Napisałem wcześniej z rozpędu i nie pomyślałem.
Go to the top of the page
+Quote Post
przemo191
post
Post #8





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


FZ 2671 zmieniłem na FZ_2671, niestety dalej nic.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz kod po zmianach, bo pewnie coś zepsułeś.

Zanim jednak napiszesz kolejnego posta, zastosuj się do tego tematu:
Temat: Jak poprawnie zada pytanie
Go to the top of the page
+Quote Post
przemo191
post
Post #10





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Znalazłem chochlika, zamiast `$nr_rejestracji` wpisałem $nr_rejestracji`. Dzięki za tak błyskawiczną pomoc, oczywiście + będzie.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No to skoro problem rozwiązany to polecam ci jednak zmienic strukturę, bo gwarantuję ci, że prędzej czy później pożałujesz tego co masz teraz.

Dodatkowo:
cena ma być liczbą a nie tekstem
data wykonania ma być datą a nie tekstem
przebieg ma być liczbą a nie tekstem
Go to the top of the page
+Quote Post
przemo191
post
Post #12





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Być może, ale człowiek uczy się na błędach, jak się pogubię to wymyślę nową strukture (IMG:style_emoticons/default/wink.gif)
Dzięki za podpowiedzi zaraz to pozmieniam.
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Być może, ale człowiek uczy się na błędach, jak się pogubię to wymyślę nową strukture
Człowiek uczy się też na wskazówkach. Skoro ktoś bardziej doświadczony ci doradza to lepiej posłuchaj już teraz. No ale Twoja sprawa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
przemo191
post
Post #14





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 1.08.2011, 12:23:48 ) *
Człowiek uczy się też na wskazówkach. Skoro ktoś bardziej doświadczony ci doradza to lepiej posłuchaj już teraz. No ale Twoja sprawa (IMG:style_emoticons/default/smile.gif)


Nie zaprzeczę, bo jest to prawdą. A ty jaką strukturę byś proponował?
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Musiałbym poznać większy obraz sytuacji. Opisz co to będzie, co tam będzie. Pisałeś coś o dużej liczbe rekordów dla danej rejestracji
Go to the top of the page
+Quote Post
przemo191
post
Post #16





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Ja widzę to miej więcej tak, muszą być opcje:
1. dodawania nowych samochodów do bazy,
2. do każdego samochodu trzeba będzie pododawać 5 różnych danych (opis naprawy, cena naprawy, miejsce wykonania, data wykonania, oraz przebieg samochodu przy naprawie)
3. aktualizacja tych 5 różnych pól z danymi w razie błędnego wpisania,
3. usuwanie rekordów z wpisami,
4. zliczanie kosztów wszystkich napraw dla każdego samochodu z osobna
5. zliczanie kosztów wszystkich napraw przy wszystkich samochodach

Wszystkie dane będą wprowadzane z odpowiedniego formularza.

Ten post edytował przemo191 1.08.2011, 11:44:16
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




tabela SAMOCHOD
ID
REJESTRACJA
inne dane dla samochodu

tabela NAPRAWA
ID
ID_SAMOCHODU - klucz obcy z tabeli SAMOCHOD wskazujący na pole ID
OPIS
CENA
MIEJSCE
DATA

I już. Na takiej strukturze zrealizujesz wszystko bez problemu. Na tym co ty wymyśliłeś, miałbyś już duże problemy.
Go to the top of the page
+Quote Post
przemo191
post
Post #18





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


I to jest chyba najlepsze rozwiązanie, naprawdę dzięki Ci za pomoc.

Cytat(nospor @ 1.08.2011, 12:47:03 ) *
klucz obcy z tabeli SAMOCHOD wskazujący na pole ID


Jeszcze raz ja, zrobiłem wszystko co chciałem ale nie mogę zrobić tego co napisałeś. Po prostu nie wiem jak ;( szukałem w google, ale nic ciekawego mi nie pokazał.
Go to the top of the page
+Quote Post
nospor
post
Post #19





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Utworzyłeś pole o nazwie ID_SAMOCHODU?

Jeśli nie to utwórz i przejdź do punktu niżej

Jeśli tak to:
- wersja LITE:
i już masz to co napisałem
- wersja HARDCOR dla super hiper wyjadaczy*:
Jeśli chcesz mieć super hiper baze, to wypadałoby zrobić ją typu InnoDB i zakładać relacje między tabelami, by baza sama dbała o porządek.
Np. jak skasujesz samochód, to wszystkie naprawy dla tego samochodu się skasują z automatu. Albo np. na odwrót, że jeśli masz jakieś naprawy dla samochodu X to baza nie pozwili ci usunąć samochodu X.

* bez przesady z tymi super hiper wyjadaczami, ale jeśli dopiero zaczynasz, to można narazie olać etap super hiper kluczy obcych (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
przemo191
post
Post #20





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

Ostrzeżenie: (0%)
-----


Może być wersja lite (IMG:style_emoticons/default/happy.gif)
pole id_samochodu stworzyłem już na początku, ale wartość tego pola wynosi 0, a powinno odpowiednio do id w tabeli samochody, czy jak?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 12:13