Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak dodac rekordy do wielu tabel
Forum PHP.pl > Forum > PHP
taisa
mam nastepujący problem

baza ma strukturę:

CREATE TABLE SZKOLA (
id_szkola INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nazwa VARCHAR(50) NOT NULL,
ulica VARCHAR(50) NOT NULL,
miasto VARCHAR(30) NOT NULL,
PRIMARY KEY(id_szkola)
);

CREATE TABLE UZYTKOWNICY_WYROZNIENI (
id_uzytk_wyr INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
imie VARCHAR(20) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
login VARCHAR(20) NOT NULL,
haslo VARCHAR(20) NOT NULL,
e_mail VARCHAR(50) NOT NULL,
PRIMARY KEY(id_uzytk_wyr)
);

CREATE TABLE UZYTKOWNICY (
id_student INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
imie VARCHAR(20) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
login VARCHAR(20) NOT NULL,
haslo VARCHAR(20) NOT NULL,
data_ur DATE NOT NULL,
miasto VARCHAR(30) NOT NULL,
wojewodztwo VARCHAR(30) NOT NULL,
e_mail VARCHAR(50) NOT NULL,
data_przystapienia DATE NOT NULL,
zainteresowania VARCHAR(100) NOT NULL,
plec VARCHAR(20) NOT NULL,
PRIMARY KEY(id_student),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

rekordy będą dodawane poprzez wypełnienie odpowedniego formularza na stronie www, użytkownicy wyróżnieni to tacy, którzy mają utworzone konto i wchodzą na strone poprzez zalogowanie się czyli wpisanie loginu i hasła podanego podczas rejestracji

Moje pytanie brzmi: jak mogę w php dodać rekordy powtarzające się zarówno w tabeli użytkownicy jak i użytkownicy wyróznieni podczas rejestracji?
maverickkk
Mógłbyś wykonać dwa zapytania zaraz po sobie przy rejestracji. Jedną dla tabeli 'UZYTKOWNICY' drugie dla 'UZYTKOWNICY_WYROZNIENI'.
taisa
Cytat(maverickkk @ 2006-04-18 15:51:27)
Mógłbyś wykonać dwa zapytania zaraz po sobie przy rejestracji. Jedną dla tabeli 'UZYTKOWNICY' drugie dla 'UZYTKOWNICY_WYROZNIENI'.

podobnie myślałam i zrobiłam coś takiego:

// dodajemy rekord do bazy
$sql = "INSERT INTO UZYTKOWNICY (`id_student`, `SZKOLA_id_szkola`, `imie`, `nazwisko`, `login`, `haslo`, `data_ur`, `miasto`, `wojewodztwo`, `e_mail`, `data_przystapienia`, `zainteresowania`, `plec`)".
"VALUES(LAST_INSERT_ID (),'{$id_szkola}','{$imie}','{$nazwisko}', '{$login}','{$haslo}', '{$data_ur}', '{$miasto}', '{$wojewodztwo}', '{$email}', CURDATE(),'{$zainteresowania}','{$plec}')";

$sql = "INSERT INTO UZYTKOWNICY_WYROZNIENI ('id_uzytk_wyr', `imie`,'nazwisko', 'login', 'haslo`,'e_mail')".
"VALUES(LAST_INSERT_ID(),'{$iimie}','{$nazwisko}','{$login}', '{$haslo}','($email)')";

wywala mi wtedy taka informację:
1064: 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 ''id_uzytk_wyr', `imie`,'nazwisko', 'login', 'haslo`,'e_mail')VA Zostales dodany do bazy !

i co ważne wcale nie dodaje rekordów do bazy...

Proszę o pomoc, co robię źle.....
maverickkk
Wyrzuć średniki przy nazwach kolumn.
taisa
Cytat(maverickkk @ 2006-04-18 18:19:30)
Wyrzuć średniki przy nazwach kolumn.

interesujące...

jak zrobię cos takiego:

  1. <?php
  2.  
  3. // dodajemy rekord do bazy 
  4. $sql = "INSERT INTO UZYTKOWNICY (id_student, SZKOLA_id_szkola, imie, nazwisko, login, haslo, data_ur, miasto
    , wojewodztwo, e_mail, data_przystapienia, zainteresowania, plec)"
    ."VALUES(LAST_INSERT_ID(),'{$id_szkola}','{$imie}','{$nazwisko}', '{$login}','{$haslo}', '{$data_ur}', '{$miasto}', '{$wojewodztwo}', '{$email}', CURDATE(),'{$zainteresowania}','{$plec}')";
  5.  
  6. $sql = "INSERT INTO UZYTKOWNICY_WYROZNIENI (id_uzytk_wyr, imie, nazwisko, login, haslo, e_mail)". "VALUES(LAST_INSERT_ID(),'{$imie}','{$nazwisko}','{$login}', '{$haslo}','($email)')"; 
  7.  
  8. ?>

poprawiam
---
nospor


to dodawane są rekordy TYLKO do tabeli uzytkownicy_wyroznieni

Dalczego??
maverickkk
Właśnie przewidywałem coś ale wczęsniej otym nie pisałem.


A robisz tak że masz zapytanie dla bazy 'UZYTKOWNICY' i je poprostu wykonujesz blink.gif questionmark.gif

- Zapytanie dla UZYTKOWNICY
- Wykonanie zapytania
- Zapytanie dla UZYTKOWNICY_WYROZNIENI
- Wykonanie zapytania

i czy gdy rejestrujesz popdajesz wszystkie dane dla kolumn w tabeli 'UZYTKOWNICY' questionmark.gif
dr_bonzo
'id_uzytk_wyr', `imie`

raz uzywasz apostrofa ( ' ) raz (`) -- nazwy kolumn podawaj bez otaczania ich zadnymi znakami (no chyba, ze uzyles zarezerwowanego slowa dla nazwy kolumny, np. select to wtedy: `select`).
taisa
Cytat(maverickkk @ 2006-04-19 08:16:32)
Właśnie przewidywałem coś ale wczęsniej otym nie pisałem.


A robisz tak że masz zapytanie dla bazy 'UZYTKOWNICY' i je poprostu wykonujesz  blink.gif questionmark.gif

- Zapytanie dla UZYTKOWNICY
- Wykonanie zapytania
- Zapytanie dla UZYTKOWNICY_WYROZNIENI
- Wykonanie zapytania

i czy gdy rejestrujesz popdajesz wszystkie dane dla kolumn w tabeli 'UZYTKOWNICY' questionmark.gif

Dziękuję za zwrócenie mi uwagi na tak prosty ale jakze istotny błąd... rolleyes.gif
po wstawieniu odpowiedniej liniki dodawane są rekordy do obu tabel ale żeby nie było tak różowo mam jeszcze jedno pytanie czemu nie działa prawidłowo kolumna SZKOLA_id_szkola ... nie wstawiane są kolejne numery id teraz są zera.
Polecenie insert dałam 2 razy i 2-krotnie są zera
maverickkk
usuń średniki z: '{$id_szkola}'

czyli zostanie {$id_szkola}

bo wstawiasz liczbe a nie tekst.

I poco ci {} questionmark.gif potrzebne to ?

jak nie zadziałą to wywal też {} i zzostanie samo $id_szkola
nospor
Cytat
usuń średniki
jakie sredniki? To są apostrofy...

@taisa skoro wstawia ci zera, znaczy ze cos w zmiennej $id_szkola masz nie tak. a co to my niestety wrozki nie jestesmy smile.gif
taisa
Cytat(maverickkk @ 2006-04-19 08:34:34)
usuń średniki z: '{$id_szkola}'

czyli zostanie {$id_szkola}

bo wstawiasz liczbe a nie tekst.

I poco ci {} questionmark.gif potrzebne to ?

jak nie zadziałą to wywal też {} i zzostanie samo $id_szkola

niestety żaden z tych 2-ch sposobów nie działa... sad.gif
maverickkk
taisa to sprawdz to oczym mówi nospor.
dr_bonzo
  1. <?php
  2. $sql = "INSERT INTO UZYTKOWNICY_WYROZNIENI ('id_uzytk_wyr', `imie`,'nazwisko', 'login', 'haslo`,'e_mail')".
  3. "VALUES(LAST_INSERT_ID(),'{$iimie}','{$nazwisko}','{$login}', '{$haslo}','($email)')";
  4. print( $sql );
  5. ?>

i podaj to co sie wyswietli razem z komunikatem bledu (dla drugiego zapytanbia tez)
taisa
Cytat(dr_bonzo @ 2006-04-19 09:29:16)
  1. <?php
  2. $sql = "INSERT INTO UZYTKOWNICY_WYROZNIENI ('id_uzytk_wyr', `imie`,'nazwisko', 'login', 'haslo`,'e_mail')".
  3. "VALUES(LAST_INSERT_ID(),'{$iimie}','{$nazwisko}','{$login}', '{$haslo}','($email)')";
  4. print( $sql );
  5. ?>

i podaj to co sie wyswietli razem z komunikatem bledu (dla drugiego zapytanbia tez)

// dodajemy rekord do bazy
$sql = "INSERT INTO UZYTKOWNICY (id_student, SZKOLA_id_szkola, imie, nazwisko, login, haslo, data_ur, miasto, wojewodztwo, e_mail, data_przystapienia, zainteresowania, plec)"."VALUES(LAST_INSERT_ID(),'{$id_szkola}','{$imie}','{$nazwisko}', '{$login}','{$haslo}', '{$data_ur}', '{$miasto}', '{$wojewodztwo}', '{$email}', CURDATE(),'{$zainteresowania}','{$plec}')";

$wynik = mysql_query($sql);

$sql = "INSERT INTO UZYTKOWNICY_WYROZNIENI (id_uzytk_wyr, imie, nazwisko, login, haslo, e_mail)". "VALUES(LAST_INSERT_ID(),'{$imie}','{$nazwisko}','{$login}', '{$haslo}','($email)')";

teraz już jest ok...tzn dodawane są rekordy do obu tablic ale w kolumnie o nazwie SZKOLA_id_szkola nie jest dodawany kolejny nr id tylko są same zera
nospor
@taisa ale my to juz wiemy...
propnuje jeszcze raz przeczytac wszystkie posty od momentu, gdy nas pierwszy raz o tym poinformowales. prosze sie do nich odniesc i podac oco proszą....
maverickkk
taisa -> a tam czasem w tabeli 'UZYTKOWNICY' nie ma być 'id_szkola' zamiast 'SZKOLA_id_szkola' questionmark.gif guitar.gif
taisa
Cytat(maverickkk @ 2006-04-19 11:13:56)
taisa -> a tam czasem w tabeli 'UZYTKOWNICY' nie ma być 'id_szkola' zamiast 'SZKOLA_id_szkola'  questionmark.gif guitar.gif

to może ja podam jak wygląda cała baza ( bo do tej pory operowałam jej częścią


CREATE TABLE SZKOLA (
id_szkola INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nazwa VARCHAR(50) NOT NULL,
ulica VARCHAR(50) NOT NULL,
miasto VARCHAR(30) NOT NULL,
PRIMARY KEY(id_szkola)
);

CREATE TABLE UZYTKOWNICY_WYROZNIENI (
id_uzytk_wyr INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
imie VARCHAR(20) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
login VARCHAR(20) NOT NULL,
haslo VARCHAR(20) NOT NULL,
e_mail VARCHAR(50) NOT NULL,
PRIMARY KEY(id_uzytk_wyr)
);

CREATE TABLE UZYTKOWNICY (
id_student INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
imie VARCHAR(20) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
login VARCHAR(20) NOT NULL,
haslo VARCHAR(20) NOT NULL,
data_ur DATE NOT NULL,
miasto VARCHAR(30) NOT NULL,
wojewodztwo VARCHAR(30) NOT NULL,
e_mail VARCHAR(50) NOT NULL,
data_przystapienia DATE NOT NULL,
zainteresowania VARCHAR(100) NOT NULL,
plec VARCHAR(20) NOT NULL,
PRIMARY KEY(id_student),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE SERIA_D (
id_seria_D INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SERIA_D_id_seria_D INTEGER UNSIGNED NOT NULL,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
data_seria_D DATE NOT NULL,
godz_seria_D TIME NOT NULL,
seria_D INTEGER(50) NOT NULL,
PRIMARY KEY(id_seria_D),
INDEX SERIA_D_FKIndex1(SZKOLA_id_szkola),
INDEX SERIA_D_FKIndex2(SERIA_D_id_seria_D),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(SERIA_D_id_seria_D)
REFERENCES SERIA_D(id_seria_D)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE SERIA_A (
id_seria_A INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
data_seria_A DATE NOT NULL,
godz_seria_A TIME NOT NULL,
seria_A INTEGER(50) NOT NULL,
PRIMARY KEY(id_seria_A),
INDEX SERIA_A_FKIndex1(SZKOLA_id_szkola),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE SERIA_B (
id_seria_B INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
data_seria_B DATE NOT NULL,
godz_seria_B TIME NOT NULL,
seria_B BLOB NOT NULL,
PRIMARY KEY(id_seria_B),
INDEX SERIA_B_FKIndex1(SZKOLA_id_szkola),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE SERIA_C (
id_seria_C INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
data_seria_C DATE NOT NULL,
godz_seria_C TIME NOT NULL,
seria_C INTEGER(50) NOT NULL,
PRIMARY KEY(id_seria_C),
INDEX SERIA_C_FKIndex1(SZKOLA_id_szkola),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE POMIARY (
id_pomiar INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
SERIA_D_id_seria_D INTEGER UNSIGNED NOT NULL,
SERIA_C_id_seria_C INTEGER UNSIGNED NOT NULL,
SERIA_B_id_seria_B INTEGER UNSIGNED NOT NULL,
SERIA_A_id_seria_A INTEGER UNSIGNED NOT NULL,
SZKOLA_id_szkola INTEGER UNSIGNED NOT NULL,
data_pomiaru DATE NOT NULL,
godz_pomiaru TIME NOT NULL,
PRIMARY KEY(id_pomiar),
INDEX POMIARY_FKIndex1(SZKOLA_id_szkola),
INDEX POMIARY_FKIndex2(SERIA_A_id_seria_A),
INDEX POMIARY_FKIndex3(SERIA_B_id_seria_B),
INDEX POMIARY_FKIndex4(SERIA_C_id_seria_C),
INDEX POMIARY_FKIndex5(SERIA_D_id_seria_D),
FOREIGN KEY(SZKOLA_id_szkola)
REFERENCES SZKOLA(id_szkola)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(SERIA_A_id_seria_A)
REFERENCES SERIA_A(id_seria_A)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(SERIA_B_id_seria_B)
REFERENCES SERIA_B(id_seria_B)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(SERIA_C_id_seria_C)
REFERENCES SERIA_C(id_seria_C)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(SERIA_D_id_seria_D)
REFERENCES SERIA_D(id_seria_D)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE WYNIKI (
id_wynik INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
UZYTKOWNICY_id_student INTEGER UNSIGNED NOT NULL,
wynik BLOB NOT NULL,
data_wynik DATE NOT NULL,
godz_wynik TIME NOT NULL,
PRIMARY KEY(id_wynik),
INDEX WYNIKI_FKIndex1(UZYTKOWNICY_id_student),
FOREIGN KEY(UZYTKOWNICY_id_student)
REFERENCES UZYTKOWNICY(id_student)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);


baza ta ma być wykorzystana w nastepujący sposób:
na nasz serwer mają napływac dane z detektorów umieszczonych na dachach szkół w moim mieście. Detektory te zliczają gęstośc cząstek promieniowanie kosmiczne padające na okresloną powierzchnię... typ danych A,B,C,D są to różne dane np temperatura, ciśnienie, gęstość...

strona, która powstaje ma za zadanie...rejestrację użytkownika, ma dawać możliwość śiągnięcia przez zalogowanego uzytkownika odpowiednich danych i zapisania ich na lokalnym dysku oraz możliwość przesłania na serwer zmodyfikowanych danych przez uzytkownika

Rozpisałam się troszkę ale tylko po to aby dać obraz tego do czego ta baza ma służyć...
nospor
dość...
z racji taisa, ze ignorujesz co poniektore posty, ktore wskazują ci jak wol co masz sprawdzic, temat zamykam. dodatkowo nagminnie olewasz bbcode, ktore raz poprawilem (i starczy moich poprawek).

w celu odblokowania tematu, prosze o PW z uwzględnieniem postów o których mowilem oraz z poprawnym bbcode
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.