Få flere muligheder ved tryk på link

Tags:    javascript mysql php

Hej
Jeg er igang med at lave en formular hvor jeg kan skrive op til 5 bilmærker jeg godt kan lide.
Jeg har dog lidt problemer, da jeg ikke helt ved hvordan jeg skal lave min formular og hvordan jeg skal strukturere min MySQL-database for at det kan trækkes ud på den måde at jeg kan bede den om at hente alle der har et bestemt mærke.
Først tænkte jeg på bare at lave et textarea og så få den til at gemme i et TEXT-felt i MySQL og så kunne jeg bede den om at hente alle poster ud der indeholdt f.eks. Audi i det felt. Men jeg ved ikke lige helt hvordan jeg så skulle gøre det med SQL-query, da den jo kigger på hele feltet i den enkelte post og hvis der står f.eks. Opel, Audi, Skoda, så er den ikke gyldig.
Så tænkte jeg på at lave 5 felter der hedder mærke 1, 2, 3 osv. og så lave ganske normal input type="text", men det er jo ikke alle der vil skrive 5 mærker ind. Derfor ville jeg skjule alle felter bortset fra det første, og så lave det sådan at jeg har et link eller en knap med et +, og når man trykker på det viser den det næste felt lige nedenunder. Jeg mener at en sådan funktion skal laves i javascript, men jeg har bare ikke haft held med at finde nogen.
Er der nogen der kan give mig lidt hjælp til hvordan jeg kan lave det på bedst mulige måde?



4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du laver to relations tabeller.

Én hvor du har dit data, og én hvor du har mærkerne. Så sørger du for at ligge dine inputs (fra formularen) op som et array i din post. På den måde kan du loope dit data igennem, og tilføje al data som det skal tilføjes.

Så laver du én til tabel som styrer hvilke mærker der skal relateres til den anden tabel.

Eksempelvis:

tabel1
ID noget_andet

maerker
ID navn

maerkerTilTabel1
ID FK_tabel1Id FK_maerkerId

Så kan du lave INNER JOIN's:

Fold kodeboks ind/udSQL kode 


Koden er ikke testet.

Med at få flere input felter frem med javascript kan du prøve med at tilføje html igennem javascripten, til din formular. Dem tæller du så på i din php post.

Eksempelvis kan dit input felt se sådan her ud:

Fold kodeboks ind/udHTML kode 


Det er lidt svært at forklare. Bare skriv hvis du vil have mere at vide :)



Ok, så jeg skal altså oprette 3 tabeller.
En til de mærke der skal være med, en til brugerens navn og deres
præference(r) og en hvor jeg sætter det hele sammnen?
Så skal jeg bruge INNER JOIN til at gemme informationerne fra tabel1 og maerker og en ny tabel og derefter skal jeg så udskrive det hele med while.
Er det rigtig forstået?



Næsten - Du skal bruge INNER JOIN til at udskrive resultatet med en while løkke. Og en ting jeg glemte og fortælle var at du skal bruge GROUP_CONCAT i din SQL til at samle mærkerne i et resultat uden er oprette flere SQL-kald.

Eksempelvis:

Fold kodeboks ind/udSQL kode 


Kan ikke helt huske det. Du kan slå det op.

Og så når du skal udskrive dine mærker, kan du gøre følgende:

Fold kodeboks ind/udPHP kode 


Er ikke helt sikker på om det vil fungere



Ok, så jeg skal blot oprette de 3 tabeller og ikke gøre noget ved dem inde i phpmyadmin?
I mit php-dokument hvor jeg henter dem ud, bruger jeg så din kode:
Fold kodeboks ind/udPHP kode 

For at hente f.eks. alle der har valgt audi kan jeg gøre således:
Fold kodeboks ind/udPHP kode 

Er det korrekt forstået?
Hvordan så når jeg indsætter i databasen.
Så har jeg min formular hvor de indsætter data og jeg kan så gemme dem.
Så skal jeg have den til at gemme alt i tabel1 undtagen mærket. Mærket skal den gemme i maerker, hvis det ikke allerede findes.
Men jeg må ærligt indrømme at det er en smule svært at forstå, me det der INNER JOIN og den måde jeg relaterer på, fordi jeg ikke rigtig ved hvordan jeg skal gøre når jeg gemmer det.



t