Avatar billede jost Nybegynder
12. juni 2008 - 12:55 Der er 13 kommentarer og
2 løsninger

Indsætte i 2 tabeller på én gang

Hej

Jeg har to tabeller i en MySQL database, hvor jeg skal have sat data fra en HTML formular i på en gang.

Mine to tabeller hedder:
login
brugere

<?php
if (isset($_POST['opret']))
{
 
//Data fyldes i databasen
$navn = $_POST['navn'];
$adresse = $_POST['adresse'];
$postnr = $_POST['postnr'];
$postby = $_POST['postby'];
$kperson = $_POST['kperson'];
$mail = $_POST['mail'];
$tlf = $_POST['tlf'];
$www = $_POST['www'];
$mappe = $_POST['mappe'];
$pw = $_POST['pw'];


$sql = "INSERT INTO brugere login SET
navn='$navn',
adresse='$adresse',
postnr='$postnr',
postby='$postby',
kperson='$kperson',
mail='$mail', // skal i tabellen login
tlf='$tlf',
www='$www',
mappe='$mappe',
access='2' // skal i tabellen login
pw='$mail'"; // skal i tabellen login
}

Lige nu ryger alt data i tabellen brugere. Men hvordan får jeg de tre stykker data i login tabellen?

Jeg har forsøgte med:
INSERT INTO brugere,login SET
brugere.navn='$navn',
login.mail='$mail',
etc.

Men det virker ikke.

På forhånd tak.

Jost
Avatar billede jakobdo Ekspert
12. juni 2008 - 12:58 #1
Du bliver nød til at lave:

INSERT INTO brugere SET brugere.navn = '$navn' osv...
INSERT INTO login SET login.mail = '$mail' osv...

Altså 2 kald til mysql.
Avatar billede jost Nybegynder
12. juni 2008 - 13:13 #2
hmm

Jeg har forsøgt med dette, får fejl:

$sql = "INSERT INTO brugere SET
brugere.navn='$navn',
brugere.adresse='$adresse',
brugere.postnr='$postnr',
brugere.postby='$postby',
brugere.kperson='$kperson',
brugere.tlf='$tlf',
brugere.www='$www',
brugere.mappe='$mappe',

// Det er her den siger der er fejl. Mangler der noger for at kæde de to inserts sammen?
   
INSERT INTO login SET
login.mail='$mail',
login.access='2',
login.pw='$mail'";
}
Avatar billede w13 Novice
12. juni 2008 - 13:16 #3
De skal ikke kædes sammen men skrives hver for sig, som Jakobdo skriver.
Avatar billede keysersoze Guru
12. juni 2008 - 13:24 #4
insert-statements lyder vel sådan;

INSERT INTO brugere (xxx, yyy) VALUES (aaa, bbb)

det i har fat i er en update-statement.
Avatar billede jakobdo Ekspert
12. juni 2008 - 13:24 #5
Ja, du skal kalde dem af to omgange.

$sql1 = "INSERT INTO brugere.....";
mysql_query($sql1);

$sql2 = "INSERT INTO login.....";
mysql_query($sql2);
Avatar billede jost Nybegynder
12. juni 2008 - 13:26 #6
Feks en $sql og en $sql2?

Jeg må indrømme jeg ikke kan se for mig hvordan det skrives. For jeg har også en

if (@mysql_query($sql))
{
    echo "$navn<br>
        $adresse<br>
        $postnr<br>
        $postby<br>
        $kperson<br>
        $mail<br>
        $tlf<br>
        $www<br>
        $mappe<br>";
  } else {
    echo '<p>Der skete MULIGVIS en fejl. <br />FEJL: ' . mysql_error() . '</p>';
  }

}

Og det kan jeg ikke se for mig hvor det skal laves med to kald.
Avatar billede w13 Novice
12. juni 2008 - 13:33 #7
Det er vel bare:

if (@mysql_query($sql1)&&@mysql_query($sql2))
{
    echo "$navn<br>
        $adresse<br>
        $postnr<br>
        $postby<br>
        $kperson<br>
        $mail<br>
        $tlf<br>
        $www<br>
        $mappe<br>";
  } else {
    echo '<p>Der skete MULIGVIS en fejl. <br />FEJL: ' . mysql_error() . '</p>';
  }

}
Avatar billede jakobdo Ekspert
12. juni 2008 - 13:38 #8
keysersoze: Du kan godt bruge INSERT INTO noget SET navn = $name
http://dev.mysql.com/doc/refman/5.0/en/insert.html
Avatar billede jost Nybegynder
12. juni 2008 - 14:03 #9
Yay, det virker. Det var jo mega simpelt :-)

Koden ser sådan ud her:

if (isset($_POST['opret']))
{
 
//Data fyldes i databasen
$navn = $_POST['navn'];
$adresse = $_POST['adresse'];
$postnr = $_POST['postnr'];
$postby = $_POST['postby'];
$kperson = $_POST['kperson'];
$mail = $_POST['mail'];
$tlf = $_POST['tlf'];
$www = $_POST['www'];
$mappe = $_POST['mappe'];
$pw = $_POST['pw'];


$sql = "INSERT INTO brugere login SET
$sql = "INSERT INTO brugere SET
brugere.navn='$navn',
brugere.adresse='$adresse',
brugere.postnr='$postnr',
brugere.postby='$postby',
brugere.kperson='$kperson',
brugere.tlf='$tlf',
brugere.www='$www',
brugere.mappe='$mappe'";

$sql2 = "INSERT INTO login SET
login.login='$mail',
login.access='2',
login.pw='$pw'";

if (@mysql_query($sql)&&@mysql_query($sql2))
      {
        echo "$navn<br>
        $adresse<br>
        $postnr<br>
        $postby<br>
        $kperson<br>
        $mail<br>
        $tlf<br>
        $www<br>
        $mappe<br>";
  } else {
    echo '<p>Der skete MULIGVIS en fejl. <br />FEJL: ' . mysql_error() . '</p>';
  }

}

jakobdo og w13 smid et svar og I får nogle points.

Noge andet. Det som keysersoze skriver. Er der nogen der kan forklare mig fordelen ved at bruge INSERT INTO brugere (xxx, yyy) VALUES (aaa, bbb)?
For jeg synes det er mega uoverskeueligt, især når man har mange poster.
Men jeg ser næsten ingen steder at folk bruger den måde jeg gør det på (eller det er måske bare mig)?

/Jost
Avatar billede jakobdo Ekspert
12. juni 2008 - 14:04 #10
Jost: Du får et svar her.
Du kan lave INSERTS på flere måder, se her:
http://dev.mysql.com/doc/refman/5.0/en/insert.html

Og man skal jo blot bruge den man selv finder nemmest.
Avatar billede w13 Novice
12. juni 2008 - 14:08 #11
:)
Avatar billede jakobdo Ekspert
12. juni 2008 - 15:35 #12
Takker for point.
Avatar billede w13 Novice
12. juni 2008 - 15:36 #13
Tak for point! :)
Avatar billede jost Nybegynder
12. juni 2008 - 15:42 #14
Det var så lidt :-)
Avatar billede keysersoze Guru
14. juni 2008 - 11:01 #15
ah yes - sry, den metode har jeg aldrig stødt på, men det er trods alt også en del år siden jeg har kigget på mysql :)
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