Avatar billede human Nybegynder
12. april 2004 - 02:46 Der er 15 kommentarer og
1 løsning

flyt fra en tabel til en anden

Lad os sige jeg har tabel-1.

Tabel-1 får nogle værdier, hvorpå feltet "number" unique.

Men hvis den pludselig får variablen "number" igen, og den indeholder samme værdi som i forvejen står i "number", så skal det der stod i tabel-1 flyttes til tabel-2, og den nye værdi skal så indsættes i tabel-1.

Det der står i samme række som "number" Skal selvfølgelig flyttes med.

En der kan give mig et eksempel?

På forhånd tak!
Avatar billede sukos Juniormester
12. april 2004 - 07:18 #1
hmm, går ud fra at de ens bygget op, de to tables

if(true == mysql_query("INSERT INTO `table1` (`unikfelt`) VALUES ('number')")) {
ingen problemer.............
}else{
find det som skal flyttes, og flyt det, og slet fra table1 det som skal slettes, og kør så insert igen på table1
}
Avatar billede human Nybegynder
12. april 2004 - 08:01 #2
Hmmm.. Det er flytningen jeg ikke forstår meget af..

Lad os sige jeg har dette:
$insert = ("INSERT INTO tabel1(number,nogetandet)
        VALUES('$number','$nogetandet')");
        mysql_query($insert) || die(mysql_error());

Men hvis $number allerede er i tabel1, skal det der ligger i tabel1 flyttes til tabel2. Sammen med det number ligger i række med. Dette tilfælde "nogetandet.
Avatar billede sukos Juniormester
12. april 2004 - 08:29 #3
hmm, ved ikke om der er en "shortway" til at flytte, men ellers:

$insert = "INSERT INTO `users` (`bruger`, `pass`) VALUES ('ego', 'ego')";

if(true == mysql_query($insert)) {
echo"Ok";
}else{
$find = mysql_query("SELECT * FROM `users` WHERE `bruger` = 'ego'") or die (mysql_error());
$row = mysql_fetch_object($find);
mysql_query("INSERT INTO `users2` (`bruger`, `pass`) VALUES ('". $row->bruger ."', '". $row->pass ."')") or die(mysql_error());
mysql_query("DELETE FROM `users` WHERE `bruger` = 'ego'") or die (mysql_error());
mysql_query($insert);
}

Forudsætter jo at begge tables har samme kolonner, og i table2 er det nok ikke nogen go' ide at number (bruger) også er unik.

Om der findes en nemmere måde ved jeg ikke
Avatar billede human Nybegynder
12. april 2004 - 08:34 #4
Yesh.. tabel2 er af samme støbning. Number i tabel2 er ikke unique.

Tjekker lige om jeg kan få det til at fungere.
Avatar billede human Nybegynder
12. april 2004 - 08:38 #5
Hmm.. Kom til at tænke på noget.

Jeg kender jo ikke number.. Så vil `bruger` = 'ego stadig gøre tricket?
Avatar billede sukos Juniormester
12. april 2004 - 08:41 #6
jow
Avatar billede sukos Juniormester
12. april 2004 - 08:42 #7
Hvis $number findes, kan du ikke inserte, men sagtens selecte og derefter smide ind i ny, samt slette
Avatar billede human Nybegynder
12. april 2004 - 08:43 #8
okay.. Kan ikk tænke lige nu.. men ego er jo det som er indsat. Hvilket jeg jo kender..

Men hvis jeg fx har $from jeg skal tjekke om er ligmed det som står i number. Hvordan skal det så se ud?
Avatar billede human Nybegynder
12. april 2004 - 08:52 #9
Har virkelig brug for søvn.. Det skal vel bare se således ud:

bruger = $from

ikk?
Avatar billede sukos Juniormester
12. april 2004 - 08:57 #10
Nu er jeg ikke helt med, (og jeg er næsten lige stået op! :O) )

Men din $insert, her har du jo $number.
Og hvis den ikke kan sættes ind, så findes den i forvejen.
Og så kan du jo selecte ud fra $number og samtidig også slette, og lave insert i den nye, og den gamle som ikke ville i første omgang
Avatar billede human Nybegynder
12. april 2004 - 09:00 #11
Hmm.. Tror lige jeg forklarer igen.

Jeg har $number. Hvis $number allerede findes i tabel1, flyttes den række hvor gamle $number står på, ind i tabel2. Den nye $number indsættes så sammen med de andre nye værdier i tabel1.

Er det til at forstå?

Dårlig kombination.. Du er lige stået op, jeg er ikke gået i seng endnu ;)
Avatar billede sukos Juniormester
12. april 2004 - 09:06 #12
$insert = "INSERT INTO tabel1(number,nogetandet)
        VALUES('$number','$nogetandet')";

if(true == mysql_query($insert)) {
echo"Ok";
}else{
$find = mysql_query("SELECT * FROM `tabel1` WHERE `number` = '". $number ."'") or die (mysql_error());
$row = mysql_fetch_object($find);
mysql_query("INSERT INTO `tabel2` (`number`, `nogetandet`) VALUES ('". $row->number ."', '". $row->nogetandet ."')") or die(mysql_error());
mysql_query("DELETE FROM `tabel1` WHERE `number` = '". $number ."'") or die (mysql_error());
mysql_query($insert);
}
Avatar billede human Nybegynder
12. april 2004 - 09:11 #13
Virker perfekt!

Mange tak! :O)
Avatar billede human Nybegynder
12. april 2004 - 09:11 #14
smid svar.
Avatar billede sukos Juniormester
12. april 2004 - 09:22 #15
ok, og sov godt! :O)
(men undrer om ikke der fandtes en nemmere løsning?)
Avatar billede human Nybegynder
12. april 2004 - 09:27 #16
Har ikke tid til at gå i seng, desværre ;)

Hmm ja.. godt spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester