Avatar billede jumpslam Nybegynder
09. december 2005 - 08:04 Der er 12 kommentarer

Feltindhold i MySQL til array og videre til select

Jeg har en tabel i en database, hvor et tekstfelt indeholder data separeret med komma (eks. feltindhold = 1,2,3,4 eller L1,L2,L3,L4).

Jeg vil gerne bruge feltindholdet som options i en select - så options f.eks. bliver = <option value=1>1</option><option value=2>2</option> eller <option value=L1>L1</option><option value=L2>L2</option> osv.

Feltet hedder stoerrelser og jeg har forgæves forsøgt at overføre feltindholdet med variablen $stoerrelser til et array med sætningen $array = array($stoerrelser);

Der må være en måde at til de kommaseparerede data ud - please help!
Avatar billede htx98i17 Professor
09. december 2005 - 08:13 #1
du skal bruge funktionen split()
Avatar billede jumpslam Nybegynder
09. december 2005 - 08:18 #2
OK - kan du give et eksempel?
Avatar billede htx98i17 Professor
09. december 2005 - 08:21 #3
$array = split(",",$data['tekstfelt']);

PHPs manual er god. Og nem at bruge:
http://dk2.php.net/split
Avatar billede jumpslam Nybegynder
09. december 2005 - 08:32 #4
OK - kan du give et eksempel på hvordan jeg kan få det ind i en select?
Avatar billede htx98i17 Professor
09. december 2005 - 08:37 #5
Der laver du f.eks. en løkke der looper til der ikke er flere poster i $array.

Eksempelvis hvis tekstfeltet indeholder: 1,2,3,4,5,6,7,8
Du bruger så
$array = split(",",$data['tekstfelt']);
til at splitte tekststrengen op ved hvert komma.

Så laver du en løkke:

for($i = 0;count($array)>$i; $i++) {
echo"<option value=\"$array[$i]\">$array[$i]</option>";
}
Avatar billede jumpslam Nybegynder
09. december 2005 - 08:44 #6
Hmmm, jeg har prøvet at indsætte dit forslag i mit script, men får ingen optioner på skærmen, kun selectboksen (der er ingen optioner at vælge imellem. Jeg har indsat min test-kode herunder:

// Først henter jeg data fra tabellen (henter kun en række)
$array = sql_spoerg_og_faa_svar("SELECT * FROM produkter WHERE varenummer='7TM07305'");
for ($antal_produkter = 0; $antal_produkter < sizeof($array); $antal_produkter++) {
extract($array[$antal_produkter]);
}
echo"<select>";
// Mit datafelt hedder stoerrelser og indeholde 1,2,3,4
$test = split(",",$data['stoerrelser']);
for($i = 0;count($test)>$i; $i++) {
echo"<option value=\"$test[$i]\">$test[$i]</option>";
}
echo"</select>";
?>
Avatar billede htx98i17 Professor
09. december 2005 - 08:55 #7
Du bliver nødt til først at have styr på mysql funktionerne så du kan lave et korrekt udtræl. Sql'en er rigtig nok, men du kan ikke selv finde på hvad funktionen skal hedde. Jeg håber du kan få noget ud af følgende:

<?

$hentraekker = mysql_query("SELECT stoerrelser FROM produkter WHERE varenummer = '7TM07305' ") or die(mysql_error());
$data = mysq_fetch_array($hentraekker);

    $array = split(",",$data['stoerrelser']);

        echo"<select>";

        for($i = 0;count($array)>$i; $i++) {
            echo"<option value=\"$array[$i]\">$array[$i]</option>";
        }
       
        echo"</select>";
?>
Avatar billede jumpslam Nybegynder
09. december 2005 - 09:10 #8
Tja både og... Jeg linker på filen global.php for at åbne databasen med de oplysninger jeg skal bruge. Men nu får jeg slet ingen data ud (blank skærm)...

<?
include "global.php";
$hentraekker = mysql_query("SELECT stoerrelser FROM produkter WHERE varenummer = '7TM07305' ") or die(mysql_error());
$data = mysq_fetch_array($hentraekker);
    $array = split(",",$data['stoerrelser']);
        echo"<select>";
        for($i = 0;count($array)>$i; $i++) {
            echo"<option value=\"$array[$i]\">$array[$i]</option>";
        }
        echo"</select>";
mysql_close($conn);
?>
Avatar billede htx98i17 Professor
09. december 2005 - 09:15 #9
denne funktion sql_spoerg_og_faa_svar vil ikke give data.

Der er ingen fejl i programmering jeg har skrevet. Måske er der ingen varenummer i tabellen som passer på '7TM07305'

Prøv at sætte følgende ind:
echo"Antal poster: ".mysql_num_rows($hentraekker);
ovenover $data = mysql_fetch...

Hvis den skriver andet end 0, så har den hentet data fra tabellen
Avatar billede htx98i17 Professor
09. december 2005 - 09:24 #10
jo der var en fejl... jeg har sprunget et 'L' over i mysql_fetch_array
prøv at rette det

nu skal jeg på arbejde, good luck
Avatar billede jumpslam Nybegynder
09. december 2005 - 09:28 #11
Så er den i vinkel - god arbejdslyst ;O) - og pointene er dine!
Avatar billede jumpslam Nybegynder
09. december 2005 - 09:29 #12
Så er den i vinkel - god arbejdslyst ;O) - og pointene er dine!
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