Gå til innhold

Vise et skjema hvis et annet er utfylt


Anbefalte innlegg

Hei! Jeg lurer litt på hvordan jeg skal kunne gjøre slik at jeg har to skjemaer med selecter og så gjøre slik at hvis brukeren har fylt ut det og det i det første skjemaet så vil det og det vises i det andre skjemaet.

 

La oss si at vi har et skjema med en select. I den selecten har vi to felter man kan velge mellom; "elektronikk" og "biler". Jeg vil gjøre slik at med en gang man har valgt f.eks. elekronikk så skal det andre skjemaet inneholde "mobil", "mp3" og "spill". Men hvis man velger biler så er valgene i det andre skjemaet "opel", "nissan" og "fiat".

Altså skal valgene i det andre skjemaet være avhengig av valget som ble valgt i det første skjemaet :)

 

Vet noen hvordan jeg kan gjøre dette? Takker så mye for svar ;)

Lenke til kommentar
Videoannonse
Annonse

Dette er nok best løst med javascript, evt ajax. Kan veldig lite om javascript, og enda mindre om ajax. Det kan også løses med php, med det betinger at siden lastes på nytt for hver gang du gjør ett valg i select boksen. For å få siden til å lastes på nytt etter ett gjordt valg, så kan en modifisert utgave av dette scriptet http://www.thesitewizard.com/archive/navigation.shtml gjøre jobben, hvor newurl parameteret må inneholde en id som forteller php hva som da skal skrives ut i neste select boks.

 

Men jeg ville ha prøvd å få til en løsning i javascript/ajax på dette.

Lenke til kommentar
Ja, jeg tenkte meg at jeg sikkert ville måtte bruke AJAX, men jeg var da ikke sikker på hvor jeg skulle spørre.. Men Er det noen her som har en slik kode da? Jeg har sett mange nettsider som har det slik...

8947259[/snapback]

 

 

w3schools finner du en del gode eksempler som du kan bruke. Se under submenyen "Php og ajax". Her er det både vist eksempler som er hentet fra database, php-fil og XML-fil! :thumbup:

Lenke til kommentar
Gjest Slettet+142

Er vel enkelt og greit å gjøre som resten her sier.

- Javascript + Ajax.

Hvis det 2. skjemaet skal endres etter hvilke verdier det skjemaet som allerede var fylt ut,

blir det vel enklest å lage et php-dokuement som tar POST-verier, som da skriver ut et ferdig skjema til deg.

Da kan du enkelt bare føre denne skjemaet inn i en div eller span som innerHTML :)

 

Ble kanskje litt uforståelig forklart :confused:

 

Men skal ikke denne tråden til Javascript?

Lenke til kommentar

Synes du burde lære å gjøre dette i PHP først, og deretter legge på javascript senere. Husk at meningen med AJAX og javascript generelt er å forbedre brukeropplevelsen, ikke erstatte annen funksjonalitet.

Flere grunner til det:

 

1) For ikke lenge siden var det en del nettlesere som ikke støttet eller hadde javascript skrudd av. Dette har nå sunket til < 1%, så det er ikke like viktig lenger, men det er kunnskap folk ihvertfall burde ha.

 

2) Roboter leser ikke javascript. Med mindre siden din fungerer uten javascript, vil ikke en indekseringsrobot, som f.eks. google sin webcrawler, kunne indeksere hele siden din. I dette tilfellet er det snakk om en form, og sikkert ikke like viktig å bli indeksert, men teorien er fortsatt veldig gjeldene.

Lenke til kommentar

Fordelen med PHP mot Javascript (eller browser side scripting) er at PHP vil alltid fungerer, mens Javascript kan skrus av av brukeren, og dermed kan en del funksjonalitet forsvinne. Kan prøve å lage en enkel php løsning når jeg kommer hjem fra jobb.

 

Edit: Første gang jeg har lagd noe slikt selv, så jeg begynte slik

PHP
<?php session_start();

 

if (!isset($_POST['x'])) 

$_POST['x']='';

if (isset($_SESSION['x'])) unset($_SESSION['x']);

}

 

echo "<div style='margin: 1em; font-weight: bold;'>";

if (isset($_SESSION['x']))

echo $_SESSION['x']." - ".$_POST['x'];

else 

echo $_POST['x'];

echo "</div>";

 

echo "<form action='test.php' method='post' style='margin: 1em;'>";

echo "<select name='x'>";

 

switch ($_POST['x'])

{

case 'Test_1':

if (!isset($_SESSION['x'])) $_SESSION['x']=$_POST['x'];

 else $_SESSION['x'].=" - ".$_POST['x'];

echo "<option>Test_1.1</option>

<option>Test_1.2</option>

<option>Test_1.3</option>";

break;

case 'Test_2'

if (!isset($_SESSION['x'])) $_SESSION['x']=$_POST['x'];

 else $_SESSION['x'].=" - ".$_POST['x'];

echo "<option></option>

<option>Test_2.1</option>

<option>Test_2.2</option>

<option>Test_2.3</option>";

break;

case 'Test_3':

if (!isset($_SESSION['x'])) $_SESSION['x']=$_POST['x'];

 else $_SESSION['x'].=" - ".$_POST['x'];

echo "<option>Test_3.1</option>

<option>Test_3.2</option>

<option>Test_3.3</option>";

break;

default:

echo "<option>Test_1</option>

<option>Test_2</option>

<option>Test_3</option>";

}

echo "</select>  <input type='submit' value='Ok' /></form>";

 

?>

Dette var mest for å teste noe enkelt, men hver case bør jo endres til å hente ut verdier fra f.eks en database/tabell slik at det blir litt mere dynamisk. Session biten er kun for skrive ut kategoriene du har valgt tidligere over dropdownboksen. Håper dette kan være til litt nytte, sikker mulig å gjøre dette på en bedre måte.

Endret av crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...