Avatar billede jacob_m Nybegynder
09. februar 2003 - 15:44 Der er 40 kommentarer og
1 løsning

næste id i rækken

Hej Hej..

Kan man få PHP eller MySQL til at regne ud hvad det næste ID nr. er i en database ??..

Jeg har nemlig en billede database.. Og der kære navigationen at man bare +1 på id´et.. Men det går jo ikke hvis man har slettet et billede f.eks. ??

Håber at i forstår ?
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 15:57 #1
Ja, hvis du har et id, fx, nummer 117 så laver du bare en

select id from dintabel where id>117 limit 1 order by id asc
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 15:58 #2
Øh...

select id from dintabel where id>117 order by id asc limit 1
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:00 #3
Mange tak.....

Det sjove ved at programmere er at man bare skal tænke logisk ;-)...

Ligger du et svar..
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:01 #4
Nej, intet svar fra mig (jeg er ved at vride mig ud af et
af de der gratis PRO-abonnementer, som jeg er blevet
prakket på)

Skal vi tage den store test? Hvordan får du det forrige id?
Avatar billede ahv Nybegynder
09. februar 2003 - 16:02 #5
Du kan tælle antal id'er med dette

mysql_num_rows(mysql_query("SELECT id FROM dintebel"))

også lægge en til:

$id = mysql_num_rows(mysql_query("SELECT id FROM dintebel"))+1
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:03 #6
Ja. der satte jeh jo bare en - på...

Men jeg kan jo gøre som du lige har vist bare med "DESC"..
Avatar billede ahv Nybegynder
09. februar 2003 - 16:03 #7
skal lige sluttes:

$id = mysql_num_rows(mysql_query("SELECT id FROM dintebel"))+1;
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:03 #8
Det er vist ikke det han spørger om, ahv.
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:04 #9
Nej, jacob - nu skal du selv præstere lidt. Vis mig lige den rigtige SQL-sætning :)
Avatar billede ahv Nybegynder
09. februar 2003 - 16:06 #10
Næh, det er det sørme heller ikke. Den jeg giver tæller jo det antal der er og ikke hvad nummer den er nået til. Sorry
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:06 #11
ahv>>> det giver da ikke mening !! elelr gør det...
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:09 #12
Okay.. Her er soucen

---------------------------- SOURCE ------------------------

<?

include ('var.php');

connect();

$res_id = mysql_query ( "SELECT * FROM `bb_billeder` WHERE m_id = '$m' AND id = '$pid'")
    or die (mysql_error());

while($r = mysql_fetch_array($res_id)) {
$id = $r["id"];
$m_id = $r["m_id"];
$link = $r["link"];
$album = $r["album"];
$beskrivelse = $r["beskrivelse"];
$type = $r["type"];

$rows = mysql_num_rows(mysql_query ("SELECT * FROM `bb_billeder` WHERE m_id = '$m'"));



}
$pidt = $pid-1;
if ($pidt <= 1) {
        $pidt =1;
}

$pidf = $pid+1;
if ($pidf > $rows) {
    $pidf = 1;
}

?>

--------------- SOURCE ------------------------------

og $m variablen kommer fra linket... EKS: galleri.php?m=1
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:16 #13
Jeg misforstod dig ERIKJACOBSEN !!!

pidf som er et ID frem..

$pidf = ("SELECT id FROM 'bb_billeder' WHERE ID = $pid ORDER BY ID ASC LIMIT 1")
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:16 #14
Det var vist ikke det jeg mente. Jeg gav dig en "smart" sql-sætning
til at finde det næste id. Kan du give den tilsvarende "smarte" til
at finde det foregående?
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:17 #15
nåre..

$pidt er ID 1 tilbage

$pidt = ("SELECT id FROM 'bb_billeder' WHERE ID = $pid ORDER BY ID DESC LIMIT 1")
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:20 #16
nah, det er jo ikke sikkert det foregående nummer er der
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:23 #17
Hmmm... Nåre ja.. der skal jo være en sikkerhed som jeg har med $PIDF som er:

--------------------------------------------------------------------
$rows = mysql_num_rows(mysql_query ("SELECT * FROM `bb_billeder` WHERE m_id = '$m'"));

$pidf = $pid+1;
if ($pidf > $rows) {
    $pidf = 1;
}

--------------------------------------------------------------

Som sikre man starter forfra !!
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:24 #18
Den er svær..
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:25 #19
Hvad vil der kommer ud af $PIDT hvis der ikker var flere 0 eller NULL ?
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:27 #20
Nej, det er den ikke.
Du får næste id med:
select id from dintabel where id>117 order by id asc limit 1
og forrige med
select id from dintabel where id<117 order by id desc limit 1
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:28 #21
Er der ikke en næste (eller forrige) får du bare 0 tupler tilbage
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:29 #22
Men jeg har lige prøvet

SELECT id FROM bb_billeder WHERE ID = 5 ORDER BY ID DESC LIMIT 1

og den spytter bare ID 5 ud.. Det var jo ikke meningen ??
Avatar billede jacob_m Nybegynder
09. februar 2003 - 16:31 #23
FEJL igen..

Nu med:

SELECT id FROM bb_billeder WHERE ID>5 ORDER BY ID DESC LIMIT 1

For jeg ID 56 ud..
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 16:58 #24
Dine id-er er vel int - og ikke char/varchar ??
Avatar billede jacob_m Nybegynder
09. februar 2003 - 17:01 #25
den er int(4)
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 17:11 #26
Åh, jamen skriv rigtigt af ... ikke? ;)
Avatar billede jacob_m Nybegynder
09. februar 2003 - 17:13 #27
aha.. Ja... Man SKAL bruge ASC....
Avatar billede jacob_m Nybegynder
09. februar 2003 - 17:14 #28
Men som du siger.. Hvordan fanden vender man den så om??
Avatar billede jacob_m Nybegynder
09. februar 2003 - 17:15 #29
Men det skal du ikke rode med.. Vil du have flere point ?...
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 17:21 #30
Det har jeg jo fortalt dig. Nej, jeg skal ikke have nytteløse poiint
Avatar billede jacob_m Nybegynder
09. februar 2003 - 17:24 #31
okay......
Vil du slet ikke have nogle ??..
Avatar billede jacob_m Nybegynder
09. februar 2003 - 21:48 #32
OKay... Hvis du ikke vil ahve nogle point.. Så vil du sikkert hjælpe mig ?..

Jeg har problemmer med at få vores SQL Query ud i en variabel.. Jeg har prøvet med flg.:

1.
while(($pidf = mysql_fetch_array(mysql_query ( "SELECT id FROM bb_billeder WHERE id>$pid ORDER BY id ASC LIMIT 1"))));

2.
$pidf = mysql_fetch_array(mysql_query ( "SELECT id FROM bb_billeder WHERE id>$pid ORDER BY id ASC LIMIT 1"));

3.
while($pr = mysql_fetch_array(mysql_query ( "SELECT id FROM bb_billeder WHERE id>$pid ORDER BY id ASC LIMIT 1"))) {
$pidf = $pr["id"];
}

Og der er ikke rigtig noget der fungere ?!

/jacob
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 21:54 #33
Nummer 2 ser ret god ud.

Efter linien skal du

if ($pidf) {
  $naesteid = $pidf['id'];
} else {
  // slut finale, der er ikke flere.
}
Avatar billede jacob_m Nybegynder
09. februar 2003 - 21:59 #34
Hvorfor er det lige det fungere... Hvad gør den IF-STATEMENT ??
Avatar billede erikjacobsen Ekspert
09. februar 2003 - 22:01 #35
Det er jo ikke sikkert der en "næste".
Avatar billede jacob_m Nybegynder
09. februar 2003 - 22:04 #36
ok... Nu sidder jeg så og roder med den sidste i rækken.. Og en IF-STATEMENT..

Dette er et bud.. Men det fungere ikke helt..

$rows = mysql_num_rows(mysql_query ("SELECT * FROM `bb_billeder` WHERE m_id = '$m'"));

$sidsteid = mysql_fetch_array(mysql_query ( "SELECT id FROM bb_billeder WHERE id>$pid ORDER BY id ASC LIMIT $rows,$rows"));
Avatar billede erikjacobsen Ekspert
10. februar 2003 - 00:07 #37
Jeg tror jeg stopper her. Jeg mener du har fået alt at vide
du behøver. Hvorfor du så begynder at skrive andre
mærkelige ting - det ved jeg ikke.
Avatar billede jacob_m Nybegynder
10. februar 2003 - 21:19 #38
Ok.. Vil du ligge et svar ?
Avatar billede oasen Nybegynder
12. februar 2003 - 00:28 #39
Undskyld, jacob_m - jeg kunne ikke lade være:
==================================================================

Kommentar: jacob_m
09/02-2003 16:00:22
Ligger du et svar..

Kommentar: erikjacobsen
09/02-2003 16:01:42
Nej, intet svar fra mig (jeg er ved at vride mig ud af et
af de der gratis PRO-abonnementer, som jeg er blevet
prakket på)

Kommentar: jacob_m
09/02-2003 17:15:24
Vil du have flere point ?...

Kommentar: erikjacobsen
09/02-2003 17:21:25
Det har jeg jo fortalt dig. Nej, jeg skal ikke have nytteløse poiint

Kommentar: jacob_m
09/02-2003 17:24:10
okay......
Vil du slet ikke have nogle ??..

Kommentar: jacob_m
10/02-2003 21:19:29
Ok.. Vil du ligge et svar ?
Avatar billede jacob_m Nybegynder
12. februar 2003 - 09:15 #40
Jae...
----------------------------------
Kommentar: erikjacobsen
10/02-2003 00:07:25    Jeg tror jeg stopper her. Jeg mener du har fået alt at vide du behøver. Hvorfor du så begynder at skrive andre mærkelige ting - det ved jeg ikke.
-----------------------------------

Så kunne det jo være han ville hvae nogle point !!.. Men så fuck det.. Så tager jeg dem bare selv..
Avatar billede oasen Nybegynder
12. februar 2003 - 22:47 #41
Ja ja *gg*
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