Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Duplikacja rekordu ze zmianą dwóch pól.
Xart
post 23.08.2014, 23:01:44
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Witam mam w bazie danych tabele a w niej rekordy i każdy z nich ma strasznie dużo kolumn. Muszę skopiować wiersz tabeli do tej samej tabeli zmieniając tylko unikalne ID (na kolejne) oraz nazwę - dopisać słowo kopia czyli np:

ID // Nazwa // Pole 1 // Pole 2

1 // produkt1 // w // ww
2 //produkt2 // sad /// asdasd

i teraz kopiuje np z warunkiem WHERE ID = 1

i odtrzymuję w tej tabeli

3 // produkt1 - KOPIA // Pole 1 // Pole 2

Da się to zrobić jakoś krócej niż wszystkie te pola do tablicy i dodawać standardowo ?

Go to the top of the page
+Quote Post
ZaXaZ
post 23.08.2014, 23:08:09
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Moze nie optymalnie ale powinno dzialac:

  1. UPDATE tabela SET id=id+1
//nie mam pewosci wiec wrazie czego sprawdz na testowej
  1. ALTER TABLE tabela CHANGE kolumna nowa_nazwa varchar(30) NOT NULL


(Nie jestem pewien czy zrozumiałem pierwsze pytania)

Ten post edytował ZaXaZ 23.08.2014, 23:11:34


--------------------
Go to the top of the page
+Quote Post
Xart
post 23.08.2014, 23:12:57
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


@UP
tak ale twoim sposobem otrzymam tylko tabelę o ID 3 a ta o id 1 przestanie istnieć a mi chodzi o to, zęby mieć 2 biggrin.gif
update rekordu to wiem jak zrobić chodzi mi tylko czy da się jakoś COPY wiersz1 i robi się wiersz 3 questionmark.gif?

ok dzięki za pomoc użyję sobie mniej więcej takiej funkcji

  1. function DuplicateMySQLRecord ($table, $id_field, $id) {
  2. // load the original record into an array
  3. $result = mysql_query("SELECT * FROM {$table} WHERE {$id_field}={$id}");
  4. $original_record = mysql_fetch_assoc($result);
  5.  
  6. // insert the new record and get the new auto_increment id
  7. mysql_query("INSERT INTO {$table} (`{$id_field}`) VALUES (NULL)");
  8. $newid = mysql_insert_id();
  9.  
  10. // generate the query to update the new record with the previous values
  11. $query = "UPDATE {$table} SET ";
  12. foreach ($original_record as $key => $value) {
  13. if ($key != $id_field) {
  14. $query .= '`'.$key.'` = "'.str_replace('"','\"',$value).'", ';
  15. }
  16. }
  17. $query = substr($query,0,strlen($query)-2); // lop off the extra trailing comma
  18. $query .= " WHERE {$id_field}={$newid}";
  19. mysql_query($query);
  20.  
  21. // return the new id
  22. return $newid;
  23. }


Ten post edytował Xart 23.08.2014, 23:18:11
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: 16.04.2024 - 18:43