Jeg ved ikke om jeg kan lave så gode eksempler. Det kræver som sagt at du har Pears DB klasse. Du kan hente den på [1]. Klassen understøtter sequences [2] så hvis du giver en sequences samme navn som en tabel så kan du få det næste id ved
Og der kan altid komme nogle andre indimellem som også får fat på samme højeste id - og så tror begge samtidige tråde, at det id, som de holder, vil være deres kommende id. Derfor er det smartere at gøre omvendt (uden Pear DB) - altså indsætte og bagefter spørge, hvilket id man fik - via mysql_insert_id[1].
detox: ikke nødvendigvis, for clausga har ikke beskrevet, hvad id'et skal bruges til. Det er jo muligt at han bare skal bruge et id som kan indsættes i tabellen uden problemer, men gerne vil vise det til brugeren først. I så fald kan din metode brugers.
clausga: Hvis du netop gerne vil vise et id først anbefaler jeg at du indsætter en tom række og derefter finder id ved mysql_last_inserted_id(). Så kan du senere lave en update mod denne tabel og indsætte data. Grunden til denne - lettere besværlig metode - er at detox's løsning kan skabe problemer, hvis du har to simulante brugere der vil tilføje til tabellen.
og så når du gemmer det i et array via php, kan du udskrive med $arrayNavn['lastId'];
Vil dog som bromer siger til sidst, anbefale at du opretter den først i databasen og så updater indholdet ind. Herved slipper du også for, at hvis to brugere sidder på samme side, får samme "næste ID" frem, da de ikke vil få den i sidste ende.
Det har dog sin ulempe, da en evt. bruger, der forlader en formular, har fået oprettet en tom tupel i din database. :-)
Problemet med en tom række kan meget let undgås ved at tilføje et felt der indikerer hvorvidt en række er aktiv, og så først markere en række aktiv når man har udført en update mod den.
Det er for det første ikke redundant data, men derimod bare en mængde tomme rækker. Det er ikke et problem jeg ville opsætte et cronjog til at klare men derimod gøre det manuelt, hvis det blev et problem på det tidspunkt.
$get_query = "SHOW TABLE STATUS FROM database LIKE 'table_name'"; $result = mysql_query($get_query) or die(mysql_error()); $showtable = mysql_fetch_array($result);
Bromer: Det er redundante data, da det er ens data, der er unødvendige. Det er ikke specielt effektivt, at fylde sin database bare med tomme tubler. Så hellere fastsætte et script til at tømme den for det - men det afhænger også af, hvor ofte systemet benyttes.
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.