Avatar billede kres69 Nybegynder
12. april 2003 - 17:23 Der er 23 kommentarer og
1 løsning

Hvordan ligger jeg samme ID ned i flere tabeller?

Jeg er i gang med at lave en side i PHP med en MySql DB,  som gør det muligt at oprette brugere.
Hver gang der bliver oprettet en bruger, får denne et unikt ID. Men hvordan får jeg lagt dette ID ned i to andre tabeller i MySql? Jeg regner med at man gør dette ved hjælp af PHP-kode.

I må meget gerne give et kodeeksempel. Jeg giver 200 point til ham, der kan hjælpe mig. Er lidt på bar bund selv.
Avatar billede schaefner Juniormester
12. april 2003 - 17:24 #1
Som sagt tidligere, så giver mysql_insert_id(); dig id'en fra den inert du lige har udført. Så gør su sådan her:
$id = mysql_insert_id();

og lægger id ned i tabeller der nu skal bruge den.
Avatar billede schaefner Juniormester
12. april 2003 - 17:24 #2
og stavefejl er gratis ;o)
inert = insert
su = du
Avatar billede schaefner Juniormester
12. april 2003 - 17:25 #3
mysql_query("INSERT INTO tabel (id, navn) VALUES ('$id','$navn')");
Avatar billede kres69 Nybegynder
12. april 2003 - 17:26 #4
Jeg har en tabel bruger med feltet elev_id. Derudover har jeg to andre tabeller: Tabellerne elev og foraeldre. Alle tre har et felt ved navn elev_id. Hvordan får jeg lagt det unikke elev_id i tabellen bruger over i de to andre tabeller?
Avatar billede sukos Juniormester
12. april 2003 - 17:27 #5
mysql_insert_id(); ? Hvor kan man læse lidt om den funktion?
Avatar billede schaefner Juniormester
12. april 2003 - 17:27 #6
mysql_query("INSERT INTO bruger (felt1,felt2) VALUES ('$felt1','$felt2')");
$id = mysql_insert_id();

mysql_query("INSERT INTO elev (id, navn) VALUES ('$id','$navn')");
mysql_query("INSERT INTO foraeldre (id, navn) VALUES ('$id','$navn')");
Avatar billede kres69 Nybegynder
12. april 2003 - 17:28 #7
Damn, du er hurtig, Schaefner. Is it a bird, is it a plane...
Jeg vil lige kigge på det.
Avatar billede schaefner Juniormester
12. april 2003 - 17:29 #8
Avatar billede ahv Nybegynder
12. april 2003 - 17:30 #9
kres69 >> Hvorfor fortsatte du ikke bare dir spm. hvor det var ? Hvertfald så er det her vel dobbelt arbejde efter som de forslag og eksempler der kommer allerede er givet i det andet spm. <- henviser her til det eksempel jeg lavede.
Avatar billede sukos Juniormester
12. april 2003 - 17:31 #10
jah, der er en masse "query funktiner" jeg intet aner om! :O)
Avatar billede schaefner Juniormester
12. april 2003 - 17:32 #11
sukos >> Så er vi to ;)
Avatar billede sukos Juniormester
12. april 2003 - 17:34 #12
Ja, må vist hellere lige få kikket noget mere på manulen til mysql!
Avatar billede kres69 Nybegynder
12. april 2003 - 17:40 #13
Hvad er der galt med min kode. Man opretter bruger ved hjælp af en formular.




          mysql_query("INSERT INTO bruger (brugernavn, password) VALUES ('$elev_brugernavn', '$elev_kodeord')");
          $elev_id = mysql_insert_id();

          mysql_query("INSERT INTO elev(elev_id) VALUES ('$elev_id')");
          mysql_query("INSERT INTO foraeldre(elev_id) VALUES ('$elev_id')");
Avatar billede schaefner Juniormester
12. april 2003 - 17:42 #14
Prøv lige:

mysql_query("INSERT INTO bruger (brugernavn, password) VALUES ('$elev_brugernavn', '$elev_kodeord')") or die(mysql_error();
$elev_id = mysql_insert_id();

mysql_query("INSERT INTO elev(elev_id) VALUES ('$elev_id')") or die(mysql_error();
mysql_query("INSERT INTO foraeldre(elev_id) VALUES ('$elev_id')") or die(mysql_error();
 
echo "$elev_id";
Avatar billede schaefner Juniormester
12. april 2003 - 17:42 #15
or die(mysql_error(); skal lige være: or die(mysql_error());
Avatar billede kres69 Nybegynder
12. april 2003 - 17:47 #16
Har kørt koden. Det virker fint første gang, men anden gang siger den

"Duplicate entry '' for key 1"
Avatar billede kres69 Nybegynder
12. april 2003 - 17:48 #17
Kan det være fordi, at elev_id står som default=0 i tabellerne elev og foraeldre?
Avatar billede schaefner Juniormester
12. april 2003 - 17:51 #18
Feltet elev_id er ikke sat til auto-increment, vel?
Avatar billede kres69 Nybegynder
12. april 2003 - 17:54 #19
Jo i tabellen bruger. Skal jeg slå auto_increment fra i alle tre tabeller?
Avatar billede schaefner Juniormester
12. april 2003 - 17:55 #20
nej.
Avatar billede schaefner Juniormester
12. april 2003 - 17:56 #21
Men kan du ikke bare sætte "elev_id" til auto_increment i de to andre tabeller, så vil de jo følge hinanden
Avatar billede schaefner Juniormester
12. april 2003 - 17:57 #22
Altså når du indsætter noget nyt i den ene tabel, så gør du det jo også i de to andre, derfor burde id'en vel også følges ad.
Avatar billede kres69 Nybegynder
12. april 2003 - 17:58 #23
Mine database-oplysninger:

CREATE TABLE bruger (
  elev_id int(4) NOT NULL auto_increment,
  brugernavn varchar(20) NOT NULL default '0',
  password varchar(10) NOT NULL default '0',
  type tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (elev_id),
  UNIQUE KEY brugernavn (brugernavn)
) TYPE=MyISAM;




CREATE TABLE elev (
  elev_id int(4) NOT NULL default '0',
  fornavn varchar(20) NOT NULL default '',
  efternavn varchar(20) NOT NULL default '',
  billed_url varchar(100) NOT NULL default '',
  klassenavn char(3) NOT NULL default '',
  PRIMARY KEY  (elev_id),
  UNIQUE KEY elev_id (elev_id)
) TYPE=MyISAM;




CREATE TABLE foraeldre (
  elev_id int(4) NOT NULL default '0',
  fornavn1 varchar(20) NOT NULL default '',
  efternavn1 varchar(20) NOT NULL default '',
  fornavn2 varchar(20) NOT NULL default '',
  efternavn2 varchar(20) NOT NULL default '',
  adresse varchar(80) NOT NULL default '',
  postnr int(4) NOT NULL default '0',
  tlf int(8) NOT NULL default '0',
  bynavn varchar(30) NOT NULL default '',
  UNIQUE KEY tlf (tlf),
  UNIQUE KEY adresse (adresse)
) TYPE=MyISAM;
Avatar billede kres69 Nybegynder
12. april 2003 - 18:07 #24
Nu har jeg vist fået lortet til at virke. Jeg oprettede en ny database, og satte alle tre tabeller (elev_id) til auto_increment. Tak Schaefner.
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