Avatar billede icemandk86 Nybegynder
20. juni 2011 - 17:14 Der er 6 kommentarer og
1 løsning

Hent data fra tilfældig udvalgt celle?

Hej alle.
Jeg prøver forgæves at hente data from en "tilfældig" valgt celle, fra et table i min database. Denne tilfældige celle, er et check på enten, jylland=y, fyn=y, sjaelland=y, oevrige=y.
Fra den foregående side, vælges kun en af disse geografiske steder, og hentes på næste side med $_GET['landsdel'] funktionen. Men kan simpelthen ikke finde en løsning på et script, der vælger celle navnet, jylland, sjaellend etc. alt efter hvad der bliver klikket på.

<?
$landsdel=($_GET['landsdel']);

$host="xxx"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="xxx"; // Database name
$tbl_name="xxx"; // Table name
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name WHERE $landsdel='y'";
$result=mysql_query($sql);

?>

Som I kan se, prøver jeg at få WHERE $landsdel, til at hedde f.eks. jylland.
20. juni 2011 - 17:55 #1
Jeg går ud fra, at din tabel indeholder et felt med navn landsdel.  I de forskellige rækker i tabellen kan det felt have væerdier som Jylland, sjælland, o.s.v.  En formular, som du ikke viser her, indeholder for eksempel en checkliste med værdierne jylland, sjælland, fyn, og øvrige, og når brugeren vælger en landsdel og trykker på submit, så kaldes den kode du viser med den valgte landsdel i $_GET['landsdel'].

I såfald skal din mysql forespørgsel være således:

$sql = "SELECT * FROM $tabel_name WHERE landsdel = $landsdel";
$result = mysql_query($sql);
Avatar billede icemandk86 Nybegynder
20. juni 2011 - 19:01 #2
Hej Christian,

Der er 4 celler, én for hver landsdel, jylland, fyn etc.

Har imidlertidigt fundet en løsning på problemet, som lå i min .htaccess, som gjorde at $landsdel ikke blev overført korrekt.

Så denne kode viste sig at være korrekt nok.

$sql="SELECT * FROM $tbl_name WHERE $landsdel='y'";
$result=mysql_query($sql);
Avatar billede majbom Novice
20. juni 2011 - 19:33 #3
husk at luk spørgsmålet :)
20. juni 2011 - 19:38 #4
Jamen tillykke med at du fik spørgsmålet løst.  Kan jeg så bede dig lukke det (selv oprette et svar og acceptere det).

Men vil det sige at din tabel ser ud noget i denne henretning:

by        fyn      jylland      sjælland      andet
Odense    y        n            n              n
Skive        n        y            n              n

o.s.v.?

I såfald synes det at være en uhensigtsmæssig struktur.  Normalt ville man gøre således:

by        landsdel
Odense    Fyn
Skive        Jylland

Det gør det mere oversigteligt og nemmere at formulere sql forespørgsler, især når det kommer til join forespørgsler der involverer adskillige tabeller.
Avatar billede icemandk86 Nybegynder
20. juni 2011 - 20:41 #5
Lad mig tage et eksempel med, som mit script også kunne bruges til, at jeg vil finde en Legetøjsbutik butik.

Jeg kan nu vælge hvilken landsdel, jeg befinder mig på, f.eks. Jylland.

Min database ser således ud:

navn        jylland sjaelland oevrige osv.
Fætter BR      y      y        n
Toys'r'us      n      y        y

Derved når jeg så vælger Jylland, får jeg i dette eksempel Fætter BR vist, og ikke Toys'r'us.
Og hvis jeg havde valgt sjaelland, ville jeg få begge legetøjsbutikker. Dermed kan jeg ikke se en anden struktur end denne, i mit tilfælde.
Avatar billede icemandk86 Nybegynder
20. juni 2011 - 20:42 #6
RewriteRule ^x/([A-Å]+)/([A-Å]+) x.php?kon=$1&landsdel$2 [NC]

rettet til:
RewriteRule ^x/([A-Å]+)/([A-Å]+) x.php?kon=$1&landsdel=$2 [NC]
20. juni 2011 - 21:42 #7
Jamen det har du muligvis ret i, at det er en tilstrækkelig struktur i dit tilfælde, hvis du ikke har en stor applikation med tons af data der skal kunne alt muligt.

Men standard løsningen i relationelle databaser på sådanne mange-til-mange relationer (hver butikskæde kan være i flere landsdele og hver landsdel kan have flere butikskæder) er at lave tre tabeller, i dette tilfælde en med butikskæder, en med landsdele, og en med relationerne mellem dem. 

Butikskæde
id, navn, kontaktperson, og-så-videre
1    FætterBR  Ole Høg  abc
2    Toys'r'us  Kaj Due  def   

Landsdel
id, navn
1  Jylland
2  Fyn
3  Sjælland

Butikskæder_i_landsdele
butikskæde landsdel
1                1
1                3
2                2
2                3

Og når du så vil finde navnet på butikskæderne i Jylland går det således:

SELECT b.navn FROM Butikskæde b JOIN Butikskæder_i_landsdele bl ON b.id = br.butikskæde JOIN Landsel l ON br.landsdel = l.id WHERE l.navn = 'Jylland'

Det er som sagt 'overkill' for simple tilfælde, men hvis man skal gå videre og for eksempel har brug for at liste hver enkelt forretning med adresse, indehaver, email, o.s.v, og stadig har brug for en oversigt over hvilke kæder der er representeret i hvilke landsdele, så kommer den relationelle struktur på sin plads.
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
Computerworld tilbyder specialiserede kurser i database-management

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