Avatar billede benneharli Juniormester
01. september 2005 - 17:43 Der er 7 kommentarer og
1 løsning

Vælge laveste ledige

Jeg skal have det første ledige nummer i en tabel:

1: Jeg laver et query:
    $sql = "SELECT IndividualId FROM IDWorksView";
    $res = odbc_exec($conn,$sql);
        $item = odbc_fetch_array($res);

2: Jeg laver mit array
        $span = foreach (range(1, $maxindiv) as $number) {
        echo $number;
        };

3: Jeg sammenligner de to:
        $result = array_diff($span,$item);

4: Jeg tager det laveste af sammenligningen
        $individualid = min($result);

5: Jeg ser hvad det er:
        echo $individualid;

Hvor er det lige det går galt???

PS: $maxindiv er defineret...
Avatar billede benneharli Juniormester
01. september 2005 - 17:44 #1
Og forbindelsen er testet...
$conn = odbc_connect($DSN,$db_login,$db_pw);
Avatar billede nielle Nybegynder
01. september 2005 - 17:51 #2
Hvordan ser din fejl ud? Får du en fejlbesked, eller et forkert resultat?
Avatar billede nielle Nybegynder
01. september 2005 - 17:52 #3
Iøvrigt bør du danne din $span på denne måde:

$span = range(1, $maxindiv);
Avatar billede benneharli Juniormester
02. september 2005 - 02:30 #4
$conn = odbc_connect($DSN,$db_login,$db_pw);

$sql = "SELECT IndividualId FROM IDWorksView";
$maxindiv = "10000";
    $res = odbc_exec($conn,$sql);
    $item = odbc_fetch_array($res);
    $span = range(1, $maxindiv);
        $result = array_diff($span,$item);
        $individualid = min($result);
echo $individualid;

odbc_close($conn);
Avatar billede benneharli Juniormester
02. september 2005 - 02:34 #5
I IndividualId ligger følgende: 1,2,3,4,5,6,7,8,9,11,12,13... Det er altså 10 der mangler

Når jeg kører scriptet svarers der "2"... Jeg går derfor ud fra at der skal laves en løkke for at få det array der skal laves på baggrund af SQL query til at blive fyldt ud...
Avatar billede nielle Nybegynder
02. september 2005 - 07:37 #6
I din kode trækker du kun den første række ud af din tabel. Da denne sikkert indeholder "1", set det mindste "frie" id altsås "2". Ret til:

$sql = "SELECT IndividualId FROM IDWorksView";
$res = odbc_exec($conn, $sql);

$items = array();
while ($row = odbc_fetch_array($res))
{
    $items[] = $row["IndividualId"];
}

$span = range(1, $maxindiv);

$result = array_diff($span, $items);

$individualid = min($result);

echo $individualid;
Avatar billede benneharli Juniormester
05. september 2005 - 15:07 #7
perfekt... smid et svar ;-)
Avatar billede nielle Nybegynder
05. september 2005 - 18:26 #8
Svar :^)
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