Avatar billede bjarke-b Nybegynder
08. november 2007 - 13:07 Der er 3 kommentarer

Forskel på 15, og 5 i løkke

Vi har en række kategorier der hver har et tal og gemmes i et felt i formatet "1,9,14,17" problemet er at når vores system udskriver og skal vise hvilke kategorier der er valgt vises 4 også fordi 14 er valgt.

Vores funktion ser således ud

while ($kategoriout = mysql_fetch_array($kategorisql)){
        echo '<div style="float:left;  width:130px; white-space: nowrap; text-align:left; margin:1px;">';
        $mystring = $row['gavetype'];
        $findme  = $kategoriout['id'];
        $pos = strpos($mystring, $findme);
       
    echo $findme.' --- '.$mystring.'<br>';
        if($pos === false) {
          echo '<input type="checkbox" name="gavetyper'.$kategoriout['id'].'" value="1">'.$kategoriout['navn'].'<br>';
     
        } else {
            echo '<input checked type="checkbox" name="gavetyper'.$kategoriout['id'].'" value="1">'.$kategoriout['navn'].'<br>';
        }
       
        echo '</div>';

}

Er der nogen der kan løse den så vi ikke får dobbelt konfekt i kategori afkrydsningen?

På forhånd tak for hjælpen.
Avatar billede erikjacobsen Ekspert
08. november 2007 - 13:32 #1
Man gemmer ikke oplysninger på den måde i en tabel i en database. Det medfører nemlig at den eneste måde der kan udtrækkes oplysninger på, er ved et "table-scan", hvor hele tabellen løbes igennem. Det dur ikke for større databaser (ja, jeg ved Oracle er en undtagelse). Kig på 1-n relationer mellem tabeller.

Skal du absolut gøre det sådan som du gør, så put "|1|4|9|14|17|"  og led efter "|4|"
Avatar billede erikjacobsen Ekspert
08. november 2007 - 13:43 #2
(glemte)...men hvis du aldrig leder efter tallene i en SQL-sætning, så er det i orden. Pas på med længden på feltet.
Avatar billede erikjacobsen Ekspert
08. november 2007 - 13:45 #3
(Doh...) Ellers brug http://php.net/explode (evt. split) til at lave din streng "1,9,14,17" om til et array.
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

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