Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Przekazanie wyniku SQL do innej tabeli, Jak przenieść kilka wyników na raz do jednej tabeli
-syngress-
post 31.10.2011, 18:55:50
Post #1





Goście







Witajcie, mam ja sobie skrypt który wyciąga

  1. <?php
  2. $query = "SELECT tabela1, tabela2, tabela3 FROM bazadanych WHERE username = '$username' ORDER BY date DESC LIMIT ".($start).",".$na_stronie."";
  3. $result = @mysql_query ($query);
  4. $num = mysql_num_rows ($result);
  5. if ($num > 0 ) {
  6. echo '';
  7. // Pobierz i pokaz wszystkie rekordy.
  8. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  9. KOD HTML WRAZ Z ROW'ami
  10. ';
  11. }
  12. mysql_free_result ($result);
  13. } else {
  14. echo 'JAKIŚ BŁĄD';
  15. mysql_close();
  16. }
  17. ?>


W bazie danych mam 2 zapisy
Ok, teraz otrzymuje 2 wyniki na stronie - w sumie tworzą się 2 tabele, jedna pod drugą.
W każdej tabeli znajdują się informacje z row[0],row[1],row[2]
Chciałem te wyniki pozbierać i wrzucić hurtem do tabeli "wyniki" ..

Normalnie - gdyby wyświetlał się tylko 1 zapis z bazy - otrzymałbym 1 tabelę.
Wrzucam wyniki z row[0],row[1],row[2] do zmiennych i pakuje do tabeli "wyniki" ..

Jak to zrobić przy większej ilości danych questionmark.gif
Go to the top of the page
+Quote Post
peter13135
post 31.10.2011, 20:39:55
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


1. Stosuj "fachowe" nazewnictwo, a nie "zapisy" i tym podobne. Czemu kolumny nazywasz tabela1, tabela2, tabela czy a tabelę nazywasz bazadanych questionmark.gif mocno kręcisz.
2. W jaki sposób chcesz te dane zapisać ? Może wystarczy użyć zapytania
  1. INSERT INTO tabela1 SELECT * FROM tabela2 ?


--------------------
:)
Go to the top of the page
+Quote Post
-syngress-
post 31.10.2011, 22:06:50
Post #3





Goście







Cytat(peter13135 @ 31.10.2011, 20:39:55 ) *
1. Stosuj "fachowe" nazewnictwo, a nie "zapisy" i tym podobne. Czemu kolumny nazywasz tabela1, tabela2, tabela czy a tabelę nazywasz bazadanych questionmark.gif mocno kręcisz.
2. W jaki sposób chcesz te dane zapisać ? Może wystarczy użyć zapytania
  1. INSERT INTO tabela1 SELECT * FROM tabela2 ?


tabela1 - przyjmij że tak się nazywają
Jeszcze raz - przyjmujemy że w tabeli znajduje się 5 rekordów, czyli 5 użytkowników.
Kod będzie wyglądał następująco:

  1. <?php
  2. $query = "SELECT username,download,date FROM bazadanych WHERE username = '$username' ORDER BY date DESC";
  3. $result = @mysql_query ($query);
  4. $num = mysql_num_rows ($result);
  5. if ($num > 0 ) {
  6. echo '';
  7. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  8. KOD HTML WRAZ Z ROW'ami
  9. ';
  10. }
  11. mysql_free_result ($result);
  12. } else {
  13. echo 'JAKIŚ BŁĄD';
  14. mysql_close();
  15. }
  16. ?>


Baza danych zawiera 1 tabele z 3 kolumnami. Rekordów jest 5 ale wyświetla tylko 2 z uwagi na zapytanie sortowane po "username"
Czyli mamy row[0],row[1],row[2]
I to wyświetla się na stronie:

  1. <td>UsernameX</td><td>PobranoX</td><td>DataX</td>
  2. <td>UsernameX</td><td>PobranoY</td><td>DataY</td>


I to co zostanie wyświetlone na stronie chciałem wrzucić do innej tabeli.
Go to the top of the page
+Quote Post
-syngress-
post 1.11.2011, 00:30:49
Post #4





Goście







peter13135 dzięki za podpowiedź.

Ostatecznie

  1. $query = sprintf("INSERT INTO x SELECT * FROM y WHERE username = '%s' ",


zdało egzamin ..

Dziękuje.
Go to the top of the page
+Quote Post
-syngress-
post 3.11.2011, 23:14:01
Post #5





Goście







Chciałem teraz trochę skomplikować.

  1. $query = sprintf("INSERT INTO x SELECT * FROM y WHERE username = '%s' ",


Z powyższego polecenia wiemy że X oraz Y są takie same.
Do Y chciałem dodać jedno pole INT w którym będzie się automatycznie unikatowy numer.
Unikatowy w tym sensie że nawet jeśli przeniosę 3 rekordy na raz, to do wszystkich tych 3 rekordów (przy przeniesieniu) zostanie dopisany ten właśnie numer.
Następne wywołanie skryptu utworzy kolejny numer do przenoszonych rekordów - i tak dalej..

Jak to ogarnąć ?
Go to the top of the page
+Quote Post
-syngress-
post 3.11.2011, 23:17:32
Post #6





Goście







do X oczywiście chce dodać pole INT (poprawka)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.05.2024 - 03:55