Behöver hjälp med AJAX/PHP [form submission]

Permalänk
Medlem

Behöver hjälp med AJAX/PHP [form submission]

Hej!

Håller för tillfället på med en sida där jag använder en väldigt enkel form, som bara är en dropdown-list. Jag genererar listan från en textfil med följande skript:

<select name="manufacturers"> <?php $select = file_get_contents('manufacturers.txt'); $lines = explode("\n", $select); foreach ($lines as $line) { // Format in the text file is: // value|name list($value, $name) = explode("|",$line); echo '<option value="'.$value.'"', '>'.$name.'</option>'; } ?> </select>

Dold text

Inga problem alls än så länge, men sen kommer den lite jobbigare delen, som kräver AJAX (tror jag), som jag än så länge är väldigt ny till och inte riktigt förstår hur jag ska använda, nämligen att använda värdet som anges i drop-down (när man trycker på submit), för att

  1. Visa en div som ligger under, med en ny dropdown (inte så svårt, bara använda javascripts show(); där)

  2. Generera rätt dropdown baserat på vad som angetts i dropdown 1

Frågan är då hur jag gör det?

Om jag har förstått det rätt borde jag i dagsläget enkelt kunna hämta värdet som anges med en enkel

$manufact = $_POST['manufacturers']; return $manufact;

i submit.php (eller ska jag använda echo för att skicka tillbaka värdet? Allt jag behöver är ju referensen till svaret som angavs)

för att sen kunna använda något i stil med

<select name="device"> <?php $select2 = file_get_contents($manu + '.txt'); $lines2 = explode("\n", $select2); foreach ($lines2 as $line2) { list($value, $name) = explode("|", $line2); echo '<option value="'.$value.'"', '>'.$name.'</option>'; } ?> </select>

Dold text

för att generera dropdown 2. Problemet är bara att jag ju inte vill redirectas till submit.php, utan istället göra en AJAX-request för att hantera värdet. Nu var det där också något jag skrev igår natt, så kanske är en dum lösning på ett enkelt problem, behöver jag ens det som står i submit.php, eller går det kanske att lösa med endast javascript? Jag är som kanske märks lite lost när det kommer till det här, mest för att jag inte handskats så mycket med php och forms tidigare.

Tackar på förhand för all hjälp!

MVH
Leo

Visa signatur

Citera för svar!|Fraktfritt hos INET|Min hemsida
Fractal Design Define R3|Corsair AX 850W|Gigabyte Nvidia GeForce GTX 570|Corsair Vengeance 1600MHz 2x4GB|ASRock P67 Extreme4|Intel Core i5 2500K|2x Samsung Spinpoint F3 1TB|Samsung Blu-Ray läsare
Nikon D7000|Nikon 60mm macro|Nikon 18-70|Nikon 55-300|Nikon 10.5 Fisheye

Permalänk
Avstängd

Som vanligt slår jag ett slag för MVVM. Istället för att rendera ut manufacturers selecten direkt i html använd ett MVVM ramverk. manufacturers datat skickar du via JSON och när man sedan klickar på ett val i dropdownen populerar du rätt data i dropdown 2.

Jag föreslog precis detta i en annan tråd, där använde jag Knockout.
http://jsfiddle.net/bKcSu/1/

Jag gillar Knockout, men det finns andra bra MV** ramverk som AngularJS och backbone.

Testa lite här
http://knockoutjs.com/examples/

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Som vanligt slår jag ett slag för MVVM. Istället för att rendera ut manufacturers selecten direkt i html använd ett MVVM ramverk. manufacturers datat skickar du via JSON och när man sedan klickar på ett val i dropdownen populerar du rätt data i dropdown 2.

Jag föreslog precis detta i en annan tråd, där använde jag Knockout.
http://jsfiddle.net/bKcSu/1/

Jag gillar Knockout, men det finns andra bra MV** ramverk som AngularJS och backbone.

Testa lite här
http://knockoutjs.com/examples/

Men är det verkligen effektivt att göra så när man har väldigt många tillverkare att välja mellan? (33 för att vara exakt), och när det sen finns totalt 600 enheter eller något sånt att välja på? Tyckte bara den koden såg så rörig och jobbig ut, finns det inte mer kompakta sätt att göra det på?

Visa signatur

Citera för svar!|Fraktfritt hos INET|Min hemsida
Fractal Design Define R3|Corsair AX 850W|Gigabyte Nvidia GeForce GTX 570|Corsair Vengeance 1600MHz 2x4GB|ASRock P67 Extreme4|Intel Core i5 2500K|2x Samsung Spinpoint F3 1TB|Samsung Blu-Ray läsare
Nikon D7000|Nikon 60mm macro|Nikon 18-70|Nikon 55-300|Nikon 10.5 Fisheye

Permalänk
Avstängd

Allså datat ska ju inte ligga sådär, därav namnet Mock. det där ska hämtas med AJAX

edit: Du tycker det där ser rörigt ut, men inte inline kod som denna?

<select name="manufacturers"> <?php $select = file_get_contents('manufacturers.txt'); $lines = explode("\n", $select); foreach ($lines as $line) { // Format in the text file is: // value|name list($value, $name) = explode("|",$line); echo '<option value="'.$value.'"', '>'.$name.'</option>'; } ?> </select>

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Allså datat ska ju inte ligga sådär, därav namnet Mock. det där ska hämtas med AJAX

edit: Du tycker det där ser rörigt ut, men inte inline kod som denna?

<select name="manufacturers"> <?php $select = file_get_contents('manufacturers.txt'); $lines = explode("\n", $select); foreach ($lines as $line) { // Format in the text file is: // value|name list($value, $name) = explode("|",$line); echo '<option value="'.$value.'"', '>'.$name.'</option>'; } ?> </select>

Jaha, men hur gör jag då t ex för att med hjälp av AJAX först hämta listan på tillverkare från en textfil (som jag gör nu då, fast med js/ajax istället) och sen skapa listor efter det baserat på $manufacturer + '.txt', om du förstår hur jag menar? Inte helt hemma på ajax som sagt

EDIT: Eller blir det lättare att göra det i en MySQL-databas, med olika poster där istället och hämta på det sättet?

Visa signatur

Citera för svar!|Fraktfritt hos INET|Min hemsida
Fractal Design Define R3|Corsair AX 850W|Gigabyte Nvidia GeForce GTX 570|Corsair Vengeance 1600MHz 2x4GB|ASRock P67 Extreme4|Intel Core i5 2500K|2x Samsung Spinpoint F3 1TB|Samsung Blu-Ray läsare
Nikon D7000|Nikon 60mm macro|Nikon 18-70|Nikon 55-300|Nikon 10.5 Fisheye

Permalänk
Avstängd

Nån som kan php kan svara på den biten, men du kan i princip använda samma kod som du har idag men skicka ut det som JSON istället för att rendera html options

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Nån som kan php kan svara på den biten, men du kan i princip använda samma kod som du har idag men skicka ut det som JSON istället för att rendera html options

Okej, tackar så mycket för all hjälp, hoppas jag kan lösa det nu!

Visa signatur

Citera för svar!|Fraktfritt hos INET|Min hemsida
Fractal Design Define R3|Corsair AX 850W|Gigabyte Nvidia GeForce GTX 570|Corsair Vengeance 1600MHz 2x4GB|ASRock P67 Extreme4|Intel Core i5 2500K|2x Samsung Spinpoint F3 1TB|Samsung Blu-Ray läsare
Nikon D7000|Nikon 60mm macro|Nikon 18-70|Nikon 55-300|Nikon 10.5 Fisheye