Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]wprowadzanie danych inserty
pikasso
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


hej otóż mam taki problemik mam już zrobioną bazę danych wszystkie wartości są ładnie wyświetlane z kilku tabel no ale teraz chciałbym również móc dodać dane poprzez jeden formularz do kilku tabel. Jak to można zrobic. Wczesniej z funkcją join sie nie bawiłem wiec proszę o wyrozumiałość jestem poczatkujący (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował pikasso 28.07.2008, 21:55:44
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nowotny
post
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Robisz osobne zapytania do każdej z tabel i tyle... JOIN nie ma tu nic do rzeczy...
Go to the top of the page
+Quote Post
kavka
post
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 9.07.2008
Skąd: Zduńska Wola/Wrocław

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


join i jego "odmiany" (natural join, left outer join, itd.) służą do łączenia tabel w celu wyciągnięcia z nich potrzebnych danych lub odpowiedniego wyselekcjonowania. Przy wpisywaniu danych do tabel lub ich uaktualnianiu tworzy się oddzielne zapytania dla każdej tabeli. Join może się tu przydać w przypadku uaktualniania danych ale tylko w podzapytaniu służącym do wyselekcjonowania odpowiedniego wiersza/wierszy. Nie wkłada się danych do kilku tabel na raz.
Go to the top of the page
+Quote Post
pikasso
post
Post #4





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


Ok zrobiłem najpierw insert do jednej tabeli ale nic mi nie dodaje po prostu wyskakuje cały czas że nie zostały wypelnione wszystkie pola nie wiem o co chodzi...

  1. <form action="nowyklient.php" method="post">
  2. <table width="373" border="0">
  3. <tr>
  4. <td width="164" bgcolor="#9EB4FC">Imie</td>
  5. <td width="199" bgcolor="#FFFFFF"><span class="style5 style1">
  6. <input name="Imie" type="text" size="27" />
  7. </label>
  8. </span></td>
  9. </tr>
  10. <tr>
  11. <td bgcolor="#9EB4FC">Nazwisko</td>
  12. <td bgcolor="#FFFFFF"><span class="style5 style1">
  13. <input name="Nazwisko" type="text" id="Nazwisko" size="27" />
  14. </label>
  15. </span></td>
  16. </tr>
  17. <tr>
  18. <td bgcolor="#9EB4FC">Firma / Osoba Prywatna</td>
  19. <td bgcolor="#FFFFFF"><span class="style5 style1">
  20. <select name="Firma" id="Firma">
  21. <option>Tak</option>
  22. <option>Nie</option>
  23. </select>
  24. </label>
  25. </span></td>
  26. </tr>
  27. <tr>
  28. <tr>
  29. <td bgcolor="#9EB4FC">Ulica</td>
  30. <td bgcolor="#FFFFFF"><span class="style5 style1">
  31. <input name="Ulica" type="text" id="Ulica" size="27" />
  32. </label>
  33. </span></td>
  34. </tr>
  35. <tr>
  36. <tr>
  37. <td bgcolor="#9EB4FC">Kod pocztowy</td>
  38. <td bgcolor="#FFFFFF"><span class="style5 style1">
  39. <input name="Kod_poczt" type="text" id="Kod_poczt" size="27" />
  40. </label>
  41. </span></td>
  42. </tr>
  43. <td colspan="2"><span class="style5"></span><span class="style5">
  44. </span><span class="style5"><label> <br />
  45. <input name="Submit" type="submit" class="style2" value="Dodaj kontakt do do bazy danych książki" />
  46. </center>
  47. </label><span class="style5"></span><span class="style5">
  48. </span></td>
  49. </tr>
  50. <p></p>
  51. </form>


  1. <?
  2. if (!$Imie || !$Nazwisko || !$Firma ||!$Ulica || $Kod_poczt)
  3.  
  4.  {  
  5.  
  6. print '<p align="center" style="font-size:12px">Nie zostaly wypelnione wszystkie pola!</p>';
  7.  
  8. print '<p align="center" style="font-size:10px","bottom:">Copyright C by Rafal Krasniej 2008</p>';
  9.  }
  10.  
  11. $Imie = addslashes($Imie);
  12. $Nazwisko = addslashes($Nazwisko);
  13. $Firma = addslashes($Firma);
  14. $Ulica = addslashes($Ulica);
  15. $Kod_poczt = addslashes($Kod_poczt);
  16.  
  17. @$db = mysql_pconnect("localhost", "root", "123456z", "ksiazka");
  18. if (!$db)
  19. {
  20.  
  21. print '<p align="center" style="font-size:12px">Nie mozna nawiazac polaczenia z Baza danych!</p>';
  22. print '<p align="center" style="font-size:10px","bottom:">Copyright C by Rafal Krasniej 2008</p>';
  23. exit;
  24. }
  25.  
  26.  
  27. $query = "insert into klient values ('".idKlient."', '".Telefon_idTelefon."', '".Miasto_idMiasto."', '".$Imie."', '".$Nazwisko."', '".Ulica."', '".Kod_poczt."', '".$Firma."')";
  28. $result = mysql_query($query);
  29.  
  30.  
  31. ?>
Go to the top of the page
+Quote Post
chemik1982
post
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 20.03.2007
Skąd: Bydgoszcz

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


  1. <?php
  2. if (isset($_POST['Imie'])){
  3.  
  4. }
  5. ?>


Reszta do sprawdzenia w analogiczny sposob, chyba ze wlaczysz sobie na serwerze opcje register_globals (NIE ZALECANE, NIE STOSOWAC (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !), to bedziesz mogl korzystac ze swojego kodu.
Go to the top of the page
+Quote Post
pikasso
post
Post #6





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


ok troszkę zmieniłem i pomogło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
ale teraz kolejne pytanie
  1. <?php
  2. $sql="INSERT INTO klient (idKlient, Telefon_idTelefon, Miasto_idMiasto, Imie, Nazwisko, Ulica, Firma,
     Kod_poczt)
  3. VALUES
  4. (NULL , 'Telefon_idTelefon=idKlient', '3','$_POST[Imie]','$_POST[Nazwisko]','$_POST[Ulica]','$_POST[Firma]','$_POST[Kod_poczt]')";
  5. ?>

jak zrpbić aby Telefon_idTelefon=idKlient bo w tym wypadku idklient jest poprawne ale zeby Telefon_idTelefon było równe tamtej wartości (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) jak sie uporam z tym to przejde do kolejnej zagadki której też nie potrafie rozwikłać
Go to the top of the page
+Quote Post
nowotny
post
Post #7





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


A jakim celu chcesz mieć 2 pola o takiej samej zawartości...?
Go to the top of the page
+Quote Post
pikasso
post
Post #8





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


już odpowiadam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bo gdy wyświetlam klienta to jego id jest zawsze takie same jak id telefonu no może źle robię no ale nie wiem jak inaczej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

przykladowo w mysql mam takie inserty
  1. INSERT INTO `ksiazka`.`telefon` (`idTelefon` ,`Nr_tel` ,`Widocznosc`) VALUES (NULL , '5345675', 'Tak');
  2. INSERT INTO `ksiazka`.`klient` (`idKlient` ,`Telefon_idTelefon` ,`Miasto_idMiasto` ,`Imie` ,`Nazwisko` ,`Ulica` ,
  3. `Kod_poczt` ,`Firma`) VALUES (NULL , '31', '4', 'Aneta', 'Łastówka', 'Piłsudskiego 12 ', '50-050', 'Nie');
  4. INSERT INTO `ksiazka`.`telefon` (`idTelefon` ,`Nr_tel` ,`Widocznosc`) VALUES (NULL , '5347765', 'Tak');
  5. INSERT INTO `ksiazka`.`klient` (`idKlient` ,`Telefon_idTelefon` ,`Miasto_idMiasto` ,`Imie` ,`Nazwisko` ,`Ulica` ,
  6. `Kod_poczt` ,`Firma`) VALUES (NULL , '32', '4', 'Monika', 'Komar', 'Rynek 28', '50-065', 'Nie');

i teraz mam taki problem bo w bazie mam już jakieś tam miejscowości i są im przypisane jakieś id i teraz nie wiem co zrobić żeby po wpisaniu dla klienta np Warszawa nie powtarzało się to w miejscowościach i będe mial dwie warszawy o rożnych ID tylko przypisało jej poprzednie Id no chyba że źle rozumuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował pikasso 29.07.2008, 09:16:50
Go to the top of the page
+Quote Post
webasek
post
Post #9





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Z tego co widzę to trochę bazę danych zawaliłeś. Przecież może być kilka telefonów do jednego klienta? Więc na Twoim miejscu zmienił bym tabelę telefony bo pewnie taką masz skoro korzystasz z id_telefon? I poczytał trochę o postaciach normalnych bazy danych. To pierwsza uwaga. Druga jest taka: najpierw wrzucił bym do tabeli pustego klienta lub tez wpisał wszystkie dane bez wrzucania id telefonu. Potem zrobił bym update do tabeli klienta gdzie id klienta jest to id ostatnio dodanego klienta. Trzecia uwaga jeśli kli_ID jest autoincrement to nie dawaj mu nulla po prostu pomiń pole. Co do normalizacji bazy danych możesz poczytać tu: http://pl.wikipedia.org/wiki/Normalizacja_bazy_danych
Go to the top of the page
+Quote Post
nowotny
post
Post #10





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Dalej nie rozumiem no ale dobra...

no to nie możesz przy wyświetlaniu użyć jednej zmiennej dwa razy...? to co ty chcesz zrobić jest wbrew normalizacji...
Go to the top of the page
+Quote Post
pikasso
post
Post #11





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


Nie wiem czy moja baza aż tak źle wygląda oto kod
  1. CREATE DATABASE `Ksiazka` ;
  2. USE ksiazka;
  3. CREATE TABLE Telefon (
  4. idTelefon INT UNSIGNED NOT NULL AUTO_INCREMENT,
  5. Nr_tel VARCHAR(7) NOT NULL,
  6. Widocznosc ENUM('Tak', 'Nie') NOT NULL DEFAULT 'Tak',
  7. PRIMARY KEY(idTelefon)
  8. );
  9.  
  10. CREATE TABLE TelAlarmowe (
  11. idTelAlarmowe INT NOT NULL AUTO_INCREMENT,
  12. NumerTel VARCHAR(3) NOT NULL,
  13. Nazwa VARCHAR(80) NULL,
  14. PRIMARY KEY(idTelAlarmowe)
  15. );
  16.  
  17. CREATE TABLE Wojewodztwo (
  18. idWojewodztwo INT UNSIGNED NOT NULL AUTO_INCREMENT,
  19. Nazwa VARCHAR(20) NOT NULL,
  20. PRIMARY KEY(idWojewodztwo)
  21. )
  22. MAX_ROWS = 16;
  23.  
  24. CREATE TABLE Miasto (
  25. idMiasto INT UNSIGNED NOT NULL AUTO_INCREMENT,
  26. Wojewodztwo_idWojewodztwo INT UNSIGNED NOT NULL,
  27. Nazwa VARCHAR(20) NOT NULL,
  28. Kierunkowy VARCHAR(2) NOT NULL,
  29. PRIMARY KEY(idMiasto),
  30. INDEX Miasto_FK(Wojewodztwo_idWojewodztwo),
  31. FOREIGN KEY(Wojewodztwo_idWojewodztwo)
  32. REFERENCES Wojewodztwo(idWojewodztwo) ON DELETE CASCADE ON UPDATE RESTRICT
  33. );
  34.  
  35. CREATE TABLE Firma (
  36. idFirma INT UNSIGNED NOT NULL AUTO_INCREMENT,
  37. F_idMiasto INT UNSIGNED NOT NULL,
  38. F_idTelefon INT UNSIGNED NOT NULL,
  39. Nazwa VARCHAR(100) NULL,
  40. Logo VARCHAR(100) NULL,
  41. Kod_poczt_firm VARCHAR(6) NULL,
  42. Ulica_firm VARCHAR(30) NULL,
  43. Branza VARCHAR(40) NULL,
  44. PRIMARY KEY(idFirma),
  45. INDEX TelFirma_FK(F_idTelefon),
  46. INDEX MiastoFirma_FK(F_idMiasto),
  47. FOREIGN KEY(F_idTelefon)
  48. REFERENCES Telefon(idTelefon) ON DELETE RESTRICT ON UPDATE CASCADE,
  49. FOREIGN KEY(F_idMiasto)
  50. REFERENCES Miasto(idMiasto) ON DELETE CASCADE ON UPDATE RESTRICT
  51. );
  52.  
  53. CREATE TABLE Klient (
  54. idKlient INT UNSIGNED NOT NULL AUTO_INCREMENT,
  55. Telefon_idTelefon INT UNSIGNED NOT NULL,
  56. Miasto_idMiasto INT UNSIGNED NOT NULL,
  57. Imie VARCHAR(20) NOT NULL,
  58. Nazwisko VARCHAR(25) NOT NULL,
  59. Ulica VARCHAR(30) NOT NULL,
  60. Kod_poczt VARCHAR(6) NOT NULL,
  61. Firma ENUM('Tak', 'Nie') NOT NULL DEFAULT 'TAK',
  62. PRIMARY KEY(idKlient),
  63. INDEX MIAS_FK(Miasto_idMiasto),
  64. INDEX TEL_FK(Telefon_idTelefon),
  65. FOREIGN KEY(Miasto_idMiasto)
  66. REFERENCES Miasto(idMiasto) ON DELETE CASCADE ON UPDATE RESTRICT,
  67. FOREIGN KEY(Telefon_idTelefon)
  68. REFERENCES Telefon(idTelefon) ON DELETE CASCADE ON UPDATE RESTRICT
  69. );
Go to the top of the page
+Quote Post
webasek
post
Post #12





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


To pole z tabeli klient wywal:

Telefon_idTelefon INT UNSIGNED NOT NULL,

stwórz nową tabele nie wiem np TelefonyPrzypisane gdzie będzie

TP_IDTelefon oraz TP_IDKlientFirma

kluczem głównym będą oba te pola. I wtedy będzie łatwiej z telefonami. I jak dodajesz klienta to do tabeli klient i potem uzupełniasz telefony a przy wyświetlaniu już tylko left join o gotowe
Go to the top of the page
+Quote Post
pikasso
post
Post #13





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


A mógłbyś mi to rozpisać dokładniej bo nie wiem czy usuwać tez z tej tabeli
  1. INDEX TEL_FK(Telefon_idTelefon),
  2. FOREIGN KEY(Telefon_idTelefon)
  3. REFERENCES Telefon(idTelefon) ON DELETE CASCADE ON UPDATE RESTRICT


no i czy tabelę firma zmodyfikować tak samo i dodać do tej nowo utworzonej tabeli (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
webasek
post
Post #14





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Tak usuwać indeksy i referencje (niepotrzebne są). Tabela firma tak samo modyfikowana czyli też usuwanie wszystkiego co się tyczy id_telefon.
Go to the top of the page
+Quote Post
pikasso
post
Post #15





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


czy z tabeli miasto też mam usunąć numer kierunkowy (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
f1xer
post
Post #16





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


W tabeli telefon dałbym idKlienta wtedy jeden klient może zapisać kilka numerów telefonu, w tabeli miasto dałbym KodPocztowy co do kierunkowego to bym usunął i dał możliwość klientowi dodania tego podczas wpisywania numeru i tak każdy jak wpisuje numer to podaje kierunkowy (moim zdaniem) i jeżeli chodzi o tabele firmy to dodałbym tabele branże wtedy i w tabeli firmy zamiast branża dał id_branzy ( z tabeli branze) generalnie jeżeli to ma być jakiś poważny projekt to cała baza jest do zmiany przy okazji warto zapoznać się z kilkoma aspektami budowy baz danych (atomowość danych itp.) odsyłam do google, jeżeli chcesz robić coś amatorsko to od biedy może być ale możesz nauczyć się złych nawyków
Go to the top of the page
+Quote Post
pikasso
post
Post #17





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


czy poważny projekt hmmm to jest do pracy inżynierskiej a ja z tym nie miałem styczności bo siedzę w grafice 3d. a temat pracy to porównanie php i mysql z asp .net i mssql server na podstawie książki telefonicznej. Więc dopiero zaczynam się tym bawić no ale jakby jakaś dobra dusza pomogła mi w poprawieniu tej bazy to byłbym bardzo wdzięczny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
f1xer
post
Post #18





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


A jakie są założenia tego projektu? jeden klient - jeden numer?
ogólnie jak sobie widzisz że to działa? masz jakiś projekt ? może będę mógł pomóc w miarę moich skromnych możliwości

Ten post edytował f1xer 29.07.2008, 10:55:44
Go to the top of the page
+Quote Post
pikasso
post
Post #19





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


założenia są takie ze jeden klient jeden numer / jedno miasto ma kilka kodów pocztowych dlatego kod poczt przypisany do klienta / w bazie mam do wyboru klienta indywidualnego oraz firmę no i podział firmy na branże / numery alarmowe
no i to chyba tyle tego będzie
Tutaj zamieszczam cały projekt co do tej pory zrobiłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
http://rapidshare.com/files/133284444/TSTEL.rar.html

a tutaj są inserty w notatniku

http://rapidshare.com/files/133287817/BAZA..._FIRMA.txt.html

generalnie chciałby aby to tak wyglądało no i tu już jest wszystko zawarte tylko troche nie dziala tak jak powinno no ale zawsze coś jak na początkującego webmastera (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
hasło do panelu administratora to root i login taki sam.

tam gdzie jest zakładka cała książka chciałbym aby nie było scrolla ale żeby było stronicowanie np co 10 wyników albo żeby pokazywało alfabetycznie po literkach tak jak mam to w firmach

Ten post edytował pikasso 29.07.2008, 11:18:43
Go to the top of the page
+Quote Post
webasek
post
Post #20





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Właśnie napisz jakie dane maja być przechowywane ale w punktach jak ta baza ma wyglądać nie na tabelach a w punktach. To coś się wymyśli.

Opis powyżej bardzo skromny trochę go rozszerz.

Ten post edytował webasek 29.07.2008, 10:58:55
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: 22.08.2025 - 23:40