Avatar billede tlunde Nybegynder
19. september 2005 - 09:59 Der er 26 kommentarer og
1 løsning

Hente sidste ID fra tabel?

Hejsa,
Hvordan skriver jeg en mysql query hvor jeg henter det sidste ID der er indsat, og gemmer det i en variabel?
Avatar billede leif Seniormester
19. september 2005 - 10:04 #1
Avatar billede tlunde Nybegynder
19. september 2005 - 10:07 #2
Har prøvet at lege med den der, men kan ik få det til at virke, får hele tiden ID=0 ud, og det passer jo ik.

Jeg skal bruge det sidste ID i min database, for at lave en update på den...
Avatar billede leif Seniormester
19. september 2005 - 10:11 #3
Du kører med autonummering ik ?
Avatar billede leif Seniormester
19. september 2005 - 10:11 #4
Og feltet et Uniqe ?
Avatar billede tlunde Nybegynder
19. september 2005 - 10:12 #5
jo
Avatar billede tlunde Nybegynder
19. september 2005 - 10:13 #6
Har lige prøvet at lave denne:
mysql_query("UPDATE annoncer SET fornavn='$fornavn', efternavn='$efternavn', organisation='$organisation', adresse='$adresse', postnr='$postnr', bynavn='$bynavn', tlf='$tlf', fax='$fax', website='$website', email='$email' WHERE id = MAX(id)") or die(mysql_error());
mysql_close;

Men den gemmer ik data i det største ID ved brug af MAX(ID)
Avatar billede leif Seniormester
19. september 2005 - 10:16 #7
Hvor får du ID fra i MAX(id) ? Og hvorfor bruger du MAX ?
Avatar billede tlunde Nybegynder
19. september 2005 - 10:17 #8
Hvordan skal jeg ellers gøre det, for at få den til at gemme i den sidste række, uden at lave en ny række?
Avatar billede leif Seniormester
19. september 2005 - 10:18 #9
Hvor kommer ID fra ?
Avatar billede leif Seniormester
19. september 2005 - 10:18 #10
Prøv at kom med hele scriptet.
Avatar billede tlunde Nybegynder
19. september 2005 - 10:24 #11
Har det her nu:

<?
include("../../config.php");
db_con();



mysql_query("UPDATE annoncer SET fornavn='$fornavn', efternavn='$efternavn', organisation='$organisation', adresse='$adresse', postnr='$postnr', bynavn='$bynavn', tlf='$tlf', fax='$fax', website='$website', email='$email' WHERE id = '$last_id'") or die(mysql_error());
mysql_close;

header("Location: http://www.selvhjaelp.dk/for_organisationer/kontrolpanel.php");
?>

Skal bare have lavet en forespørgelse i databasen, og gemme det sidste id i databasen i variablen $last_id. Hvis jeg sætter et statisk tal ind, f.eks. 3, så virker det, skal bare have det lavet dynamisk...
Avatar billede leif Seniormester
19. september 2005 - 10:35 #12
Okay, så den skal bare vælge det sidste ID i databasen som allerede er oprettet ?

http://dk2.php.net/manual/da/function.mysql-insert-id.php bruges hvis man laver en insert og bagefter vil have hvilket ID den har fået.

Sæt følgende idn lige før update(Finder det højeste ID der allerede er i databasen):
mysql_query("SELECT id FROM `annoncer` ORDER BY `id` DESC  LIMIT 0 , 1 ") or die(mysql_error());
Avatar billede showsource Seniormester
19. september 2005 - 10:39 #13
Bruger dette til at vise en faktura INDEN den gemmes i DB.
$fakturanr er næste id

$db = "firma"; // database
$table = "faktura"; // tabel hvor næste id skal hentes

// FIND NÆSTE ID
$fields = mysql_query("SHOW TABLE STATUS FROM `". $db ."`");
    while($f = mysql_fetch_assoc($fields)) {
        if($f["Name"] != $table) {
        continue;
        }
    $fakturanr = $f["Auto_increment"];
    }

mysql_free_result($fields);
Avatar billede showsource Seniormester
19. september 2005 - 10:40 #14
Det dutter ikke rigtig at hente højeste id bare, da der jo kan være "huller" efter der er blevet slettet et eller flere rows
Avatar billede tlunde Nybegynder
19. september 2005 - 10:56 #15
er det ik bare lave en query over den query jeg har i forvejen, som henter sidste id eller bare sidste row, det er vel lige meget, og så gemme denne i en variabel, og bruger den i UPDATE lige efter?
Avatar billede leif Seniormester
19. september 2005 - 11:05 #16
Min query hente den sidste row i tabellen.
Avatar billede showsource Seniormester
19. september 2005 - 11:08 #17
Ja, har først nu forstået hvordan tlunde ville :O)
http://www.eksperten.dk/spm/649168
Avatar billede tlunde Nybegynder
19. september 2005 - 11:10 #18
leif:
Min fil ser sådan her ud nu:

<?
include("../../config.php");
db_con();

mysql_query("SELECT id FROM annoncer AS last_id ORDER BY id DESC  LIMIT 0 , 1 ") or die(mysql_error());

mysql_query("UPDATE annoncer SET fornavn='$fornavn', efternavn='$efternavn', organisation='$organisation', adresse='$adresse', postnr='$postnr', bynavn='$bynavn', tlf='$tlf', fax='$fax', website='$website', email='$email' WHERE id = '$last_id'") or die(mysql_error());
mysql_close;

header("Location: http://www.selvhjaelp.dk/for_organisationer/kontrolpanel.php");
?>

Skal jeg ik skrive som jeg har gjort, hvor jeg sætter AS last_id ind, for at gemme i en variabel som jeg kan bruge i min update længere nede, i id = '$last_id'
Avatar billede leif Seniormester
19. september 2005 - 11:14 #19
<?
include("../../config.php");
db_con();

$result = mysql_query("SELECT id FROM annoncer AS last_id ORDER BY id DESC  LIMIT 0 , 1 ") or die(mysql_error());
$row = mysql_fetch_array($result);
$last_id = $row["id"];


mysql_query("UPDATE annoncer SET fornavn='$fornavn', efternavn='$efternavn', organisation='$organisation', adresse='$adresse', postnr='$postnr', bynavn='$bynavn', tlf='$tlf', fax='$fax', website='$website', email='$email' WHERE id = '$last_id'") or die(mysql_error());
mysql_close;

header("Location: http://www.selvhjaelp.dk/for_organisationer/kontrolpanel.php");
?>
Avatar billede showsource Seniormester
19. september 2005 - 11:15 #20
$hent = mysql_query("SELECT MAX(id) FROM annoncer") or die(mysql_error());
$last_id = mysql_result($hent, 0);
Avatar billede showsource Seniormester
19. september 2005 - 11:16 #21
Og nu hoppper jeg ud af denne tråd! :O)
Avatar billede tlunde Nybegynder
19. september 2005 - 11:19 #22
jamen, det virker jo nu...
Tak for hjælpen, nogle svar?
Avatar billede leif Seniormester
19. september 2005 - 11:20 #23
Hvem af os ?
Avatar billede tlunde Nybegynder
19. september 2005 - 11:21 #24
begge
Avatar billede showsource Seniormester
19. september 2005 - 11:21 #25
dig leif!
Avatar billede leif Seniormester
19. september 2005 - 11:22 #26
Hvilken løsning bruger du ?
Avatar billede tlunde Nybegynder
19. september 2005 - 11:32 #27
$hent = mysql_query("SELECT MAX(id) FROM annoncer") or die(mysql_error());
$last_id = mysql_result($hent, 0);
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
Computerworld tilbyder specialiserede kurser i database-management

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