Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Przekazanie wyniku SQL do innej tabeli
Forum PHP.pl > Forum > Przedszkole
syngress
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
peter13135
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 ?
syngress
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.
syngress
peter13135 dzięki za podpowiedź.

Ostatecznie

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


zdało egzamin ..

Dziękuje.
syngress
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ąć ?
syngress
do X oczywiście chce dodać pole INT (poprawka)
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.