Gå til innhold

Handlekurv, få varer over til ny side


Anbefalte innlegg

Hei

Skal ha opp en "handlevogn" på en intern sak, men står litt fast. Har kommet så langt at jeg har generert følgende kode (------ linjen har jeg lagt til etterpå nå for å vise skiller);

<form action="leggtil.php" method="post" id="carta">
<table>
-----
<tr>
<td>
<input type="hidden" name="varenummer" value="10001" size="4" maxlength="100" />
</td>
<td>
<input type="hidden" name="antall" value="3" size="4" maxlength="4" />
</td>
<td>
<input type="hidden" name="eksmva" value="240" size="4" maxlength="40" />
</td>
<td>
<input type="hidden" name="inkmva" value="300" size="4" maxlength="40" />
</td>
</tr>
-----
<tr>
<td>
<input type="hidden" name="varenummer" value="10000" size="4" maxlength="100" />
</td>
<td>
<input type="hidden" name="antall" value="1" size="4" maxlength="4" />
</td>
<td>
<input type="hidden" name="eksmva" value="380" size="4" maxlength="40" />
</td>
<td>
<input type="hidden" name="inkmva" value="475" size="4" maxlength="40" />
</td>
</tr>
-----
<tr>
<td>
<input type="hidden" name="varenummer" value="10004" size="4" maxlength="100" />
</td>
<td>
<input type="hidden" name="antall" value="6" size="4" maxlength="4" />
</td>
<td>
<input type="hidden" name="eksmva" value="0" size="4" maxlength="40" />
</td>
<td>
<input type="hidden" name="inkmva" value="0" size="4" maxlength="40" />
</td>
</tr>
-----
</table>
<button type="submit">Legg til</button>
</form>

 

Som dere ser ligger det nå tre varetyper med ulikt antall av hvert og noen priser.

 

Problemet er å få disse produktene over til neste side slik at jeg kan legge de inn i databasen, løsningen er sikkert kjempeenkel, men jeg kunne tenke meg å få litt hjelp her altså. Nå har jeg klødd meg i hele kveld, men står bom fast.

 

Vil det være bedre å lage noe med sessions, og hvordan i huleste gjør jeg da det? Trenger i såfall noen heftige hint...

 

Noen som har noen tips? Hjeeeelp

Lenke til kommentar
Videoannonse
Annonse

Variabler blir lagt i superglobalen $_GET eller $_POST (avhengig av hvilken metode skjemaet bruker). $_GET og $_POST er matriser (array) som er bygget opp som f.eks. $_POST['feltnavn']='verdi';

 

For å se det komplette innholdet så kan du bruke

<pre>
<?php 
var_dump($_GET, $_POST); 
?>
</pre>

Lenke til kommentar
Gjest Slettet-rXRozPkg

Det er fordi alle heter "varenummer".

Du må ha et unikt navn for hver vare, eller bruke arrays.

 

Jeg vil forøvrig påpeke at brukeren enkelt kan modifisere hidden-felter, og du burde absolutt ikke ta tallene du får derfra for god fisk (bortsett fra antall av et produkt).

Lenke til kommentar

<tr>
<td>
<input type="hidden" name="varenummer[0]" value="10001" size="4" maxlength="100" />
</td>
<td>
<input type="hidden" name="antall[0]" value="3" size="4" maxlength="4" />
</td>
<td>
<input type="hidden" name="eksmva[0]" value="240" size="4" maxlength="40" />
</td>
<td>
<input type="hidden" name="inkmva[0]" value="300" size="4" maxlength="40" />
</td>
</tr>
<tr>
<td>
<input type="hidden" name="varenummer[1]" value="10001" size="4" maxlength="100" />
</td>
<td>
<input type="hidden" name="antall[1]" value="3" size="4" maxlength="4" />
</td>
<td>
<input type="hidden" name="eksmva[1]" value="240" size="4" maxlength="40" />
</td>
<td>
<input type="hidden" name="inkmva[1]" value="300" size="4" maxlength="40" />
</td>
</tr>
<tr>
<td>
<input type="hidden" name="varenummer[]" value="10001" size="4" maxlength="100" />
</td>
<td>
<input type="hidden" name="antall[]" value="3" size="4" maxlength="4" />
</td>
<td>
<input type="hidden" name="eksmva[]" value="240" size="4" maxlength="40" />
</td>
<td>
<input type="hidden" name="inkmva[]" value="300" size="4" maxlength="40" />
</td>
</tr>

 

Ved å legge [] (uten tall som vist til sist) etter name i <input> så vil du opprette en matrise. Dette vil kun virke om du har alle variablene på alle varene. Dette er ikke "den beste måten" å gjøre dette på.

 

Når to <input> i samme skjema har samme name-verdi så er resultatet udefinert hvis jeg ikke husker spesifikasjonen feil. Det vil si at resultatet er avhengig av hva nettleseren gjør med dataene. Så du må ha forskjellig name-verdi for alle feltene.

 

Det du nok bør vurdere er å lage et objekt type vare og heller lage en matrise av dette objektet, gjerne i sammen med $_SESSION.

 

<?php
class vareklasse
{
 var $varenummer;
 var $antall;
 var $eksmva;
 var $mvasats;

 function vareklasse($varenummer=0, $antall=0, $eksmva=0, $mvasats=25);
 {
   $this->varenummer = $varenummer;
   $this->antall = $antall;
   $this->eksmva=$eksmva;
   $this->mvasats=$mvasats;
 }

 function hent_pris($mva=true){
   if($mva)
     return($this->eksmva*(1+$mvasats/100)); //Her kan du bruke avrunding om det skulle være ønskelig.
   else
     return($this->eksmva);
 }
}

$_SESSION['varer'][] = new(vareklasse(10001, 3, 240, 25); //$_SESSION er en fin ting å bruke for å transportere verdier.

 

Denne koden er skrevet ut av hodet og kan inneholde feil.

Denne koden er kun ment som rettledning og ikke som en reell løsningsimplimentasjon.

Lenke til kommentar
Det er fordi alle heter "varenummer".

Du må ha et unikt navn for hver vare, eller bruke arrays.

 

Jeg vil forøvrig påpeke at brukeren enkelt kan modifisere hidden-felter, og du burde absolutt ikke ta tallene du får derfra for god fisk (bortsett fra antall av et produkt).

9080371[/snapback]

Prøvde å legge til et nytt felt som gir unikt navn, men det funker inte... Har du noen tips til hvordan jeg kan gjøre dette? eller kanskje med sessions?

Lenke til kommentar

<button type="submit">Legg til</button>

Det burde vel egentlig være

<input type="submit" value="Legg til"/>

 

 

Men sitter og lurer litt på det scriptet ditt.

Hva er egentlig poenget med dette scriptet? Hvorfor har du et helt gjemt skjema?

 

Jeg tror hele skjemaet ditt er satt opp litt feil, uansett. Det vanlige er vel egentlig å gjøre noe slik:

<form action="leggtil.php" method="post" id="carta">
<input type="hidden" name="10001" value="3" s/>
<input type="hidden" name="10002" value="3" />
<input type="hidden" name="10003" value="20"  />
<input type="hidden" name="10004" value="7"/>
<input type="submit" value="Legg til"/>
</form>'

 

Her er name varenr'et, mens value er antall.

Mens du i leggtil.php/database har lagret informasjon som eks mva og inkl mva.

 

Så kan du hente ut antallet av de forskjellige produktene med $_POST['10001'] (eksempelvis), og multiplisere med prisen for og få total etc.

 

Hjelper dette noe i det hele og det store?

 

edit: lukket et par html-tags..

Endret av KiKKA
Lenke til kommentar
<button type="submit">Legg til</button>

Det burde vel egentlig være

<input type="submit" value="Legg til"/>

 

 

Men sitter og lurer litt på det scriptet ditt.

Hva er egentlig poenget med dette scriptet? Hvorfor har du et helt gjemt skjema?

 

Jeg tror hele skjemaet ditt er satt opp litt feil, uansett. Det vanlige er vel egentlig å gjøre noe slik:

<form action="leggtil.php" method="post" id="carta">
<input type="hidden" name="10001" value="3" s/>
<input type="hidden" name="10002" value="3" />
<input type="hidden" name="10003" value="20"  />
<input type="hidden" name="10004" value="7"/>
<input type="submit" value="Legg til"/>
</form>'

 

Her er name varenr'et, mens value er antall.

Mens du i leggtil.php/database har lagret informasjon som eks mva og inkl mva.

 

Så kan du hente ut antallet av de forskjellige produktene med $_POST['10001'] (eksempelvis), og multiplisere med prisen for og få total etc.

 

Hjelper dette noe i det hele og det store?

 

edit: lukket et par html-tags..

9082497[/snapback]

Det er greit, men saken er at jeg har flere hundre varer, sånn at varenummeret vil variere. Hvordan kan jeg da hente ut de ulike feltene via en annen side når jeg ikke kan forhåndsdefinere navnene på de?

Lenke til kommentar
<button type="submit">Legg til</button>

Det burde vel egentlig være

<input type="submit" value="Legg til"/>

9082497[/snapback]

 

OT: Det å si at <input type="submit"> er 'rettere' enn <button type="submit"></button> blir vel litt feil. Button elementet vart lagt til som eit alternativ til <input type="submit/reset/button">. Du har meir kontroll over button i css og du kan bruke andre element som <img> i tilleg til tekst.

Lenke til kommentar
<button type="submit">Legg til</button>

Det burde vel egentlig være

<input type="submit" value="Legg til"/>

9082497[/snapback]

 

OT: Det å si at <input type="submit"> er 'rettere' enn <button type="submit"></button> blir vel litt feil. Button elementet vart lagt til som eit alternativ til <input type="submit/reset/button">. Du har meir kontroll over button i css og du kan bruke andre element som <img> i tilleg til tekst.

9083490[/snapback]

Du har avslørt min uvitenhet.

 

Meeen OT:

 

Ser fortsatt ikke helt for meg hvordan oppbyggningen av dette scriptet ditt er. men prøver allikevel og komme med en mulig løsning (?)

 

Kan tenke meg foreach er en funksjon du kan bruke. Tenker at du bruker den på $_POST, hvis du bruker min version av skjemaet.

foreach ($_POST as $key => $value) {
//her vil $key være varenr og $value være antall.  Bruk det som du ønsker.
}

Men da må du ha en array/database med informasjon om varene.

Jeg vet helt ærlig ikke om dette er noe serlig av en idè. Bare et lite forslag.

 

drit nå i button da... er ikke det jeg trenger nå!

Er lov til å være litt hyggelig og, da! Det er ingen på dette forumet som vinner noe som helst på å løse ditt problem. Kan ikke forvente at det er noen som ønsker å hjelpe når du har en slik holdning.

Endret av KiKKA
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...