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 ?
Annonceindlæg fra Computerworld
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
09. februar 2003 - 15:58
#2
Øh... select id from dintabel where id>117 order by id asc limit 1
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..
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?
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
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"..
09. februar 2003 - 16:03
#7
skal lige sluttes: $id = mysql_num_rows(mysql_query("SELECT id FROM dintebel"))+1;
09. februar 2003 - 16:03
#8
Det er vist ikke det han spørger om, ahv.
09. februar 2003 - 16:04
#9
Nej, jacob - nu skal du selv præstere lidt. Vis mig lige den rigtige SQL-sætning :)
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
09. februar 2003 - 16:06
#11
ahv>>> det giver da ikke mening !! elelr gør det...
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
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")
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?
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")
09. februar 2003 - 16:20
#16
nah, det er jo ikke sikkert det foregående nummer er der
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 !!
09. februar 2003 - 16:24
#18
Den er svær..
09. februar 2003 - 16:25
#19
Hvad vil der kommer ud af $PIDT hvis der ikker var flere 0 eller NULL ?
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
09. februar 2003 - 16:28
#21
Er der ikke en næste (eller forrige) får du bare 0 tupler tilbage
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 ??
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..
09. februar 2003 - 16:58
#24
Dine id-er er vel int - og ikke char/varchar ??
09. februar 2003 - 17:01
#25
den er int(4)
09. februar 2003 - 17:11
#26
Åh, jamen skriv rigtigt af ... ikke? ;)
09. februar 2003 - 17:13
#27
aha.. Ja... Man SKAL bruge ASC....
09. februar 2003 - 17:14
#28
Men som du siger.. Hvordan fanden vender man den så om??
09. februar 2003 - 17:15
#29
Men det skal du ikke rode med.. Vil du have flere point ?...
09. februar 2003 - 17:21
#30
Det har jeg jo fortalt dig. Nej, jeg skal ikke have nytteløse poiint
09. februar 2003 - 17:24
#31
okay...... Vil du slet ikke have nogle ??..
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
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. }
09. februar 2003 - 21:59
#34
Hvorfor er det lige det fungere... Hvad gør den IF-STATEMENT ??
09. februar 2003 - 22:01
#35
Det er jo ikke sikkert der en "næste".
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"));
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.
10. februar 2003 - 21:19
#38
Ok.. Vil du ligge et svar ?
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 ?
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..
12. februar 2003 - 22:47
#41
Ja ja *gg*
Computerworld tilbyder specialiserede kurser i database-management