Avatar billede danic Nybegynder
06. juni 2004 - 12:36 Der er 12 kommentarer og
1 løsning

Check om tabellen er tom

Jeg finder den sidste id i min tabel, men hvis tabellen er helt ny er skal værdien sættes til 0

$sql = 'SELECT MAX(templateid)+1 FROM templates';
if (!mysql_query($sql))
{
  $firstid = 0; // sætter værdien til nul
}
else
{
  $firstid = mysql_result(mysql_query($sql)); // henter sidste id
}
insert into templates SET templateid='$firstid'....

Men mit check virker ikke, er der en bedre måde at checke på om tabellen er tom?
Avatar billede arne_v Ekspert
06. juni 2004 - 12:38 #1
SELECT COUNT(*) FROM tabelnavn

returnerer antal rækker i tabellen

Men hele ideen er fejlagtig, da den ikek kan bruges med flere samtdige
brugere.

Brug auto increment til at generere de ID'er med !
Avatar billede danic Nybegynder
06. juni 2004 - 12:44 #2
Ideen er rigtigt da det er en 1 user template designer, men hvordan returnerer antal rækker i tabellen? kan du vise mig det på min kode?
Avatar billede arne_v Ekspert
06. juni 2004 - 12:47 #3
Den query returnerer et felt og en række som du kan læse ligesom enhver anden
query.

Og test på om den er 0 eller >0.
Avatar billede arne_v Ekspert
06. juni 2004 - 12:48 #4
Og uanset hvor sikker du idag er på at systemet aldrig kan få samtidigheds
problemer så:

1)  det er nemmere a bruge en auto increment id

2)  hvis systemet lige pludseligt en dag skal bruges af flere brugere, så er
    man forberedt
Avatar billede danic Nybegynder
06. juni 2004 - 12:52 #5
Jeg bruger også auto increment id men jeg bliver nød til at have en id mere
hvor jeg ikke benytter auto increment id fordi, mysql ikke altid vil indsætte tal i den rigtige rækkefølge 1-2-3-4-5-6-7..... hvis jeg nu sletter post 3+4 så vil mit data grundlag blive 1-2-5-6-7-3-4 og så ryger mit datagrundlag i vasken.
Avatar billede arne_v Ekspert
06. juni 2004 - 12:55 #6
Jeg er ret sikker på at:

indsæt 7 rækker
slet id=3 og id=4
indsæt 2 rækker

vil give: 1 2 5 6 7 8 9 og ikke 1 2 5 6 7 3 4
Avatar billede arne_v Ekspert
06. juni 2004 - 12:58 #7
Men hvis du har "specielle behov", så kan du flytte ID genereringen totalt
fra database til applikation.

Der er lavet mange metoder til at lade applikationen generere unikke id'er
og nogen af dem kan generere stigende værdier.
Avatar billede danic Nybegynder
06. juni 2004 - 13:01 #8
Så prøv at se min tabel her:

`filmID` int(11) NOT NULL auto_increment,
65 Lion King 2   
221 Blade   
3 Erin Brockovich   
4 Wishmaster 1 & 2   
5 Sheryl Crow - Rocking The Globe   
6 Reindeer Games   
7 Heat   
8 Ronin   
9 Mig og Mafiaen

det er de 9 første poster, som du kan se er post 1 og post 2 blevet slettet og en ny id er kommet ind
Avatar billede arne_v Ekspert
06. juni 2004 - 13:04 #9
Ja men netop ikke med genbrug af auto incrementede id'er.

Og du kan få dem ud i "rigtigt" rækkefølge ved at angive:

SELECT ... ORDER BY filmID
Avatar billede arne_v Ekspert
06. juni 2004 - 13:05 #10
Hvis man vil have rækker ud i en bestemt rækkefølge skal man altid bruge ORDER BY.
Avatar billede danic Nybegynder
06. juni 2004 - 13:05 #11
Jeg bruger sessions, men der er måske en mere smart måde?

$_SESSION["checknext"] = "true";
$_SESSION['nextid'] = "$firstid+1";
Avatar billede danic Nybegynder
06. juni 2004 - 13:13 #12
Jeg må se lige mere på SELECT COUNT(*) FROM tabelnavn + order by.....

Du er velkommen til at smide et svar :-)
Avatar billede arne_v Ekspert
06. juni 2004 - 13:15 #13
ok
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