Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql] Równoczesny zapis do 2-óch tabel
Forum PHP.pl > Forum > Przedszkole
palixmp
Mam formularz i chcę zapisać go do 2 tabel jednocześnie, jaka jest funkcja aby to uczynić jednym kliknięciem.
Dodam jeszcze że, w jednej tabeli dane zostaną "do końca świata" a w drugiej bede owe dane modyfikował, odejmował dodawał i takie tam. Obie tabele są identyczne, z wyjątkiem innych nazw oczywiście:)


Jeśli pisze:
insert into LICZBY values .....

istnieje jakies polecenie które automatycznie doda dane do dwóch identycznych tabel, tylko o innych nazwach, czy należy napisać coś 2 razy (ale w jaki sposób).

Jeśli temat już był bardzo prosze o linka, bo szukam tego dzisiał cały dzień i nic nie mogłem znaleść.

Z góry dzięki.
mike
INSERT zapisuje do jednej tabeli i kropka.
Jeśli chcesz zapisać do dwóch tabel wykona dwa INSERTY

Ale jeśli masz tak że:
Cytat(palixmp @ 17.09.2006, 00:21:31 ) *
Obie tabele są identyczne, z wyjątkiem innych nazw oczywiście:)
.. to znaczy że baza jest bardzo źle zaprojektowana i nalezy to zmienić a nie kombinować jak to obejść. No chyba że istnieje jakies wytłumaczenie, ale wątpię.
dr_bonzo
Jak wyzej + mozesz napisac triggera ktory przy dodawaniu rekordu dopisze go tez do drugiej tabeli.
palixmp
Dzieki za odpowiedzi, zrobiłem po prostu dwa razy insert (takie łatwe a nie wpadłem na to:) ).

Nawiązując do odpowiedzi mike_mech: to jest magazynek artykłów biurowych, dlatago zrobiłem 2 takie same tabele ARYKULYBIUROWE oraz ARTYKULYBIUROWE_BACK. W tej drugiej tabeli bede tylko zapisywal, a w tej pierwszej np jeśli wloze do magazynku 30 spinaczy, a potem wezme 15, to odejmę z tej tabeli te 15 spinaczy, zeby nastpnym razem mi sie pojawilo ze mam tylko 15 spinaczy a nie 30. Natiomiast w tabeli ARTYKULYWYDANE_BACK chce pozostawic te dane (pierwotne) bo bede potrzebowal ich do raportów.

Jeśli źle rozumuje, to prosze o rade, mysle ze to jest logiczne, ale jeśli są jakieś inne zasady postepowania w takiej sytuacji, to bardzo prosze o wyjaśnienie, bo chcialbym robic według jakiś standardów php, a Wy tutaj sie lepiej orientujecie w tych sprawach.

Z góry dzieki:)
nospor
Te spinacze to tylko przyklad, czy naprawde bedziesz na kazdy jeden spinacz tworzyl nowy rekord?
NIe wiem do czego piszesz te magazynowke, ale spinace to zwykle taki material, ze leci w tysiącach. Podobnie jak grysiki do olowkow. Co inne trzymac rekordy na kasy fiskalne, ktorych kazda ma swoj idetnyfikatror, a co innego na spinacz.
Ale jesli u cibie tych produktow bedzie malo to od biedy moze zostac.

Jesli jednak spinacze chcialbys trzymac w jednym rekordzie i zapisywac tylko ich liczbe, to wystarczyla by jedna tabela. MIalaby dodatkowe pola ilosc_ogolna i ilosc_aktualna.
Ilosc_ogolna by trzymala tę liczbe co ty chiales trzymac w drugiej tabeli, a ilosc_aktualna by zawierala aktualny stan spinaczy.

Jesli widzisz tu jakąs dziure, bo czegos nie zrozumialem jak madzialac Twoj magazyn, to wal smialo, pomyslimy i nad tym smile.gif
palixmp
Dzieki nospor znowu nie pomyślałem ze to takie proste:)smile.gif A nawiązując do Twojego pytania czy to tylko przykład to niestety nie:)smile.gif Tylko różnica jest w tym taka, ze nie bede liczył spinaczy ale paczki spinaczy:) Chyba nigdy nie pracowałeś w państwówce, kiedyś zanim tu przyszedłem było tak, ze jak szło sie do ksero, to dostawało sie np 10 kartek i trzeba było to wpisać do zeszytu, a jak któraś Ci się np. podarła to trzeba było napisac sie sie podarła i zwrócić ja do specjalnego kartonu:)smile.gif ale mniejsza z tym:)

Mam pytanie. Jak zrobić żeby NazwaArtykulu byla unikalna?? Bo np. w dostawie A przywieźli 30 spinaczy, wyciągnąlem 15spinaczy, ale już zamówiłem następną dostawe i m. in. przywieźli 30 spinaczy. I w formularzu z listy rozwijanej NazwaArtykulu (dane pobierane są z bazy) było by widać 2 razy spinacze i chce dodać do tego NrFaktury który jest unikalny, jak do listy rozwijanej dodać 2 wartości z różnych tabel aby było wiadomo z której dostawy jest dany spinacz?? Jeśli mam jakoś przebudować to też prosze o podpowiedźsmile.gif

www.palixmp.yoyo.pl/logowanie.php5 to link do tego magazynku, a login to: uzytkownik, a haslo: haslo. Będzie Wam lepiej do zrozumienia, mam nadzieję, ze nikt nie będzie szkodzić, a wpisywać mozecie wszystko bo i tak bede to za pare dni czyścić.

  1. <?php 
  2. function wyswietl_form_adwydane()
  3. {
  4. lacz_moje();
  5. $rezultat1 = @mysql_query('SELECT NazwaArtykulu FROM ARTYKULYBIUROWE');
  6. if (!$rezultat1) {
  7. '<p>Nie mozna pobrac listy Artykulówwydanych z bazy danych.</p>');
  8. } 
  9. ?>
  10. <form action="dodaj_wydane.php5" method=post>
  11. <table width=320 cellpadding=2 cellspacing=0 bgcolor=#cccccc><tr><td>NazwaArtykulu:</td><td>
  12. <select name="NazwaArtykulu" size="1">
  13. <option value="">
  14. <?php
  15.  
  16. while ($ARTYKULYWYDANE = mysql_fetch_array($rezultat1)) {
  17. $aname = htmlspecialchars($ARTYKULYWYDANE['NazwaArtykulu']);
  18.  
  19. echo "<option value='$aname'>$aname</option>n";
  20. }
  21. ?>
  22. </option></select></td></tr>
  23.  
  24. <tr><td>IloscSztuk:</td><td><input type=text name=IloscSztuk></td></tr>
  25. <tr><td>DataWydania:</td><td><input type=text name=DataWydania></td></tr>
  26. <tr><td colspan=2 align=center><input type=submit value="Dodaj artykul wydany"></td></tr>
  27. </table>
  28. </form>
  29. <?php
  30. } ?>


Dodam ze to jest dopiero początek, wiec niema żadnych zabezpieczeń przed wprowadzaniem błędnych danych(poza jednym) i w ogóle jest to w fazie "robót drogowych" wiec prosze nie komentować że jest wieśniacko napisane hihihi:)

Z góry dzieki
nospor
Cytat
Chyba nigdy nie pracowałeś w państwówce
Pracowalem pol roku w Urzędzie Marszalkowskim, a to raczej jest panstwowka winksmiley.jpg

POdoba mi sie jedna nazwa artykulu: gumki... Dobrze ze dales opis do mazania bo co innego czlowiekowi chodzi po glowie winksmiley.jpg

Co do unikalnosci to wyswietlaj oprocz nazwy Artykulu numer faktury i bedzie wiadomo skad przyszlo.
palixmp
Doszedlem do wniostu że mój sposób z dwoma tabelami chyba jest lepszy (poprawcie jeśli sie myle). Bo w tej tabeli co bede ją edytował i odejmował poszczególne sztuki, to zrobie tak, żeby gdy IloscSztuk bedzie rowna 0, to bede mu kazal usunac ten rekord. Wiec mysle ze przy szukaniu to bedzie szybciej dzialac, bo będą tylko dane ktore sa w magazynku, wiec stosunkowo mało. A jakbym zrobil jedna tabele z dwoma polami, to po roku bede mial ogromna liczbe rekordow, a po 10 latach ta liczba bedzie straznie WIELKA wiec wyszukiwanie i wypisywanie tych rekordow bedzie chyba znacznie wiecej czasu zajmowac. Moge zrobic zeby wyswietlal tylko te co maja powyzej 0, ale chyba i tak to bedzie dluzej. Jesli sie myle to prosze o korekte:)

Z góry dzieki.
nospor
Cytat
A jakbym zrobil jedna tabele z dwoma polami, to po roku bede mial ogromna liczbe rekordow, a po 10 latach ta liczba bedzie straznie WIELKA wiec wyszukiwanie

A ile to dla Ciebie "ogromna"? Bo mysql radzi sobie nieźle z "ogromnymi" winksmiley.jpg
palixmp
Nie moge sobie poradzić z wyświetleniem dwuch pól w jednej liście rowijanej, czyli NazwyProduktu i NrFaktury. Kod moj to:

  1. <?php
  2. $rezultat1 = @mysql_query('SELECT NazwaArtykulu, NrFaktury FROM ARTYKULYBIUROWE');
  3. if (!$rezultat1) {
  4. '<p>Nie mozna pobrac listy Artykulówwydanych z bazy danych.</p>');
  5. } 
  6.  
  7.  //troche kodu któa nie jest istotna, rozpoczęcie formularza i takie tam
  8.  
  9.  while ($ARTYKULYWYDANE = mysql_fetch_array($rezultat1)) {
  10. $aname = htmlspecialchars($ARTYKULYWYDANE['NazwaArtykulu']);
  11.  
  12. echo "<option value='$aname'>$aname</option>n";
  13. }
  14. ?>


To oczywiście fragment. I nie wiem co wpisać w miejsce:
  1. <?php
  2. $aname = htmlspecialchars($ARTYKULYWYDANE['NazwaArtykulu']);
  3. ?>


Wpisałem ['NazwaArtykulu'.'NrFaktury'], potem ['NazwaArtykulu'].['NrFaktury'] i pare jeszcze możliwości i albo mi wyświetla błąd, albo w liście rozwijanej nie pokazuje nic.

Prosze o pomoc. Z góry dzieki:)
nospor
  1. <?php
  2. $aname = htmlspecialchars($ARTYKULYWYDANE['NazwaArtykulu'].$ARTYKULYWYDANE['NrFaktury']);
  3. ?>
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.