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

Quickie :D længden af mit udtræk (array)

Hejsa, jeg har lige fået hjælp til at lave en fin paging funktion i php (med an access db der ikke kan li LIMIT) og det er lækkert! Men, for at begrænse hvornår der skal være en "næste"-knap har jeg brug for at vide længeden (altså hvor mange poster) der er i mit array.

Nogen der kan hjælpe med et? herunder er 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);
?>

og skal så bare vide hvor mange poster den finder... på forhånd tak! :D
Avatar billede jakobclausen Nybegynder
24. april 2004 - 13:21 #1
Længden af et array finder du med:

count($array]
Avatar billede jakobclausen Nybegynder
24. april 2004 - 13:22 #2
Avatar billede whatever Nybegynder
24. april 2004 - 13:22 #3
Avatar billede mishrah Nybegynder
24. april 2004 - 13:24 #4
den kan jeg ikke lige sætte i sammenhæng, kan du evt lige præcisere det lidt? like skrive en sætning der passer til ovenstående. skal bruge længden af hvor mange poster der findes, men count($row) virker ikke :/
Avatar billede whatever Nybegynder
24. april 2004 - 13:27 #5
Du kunne skrive:

$int_rows = odbc_num_rows($row);
Avatar billede danino Nybegynder
24. april 2004 - 13:29 #6
Som whatever siger:
<?php
$antal = odbc_num_rows($row);
?>
Avatar billede mishrah Nybegynder
24. april 2004 - 13:29 #7
Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers. ... its true :/ echo'er -1...
Avatar billede danino Nybegynder
24. april 2004 - 13:29 #8
hov... havde ikke set dit andet svar... sorry...
Avatar billede mishrah Nybegynder
24. april 2004 - 13:34 #9
der må da findes en måde hvorpå jeg kan finde ud af hvor mange resultater min select sætning finder.. :/
Avatar billede jakobclausen Nybegynder
24. april 2004 - 13:36 #10
hvorfor kan du ikke bruge mit forslag ?
Avatar billede mishrah Nybegynder
24. april 2004 - 13:43 #11
fordi det giver et underligt resultat. 2 sec, poster lige min fuldstændige 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());
                ?>
                         
                <?
                $nummer = 0;
                $oensket_forste = $_GET["visfra"];
                if ($oensket_forste == "") { $oensket_forste = 0; }
                $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; 
                  $nummer++;             
                  ?>

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

                <?
                }
                odbc_close($odbc);
                ?>

For at jeg kan bestemme om der skal være en "næste"-knap, skal jeg jo vide hvor mange poster der er fundet. Med count-funktioen (altså count($list); ) får jeg outputtet "15", selvom der er mere eller mindre end 15 resultater... Kan du evt prøve at skrive dit forslag ind i mit eksempel? så gir jeg en cola :D
Avatar billede mishrah Nybegynder
24. april 2004 - 14:46 #12
fandt selv svaret, credits go to Den onde koder hos TV2, he knows who he is:

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

                $result = odbc_exec($odbc, "SELECT * FROM HNV WHERE Produkt LIKE '%".strtolower($sogeord)."%' OR VareNr LIKE '".strtolower($sogeord)."' ORDER BY varenr ASC") or die (odbc_errormsg());

                // Smider hele resultatet over i et array som kan tælles
                $data = array();
                while($row = odbc_fetch_array($result)) {
                        array_push($data,$row); // Pusher current row i enden af arrayet
                }
                $antal = count($data);               
                $visperside = 10;

                if (isset($_GET["visfra"]) && is_numeric($_GET["visfra"])) {
                  $start = intval($_GET["visfra"]);
                }

                for ($i = $start; $i <= $start+$visperside; $i++) {
                    // og vis så de 10 næste               
                    $varenr      = $data[$i]["VareNr"];
                    $varenavn    = $data[$i]["Produkt"];
                    $varepris    = $data[$i]["Pris"];
                    $vareantal = 1;

                ?>
   
                  <?=$varenr;?> <?=$varenavn;?> <?=$varepris;?> <br><br>
   
                <?
                }
                odbc_close($odbc);
                ?>
                <br><br>
                <?=$antal; ?>
                <br><br>
                    <?
                    $start = $start -$visperside;
                    if ($start > -1) {
                    ?>
                    <a href="terminal_klient.php?tab=sog&sogebox=<?=$sogeord;?>&visfra=<?=$start;?>">forrige</a>               
                    <?
                    }
                   
                    $start = $start + $visperside + $visperside;
                    if ($start < $antal) {
                    ?>
                    <a href="terminal_klient.php?tab=sog&sogebox=<?=$sogeord;?>&visfra=<?=$start;?>">næste</a>
                    <?
                    }
                    ?>
            <?
            }
            ?>
Avatar billede mishrah Nybegynder
24. april 2004 - 14:47 #13
fandt selv svaret, credits go to Den onde koder hos TV2, he knows who he is:

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

                $result = odbc_exec($odbc, "SELECT * FROM HNV WHERE Produkt LIKE '%".strtolower($sogeord)."%' OR VareNr LIKE '".strtolower($sogeord)."' ORDER BY varenr ASC") or die (odbc_errormsg());

                // Smider hele resultatet over i et array som kan tælles
                $data = array();
                while($row = odbc_fetch_array($result)) {
                        array_push($data,$row); // Pusher current row i enden af arrayet
                }
                $antal = count($data);               
                $visperside = 10;

                if (isset($_GET["visfra"]) && is_numeric($_GET["visfra"])) {
                  $start = intval($_GET["visfra"]);
                }

                for ($i = $start; $i <= $start+$visperside; $i++) {
                    // og vis så de 10 næste               
                    $varenr      = $data[$i]["VareNr"];
                    $varenavn    = $data[$i]["Produkt"];
                    $varepris    = $data[$i]["Pris"];
                    $vareantal = 1;

                ?>
   
                  <?=$varenr;?> <?=$varenavn;?> <?=$varepris;?> <br><br>
   
                <?
                }
                odbc_close($odbc);
                ?>
                <br><br>
                <?=$antal; ?>
                <br><br>
                    <?
                    $start = $start -$visperside;
                    if ($start > -1) {
                    ?>
                    <a href="terminal_klient.php?tab=sog&sogebox=<?=$sogeord;?>&visfra=<?=$start;?>">forrige</a>               
                    <?
                    }
                   
                    $start = $start + $visperside + $visperside;
                    if ($start < $antal) {
                    ?>
                    <a href="terminal_klient.php?tab=sog&sogebox=<?=$sogeord;?>&visfra=<?=$start;?>">næste</a>
                    <?
                    }
                    ?>
            <?
            }
            ?>
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