Avatar billede mishrah Nybegynder
24. april 2004 - 12:03 Der er 8 kommentarer og
1 løsning

Sjov lille en til en ekspert :D Flere sider, men med et twist!

Hejsa og godmorgen!

Jeg har mit fine db udtræk, denne gang fra en Access db (sigh!) men kan ikk slippe uden om access da det er til arb :(
Anyway, så er mit udtræk variabelt da det er en del af en søgefunktion, og det skal deles op med 10 posts per side. Normalt ville man bare skrige LIMIT!!!! men det går jo ikke fordi Access er en SQL-wannabe og ikke understøtter limit... So what to do? Er der nogen der kan lave et SIMPELT eksempel der deler mit udtræk op i sider med 10 posts per side? Så der 200 point til kaffen! :D Herunder er nuværende kode:

<?
include("inc/odbc_connect.inc");

$row = odbc_exec($odbc, "SELECT * FROM HNV WHERE Produkt LIKE '%".strtolower($sogeord)."%' OR VareNr LIKE '".strtolower($sogeord)."' ORDER BY varenr ASC") or die (odbc_errormsg());
?>
               
<?
while($list = odbc_fetch_array($row)){
                   
  $varenr        = $list["VareNr"];
  $varenavn    = $list["Produkt"];
  $varepris     = $list["Pris"];
  $vareantal = 1;   
                   
  ?>

  <?=$varenr;?> <?=$varenavn;?> <?=$varepris;?> <br><br>

<?
}
odbc_close($odbc);
?>
Avatar billede mishrah Nybegynder
24. april 2004 - 12:15 #1
glemte at sige at det self skal være php :) Har fundet guides til at lave det i asp, men det er jeg ikke lige så hård til :/
Avatar billede jakoba Nybegynder
24. april 2004 - 12:27 #2
Det rareste ville være hvis du har et felt i databasen der afspejler den ønskede sekvens, og som er reculært nok til at du kan "forudse" hvilken værdi det felt har i række nr 10, 20, 30, 40, ...

Du kunne evt lave det felt selv ved at oprette et ekstra felt i tabellen, og så gennummerere rækkerne i tabellen hver garg der er fhernet/indsat/ændret en række i tabellen. Med sådan et felt kunne du så bruge where istedet limit til at begrænse udtrækket. Det kommer så også an på om Access tillader den slage renummerering i et felt.

Men hvis tabellen ikke er vældig lang, eller hvis den ændres hyppigt er det nok billigere at hente alle rækker og så blot smide de rækker væk der ikke skal vises denne gang.

<?
include("inc/odbc_connect.inc");

$row = odbc_exec($odbc, "SELECT * FROM HNV WHERE Produkt LIKE '%".strtolower($sogeord)."%' OR VareNr LIKE '".strtolower($sogeord)."' ORDER BY varenr ASC") or die (odbc_errormsg());
?>
             
<?
$nummer = 0;
$oensket_forste = 40;
$oensket_sidste = $oensket_forste +10;

while ( $nummer < $oensket_forste ) {
        // skip forbi dem vi ikke ønsker at vise på denne side
    $list = odbc_fetch_array($row);
    $nummer++;
}

while( $nummer < $oensket_sidste && $list = odbc_fetch_array($row)) {
      // og vis så de 10 næste                 
  $varenr        = $list["VareNr"];
  $varenavn    = $list["Produkt"];
  $varepris    = $list["Pris"];
  $vareantal = 1; 
                 
  ?>

  <?=$varenr;?> <?=$varenavn;?> <?=$varepris;?> <br><br>

<?
}


odbc_close($odbc);
?>

mvh JakobA
Avatar billede jakoba Nybegynder
24. april 2004 - 12:28 #3
Ups. Der skal også være en linie med
    $nummer++;
i den nederste while
Avatar billede mishrah Nybegynder
24. april 2004 - 12:35 #4
Hey jakoba! Det er sq en genial måde at gøre det på! Lortet kommer til at køre lokalt så det er ok, bare at hive hele sættet ud og sortere dem fra man ikke vil se. MEN... jeg ahr idt prob med at få det til at virke i praksis :D Når jeg fx søger på søm i min db, kommer der 29 resultater. Fint. Så det jo klart at den ikek viser noget, når det foreløbigt er specificeret til kun at vise fra 40 til 50. Men selvom jeg sætter $oensket_foerste = 5, så viser den ikke fra 5 - 15 som den burde. den viser i stedet 19 resultater? Så der er noget jeg misser... men hvad? :D A little more help plz :) Så gir jeg en cola!
Avatar billede mishrah Nybegynder
24. april 2004 - 12:37 #5
LOL! ok, der skrev vi lige forbi hinanden :D kewl! men self! genialt mester!
Avatar billede mishrah Nybegynder
24. april 2004 - 12:39 #6
one more thing, hvor gir jeg dig dine point? kan ikke lige finde knappen til det? mig der er blind, eller er der lavet om her siden jeg var her sidst? :D
Avatar billede mishrah Nybegynder
24. april 2004 - 12:55 #7
hvis du er der endnu, ehm, så har jeg et lille spørgsmål mere :D Kan man tælle hvor mange poster der blir fundet? for jeg har lavet en funktion til at gå 10 frem hver gang man klikker næste og der virker fint, men det er lidt et prob at jeg ikke kan gå ind og sige at oensket_sidste max må være længden af array :D hvis du ved hvad jeg mener?
Avatar billede jakoba Nybegynder
24. april 2004 - 14:47 #8
jeg lægger et svar. :-)
Avatar billede jakoba Nybegynder
25. april 2004 - 10:23 #9
Ups. overså den sidste.
Ja man kan tælle, som regel vil man dog bruge en anden SQL søgning til det:

$row = odbc_exec($odbc, "SELECT COUNT(*) AS antal FROM HNV WHERE Produkt LIKE '%".strtolower($sogeord)."%' OR VareNr LIKE '".strtolower($sogeord)."' ORDER BY varenr ASC") or die (odbc_errormsg());
$resultatrow = odbc_fetch_array($row);  // der kommer kun een række
echo "Der blev fundet " .$resultatrow[ 'antal' ] ." rækker.";

mvh JakobA
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