Funksjon som oppdaterer felt utifra valg som gjøres. Ajax?

Dag Frogner

Supermedlem
Jeg er på utkikk etter en plugin som skal fungere som en "forløper" til en allerede eksiterende nettbutikk. Det skal være to, tre rullegardiner hvor man kan velge mellom noen alternativer i hver, og så skal det vises en pris som forandres etter hva man velger. Antar at det da er Ajax som er tingen her.

Noen som vet hva som kan brukes her?
 

adeneo

Medlem
Jupp, Ajax kan nok brukes.
jQuery har for eksempel en del Ajax funksjoner som gjør slikt som dette litt enklere å sette opp, er i grunn ikke noe hokuspokus dette, men vet ikke om noen plugin's i farten.
Du kan jo søke på jQuery sine sider etter noe som kanskje passer, hvis ikke må du lage det selv eller få noen til å lage det for deg.

Sikkert andre ting som kan brukes også, dette høres i grunn ut som noe som er enkelt å spikke sammen i RoR, men ikke alle webservere støtter dette, og det blir kanskje litt sært i forhold til Ajax/jQuery.
 

Nutz

Med lem
Har du noen formening om hvordan dette skal funke?

Er det et produkt som er i mange forskjellige varianter?
For eks, en skrue der man velger gjengetype, lengde, type metallegering?

Etter det jeg kan se, så er jo ikke et produkt valgt før alle kriteriene er tilstede, og pris bør jo egentlig ikke dukke opp før alle er valgt.
 

adeneo

Medlem
Her er vel Nutz inne på noe vesentlig, og jeg tog an ikkje helt med en gang der.

Jeg tenkte mer på dynamiske endringer, slik som nettbutikker ofte har når man for eksempel kommer inn på siden til ett visst produkt, så er det ofte en meny hvor man kan velge farge eller størrelse på ett plagg e.l. så oppdateres prisen og enkelte ganger også produktbildet dynamisk ut i fra de valgene man gjør på selve produktsiden etter at denne er lastet inn i nettleseren.

I og med at Dag skriver "forløper" så ville jeg vel tro at det er slik som Nutz sier, at dette er valg man foretar før man kommer til en eventuell produktside, og da er det vel naturlig å bruke php til sette noen verdier, eventuelt i en cookie eller som en querystring hvorpå produktsiden henter rette prisen i et array eller noe slikt ut i fra de verdiene som er satt tidligere.

Så kommer det vel også an på nettbutikkløsningen, dersom kjøpet registreres med en produktkode e.l. i systemet og prisene ligger i en database, og prisene så hentes opp igjen senere ved utsjekking eller betaling osv. så holder det ikke bare å bytte noen tall i koden på produktsiden, da må man også få dette til å funke hele veien til kassen, og for unike brukere osv.
 
Sist redigert:

Dag Frogner

Supermedlem
Det skal være to nedtrekksmenyer hvor det skal være to-tre valg i hver. Man velger kun ett av disse valgene i hver meny og prisen blir da satt utifra hva man har valgt. Prisen skal kunne endres dynamisk dersom man endrer valg, det samme gjør beskrivelsesteksten som står under disse valgene.

Håper det var tydlig nok. :)
 

Nextri

Rebel
med Jquery kan det gjøres slik:


fil: regnutpris.php
HTML:
<?
if(!empty($_POST['s1'])){
	#Hente ut info fra database her, og regne ut pris
	echo $_POST['s1']*$_POST['s2'] . ' NOK';
}else{
	?>
	<html>
        <head>
			<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
        </head>
        <body>
            <form>
                <select class="select" name="s1">
                    <option value="50">Valg1</option>
                    <option value="100">Valg2</option>
                    <option value="200">Valg3</option>
                </select>
                <select class="select" name="s2">
                    <option value="1">Valg1</option>
                    <option value="2">Valg2</option>
                    <option value="3">Valg3</option>
                </select>
                <div id="pris">
                100 NOK
                </div>
                <script type="text/javascript">
                $('.select').bind('change',function(){
                    $.ajax({
                        data:$(this).closest("form").serialize(), 
                        success:function (data, textStatus) {$('#pris').html(data);}, 
                        type:"post", 
                        url:"regnutpris.php"
                    });				
                });
                </script>
            </form>
        </body>
	</html>
<? } ?>
 

adeneo

Medlem
okay, først må du ha menyene, disse er bare vanlig html, og kan styles og posisjoneres med css osv. og lages med <FORM> og <SELECT>, noe slikt:
HTML:
<FORM>
<DIV>
<SELECT>
<OPTION SELECTED>rød
<OPTION>blå
<OPTION>grønn
</SELECT>
</DIV>
</FORM>

En slik meny kan styres med alt mulig rart, og det er mulig å sette opp valgene i php, RoR, JS og cgi blant annet.

For å bruke et CGI script kan man gjøre noe slikt:

HTML:
<FORM ACTION="http://www.minside.no/cgi-bin/mittscript.cgi"
 METHOD="post">
<DIV>
<SELECT NAME="sendvidere">
<OPTION SELECTED VALUE="http://www.minside.no/rode.html">Røde
<OPTION VALUE="http://www.minside.no/blaa.html">Blå
<OPTION VALUE="http://www.minside.no/gronn.html">Grønn
</SELECT>
<INPUT TYPE="SUBMIT" VALUE="Go!">
</DIV>
</FORM>

Dersom du ønsker å endre noe dynamisk på siden ved å bruke javascript trenger du en funksjon som kan bindes til menyen og som for eksempel benytter jQuery.html() for å bytte ut tekst og priser når noe i menyen endres, eller med andre ord på OnChange hendelser i menyen.
Det blir litt vanskelig å skrive noe når man ikke vet hvordan dette skal se ut, men det enkleste er å ha en inline funksjon i .html dokumentet, selv om vi ikke liker inline javascript, og kjøre denne funksjonene direkte i menyen ved OnChange, noe slikt:

HTML:
<FORM NAME="meny">
<DIV>
<SELECT NAME="sendvidere" onChange="$("#mindiv").html("bytt ut noe tekst");">

option values osv kommer her igjen, gidder ikke å skrive det på nytt !

</SELECT>
<DIV>
</FORM>

Dette har massevis av problemer, og validerer sikkert ikke heller, det vil si ingen av eksemplene her virker ut av boksen, de er kun for å illustrere hvordan det kan gjøres.
Det beste ville nok være å bruke navnet på <FORM> for å styre menyvalgene fra et eksternt script eller noe slikt, men igjen så må dette legges opp slik at det passer inn der det skal.

Grunnen til at jeg har nevnt RoR noen ganger er fordi Ruby har noen innebyggede funksjoner som kan brukes til å styre slikt som dette forholdsvis enkelt, men jeg kan ikke nok Ruby enda til at jeg kan sette opp noe som virker, jeg har bare fått med meg at det ligger noen funksjoner innebygget for overvåking av <FORM> elementet, og enkle muligheter for styring av nettopp slike menyer.
 
Sist redigert:

Dag Frogner

Supermedlem
Ser bra ut det Nextri, men det må også være en beskrivelse for produktene som også endres utifra hva man velger. Og det må være mulig å velge antall noe jeg glemte å nevne i første innlegg.

Har en skisse jeg kan legge ut senere, men sitter på mobilen så har det ikke her.

Men som nevnt betaler jeg gjerne noen kroner for å få dette satt opp. Burde være en smal sak for dere som er kjent med slikt...
 

Nextri

Rebel
Ja, det jeg la ut var bare som et eksempel. Er ikke noe problem å legge til flere dropdowns eller felter. Heller ikke å oppdatere flere områder på siden med forskjellig info og pris osv.

legg ut en skisse du med alt som skal til, og hva slags system det skal integreres i.
 

adeneo

Medlem
Jeg satt helt i min egen lille verden å skrev i vei jeg da, og så ikke svaret til Nextri, men der har du jo et fullt fungerende eksempel som viser hvor enkelt det er å binde en funksjon til en klasse, som i dette tilfellet er en nedtrekksmeny, og som Nextri skriver er det fort gjort å skifte ut hva som helst av koden i .php eller .html filen med jQuery, det er til og med lagt ved ett lite php regnestykke som ganger den ene menyen med den andre, så dette ordner seg sikkert.

Mesteparten av tiden det tar å fikse dette går sannsynligvis til å integrere det, og få pris og eventuell beskrivelse til å henge med videre i nettbutikkløsningen, alt ettersom hvilken nettbutikkløsning det er snakk om og hvor dette lagres, men i grunn ikke noe hokuspokus det heller.
 

Dag Frogner

Supermedlem
Her er et forslag til hvordan det kan se ut:

uipd7.jpg


I tillegg til dette skal det være et felt rett under disse menyene (til ventre for prisen) hvor det står en beskrivelse av produktet man har valgt. Det skal også være mulighet under dette feltet igjen å velge om man vil ha montering eller ikke, dette kan også være nedtrekk.

Så vidt jeg vet, skal dette videre til en egen nettbutikk som kunden har hos Mamut, men jeg venter på mail med mer info om dette. Isåfall må jo valgene som gjøres her, gjenspeiles i handlekurven i nettbutikken og da vil jeg tro man snakker en god del mer jobb med en gang.

Men som sagt, mer info kommer. :)

Om noen tar seg tid til å sette opp dette for meg, er jo det veldig bra, men jeg er altså ikke redd for å betale for dette.
 
Topp