Avatar billede cyfer Nybegynder
10. oktober 2003 - 17:32 Der er 20 kommentarer og
1 løsning

LIMIT med count() virker ikke!

Hey... Lige en quick one here!
Hvorfor hiver den hele databasen ud, og laver ikke limit her?:

$henter = mysql_query("SELECT COUNT(*) AS posts FROM pictures LIMIT $pg,$pr_side") or die(mysql_error());
$raekke = mysql_fetch_array($henter);

....($pg=0 | $pr_side=20 i dette tilfælde!)
Avatar billede nicklasb Nybegynder
10. oktober 2003 - 17:57 #1
ved du godt hvad det er du laver?!?
Det den SQL-kommando gør er såmendt bare at tælle alle forkomster der opfylder din WHILE som ikke er defineret, og returnere dette tal..
Altså et tal der fortæller hvor mange poster der er i tabellen pictures..
Avatar billede nicklasb Nybegynder
10. oktober 2003 - 17:58 #2
Vi kan så gå i detaljer og fortælle at den også medtager poster hvor fx id-feltet er tomt, frem for hvis du fx havde talt på dette.. (Altså COUNT(id), som kun returnere poster hvos id ikke har værdien _NULL_)..
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 18:03 #3
SELECT COUNT(*) AS posts FROM pictures

giver dig een række. altid. Hvad er det du vil?
Avatar billede cyfer Nybegynder
10. oktober 2003 - 18:20 #4
... okay, sådan her!
Jeg skal det som der står.... Hvis jeg i min database har 30 poster..... Så skal den kun hive fra post 0-20 ud... I det tilfælde jeg har 30 poster er der ikke noget problem, som sådan....

Men hvis jeg nu kun har fx 18 poster i min database... Så skal limit stadig være 20, men den tæller at der kun er 18 poster fra 0-20 ... Altså kan jeg bruge tallet 18 videre i mit næste script...

Hvis det gjorde jer mere forvirede, så se om i kan hitte ud af det via min code:
http://www.trine-nors.com/koden.php
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 18:43 #5
Skal du bare have antallet, så er en
  SELECT COUNT(*) AS posts FROM pictures
nok. Derefter kan du bruge dette tal til dine andre forespørgsler, der skal
bladre din tabel igennem.
Avatar billede cyfer Nybegynder
10. oktober 2003 - 18:49 #6
nej... jeg skal bruge limit $pg,$pr_side
hvis jeg fx skal starte inde i datbasen ved imput nr 7 fx og 20 frem... hvis så de sidste 2 ud af 20 frem ikk eksisterer skal jeg have det at vide...
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 18:52 #7
Ja, det er det jeg siger. Brug
  SELECT COUNT(*) AS posts FROM pictures
til at få antallet, og bruge dette tal til dine øvrige forspørgsler (med
limit osv.)
Avatar billede cyfer Nybegynder
10. oktober 2003 - 18:54 #8
så må du forklare videre, for jeg kan bestemt ikke se det gør mig til gavn...
Avatar billede nicklasb Nybegynder
10. oktober 2003 - 19:37 #9
Det gør vel intet at du skriver LIMIT 21,10 selv om der ikke er ti poster i din tabel fra post 21 og frem efter.. ?!?

Men elles er det eneste jeg kan se du har af problem vel bare at lave en begrænsning på 20.. Altså efter dit output med det store nummer siger du vel bare:

if ($antalposter > 20) {
    $antalposter = 20;
}

og så kan du opstille samme krav til din næste optælling som du stiller til din sqlforspørgelse..

men hvad er det du VIL med din kode?!? Hvis det er et pageingsystem du prøver på, er det altså langt fra en god og "rigtig" løsning.. Der burde du nok finde dig en tut at følge.. :D
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 19:45 #10
Kig fx på
http://delfs.dk/articles/danish/Side123.php

(udskift dog en count(id) med count(*) )
Avatar billede cyfer Nybegynder
10. oktober 2003 - 20:38 #11
Jaja nicklasb.... pagingsystemet er fint, så smut med dine nedladende kommentarer og find en børnehave og dril de små unger istedet, ok!

Mit spørgsmål er simpelt:
Det eneste jeg søger er en måde jeg kan lave limit på min forespørgsel og samtidig tælle de rows op som er i databasen... Hvis jeg har lavet 18 rows i min database... og har sat min limit til 20... Så bruger jeg mit script til at finde ud af at der mangler 2, for at de 20 er udfyldt...

Derfor skal jeg have min count med limit til at virke!
Det må være muligt... Tror at i begge har misforstået spørgsmålet.. Det det drejer som om er, koden i og omkring COUNT() koden... Den funker ikke! Den kigger i HELE databasen, og tæller ALLE rows... ikke kun de 20 første, for at se om der overhovedet er 20 rows i databasen....
Prøv at kigge på min kode igen...
http://www.trine-nors.com/koden.php

ps. ericjacobsen jeg har haft prøvet med count(*), det blev det ikke bedre af... derfor prøvede jeg med (id)

Takker på jeres forsøg på hjælp, håber det kan holdes i en ordelig tone, uden nedladne kommentarer... Og at vi finder frem til en løsning.. Er villig til at forhøje point!
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 20:44 #12
Jamen, hør dog hvad vi siger: du skal ikke have en limit på din count.
Det giver absolut ingen mening, da resultatet af den sætning du bruger
giver præcis een række, altid.
Avatar billede nicklasb Nybegynder
10. oktober 2003 - 20:46 #13
Vil gerne have af vide, hvad der er galt med den kommentar jeg giver?
Kan desværre ikke se det nedladende i den, men vil gerne forbedre mit sprog hvis det kan misforståes..

Hvis det ER et paging system kan det altså lavet langt smartere / hurtigere / bedre mv.. Siger sku ikke noget til dig for at nedgøre det du har lavet.. Vil hellere end gerne hjælpe dig videre med det, hvis du bare kan svare på hvad det er du prøver på..

Hvorfor må den højest tælle 20 poster? Hvis den er over tyve er det vel bare ens betydne med at der er tyve poster eller derover i din database?

"normalt" er det ikke sådan paging bedst og lettest bliver lavet.. men syntes det er fedt du selv prøver at få noget kode sat sammen.. absolut den bedste måde at lære det på (så skal du også bare være villig til at lære af dine fejl..)
Avatar billede cyfer Nybegynder
10. oktober 2003 - 22:04 #14
jeg søger sådan set ikke hjælp med paging systemet... prøv at lægge mærke til hvad jeg siger til jer... se bort fra mit paging sys.

Jeg har 20 pladser på min side som jeg skal have udfyldt... så hvis der af en eller anden grund ikke er 20 pladser indsat i databasen skal mit script sætte de manglende ind... u see ??
Avatar billede macane Nybegynder
12. oktober 2003 - 09:44 #15
Hej
En lettere ophedet debat kan jeg se :)
Lad mig se om jeg har forstået det ret :)
Du vil have have 20 billeder pr side, så vidt jeg kan se i koden.
Derudover vil du hvis du ikke har 20 billeder udfylde de resterende pladser med nopicture.gif.
I så tilfælde ville jeg gører some følger:

$query = mysql_query("SELECT * FROM pictures LIMIT $pg,$pr_side");
// returnerer det antal rows du får fra sætningen
$num_rows = $mysql_num_rows($query);
if ($num_rows < $pr_side) {
$missing_pictures = $pr_side - $num_rows;
//Gør hvad der nu skal gøres med den manglende antal billeder
}
else {
$pg = $pr_side + 1;

}
Avatar billede macane Nybegynder
12. oktober 2003 - 09:48 #16
Fik lige hakket til TAB + space hvilket resulterede en lidt for hurtig afsendelse.
Det jeg afsluttende ville sige var jeg håber jeg har fostået dit spørgsmål korrekt, og det vil hjælpe dig at komme videre

Med Venlig Hilsen
Christian
Avatar billede cyfer Nybegynder
13. oktober 2003 - 08:18 #17
You'r the man macane... Okay de andre kan selvf. ikke gøre for de ikke forstod mit spørgsmål! Måske var jeg lidt for hård i filten :)

ANYWAY..... Der er noget galt....

Fatal error: Call to undefined function: () in /customers/trine-nors.com/trine-nors.com/httpd.www/hp/picfordel.php on line 23


22: $result = mysql_query("SELECT * FROM pictures LIMIT $pg,$pr_side");
23: $num_rows = $mysql_num_rows($result);
Avatar billede cyfer Nybegynder
13. oktober 2003 - 08:23 #18
Haha.... Smukt $ du havde proppet ind :D :D :D
Bare glem det... smid et svar så vi kan få lukket det her **shi*t :)
Avatar billede macane Nybegynder
13. oktober 2003 - 12:51 #19
svaret er smidt :)
Avatar billede cyfer Nybegynder
13. oktober 2003 - 16:18 #20
Nu du er igang, ku du måske lige tage et smut forbi " http://www.eksperten.dk/spm/408702 "
Det omhandler faktisk næsten det samme... Måske du har en løsning ( tror du kan nøjes med at læse min sidste kommentar! )

Tak for hjælpen :)
Avatar billede cyfer Nybegynder
13. oktober 2003 - 21:10 #21
...eller hva ?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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