Avatar billede mcgoat Nybegynder
23. maj 2004 - 00:46 Der er 9 kommentarer og
1 løsning

Fejl i $_GET

Hej...

Er ved at lave en webshop hvor jeg selvfølgelig har en indkøbskurv liggende i en iframe som så holder styr på hvad der er købt. mit problem er at hvis jeg på min side trykker F5 så opdaterer indkøbskurven også og smider det sidst købt oveni igen. Og hvis jeg trykker Ctrl+F5 så siger den at der er købt 0 varer... Kan man ikke nulstille $_GET ? har prøvet med unset osv... her er koden:

<?
if(isset($_GET['prodid']) && isset($_GET['amount']))
{
    require "../connect.php";
    if(isset($_SESSION['products']))
    {
        $pieces = sizeof($_SESSION['products']);
    }
    else
    {
        $pieces = 0;
    }
    $total_price = 0;
    $total_pieces = 0;
    $_SESSION['products'][$pieces]['prod_id'] = $_GET['prodid'];
    $_SESSION['products'][$pieces]['prod_amount'] = $_GET['amount'];
    $query = "SELECT * FROM products WHERE prod_id='" . $_GET['prodid'] . "'";
    $result = mysql_query($query) or die("Error: ".mysql_error());
    $row = mysql_fetch_array($result);
    $_SESSION['products'][$pieces]['prod_price'] = $row['prod_price'];
    $_SESSION['products'][$pieces]['prod_name'] = $row['prod_name'];
    for($i=0;$i<$pieces+1;$i++)
    {
        $total_price += ($_SESSION['products'][$i]['prod_price'] * $_SESSION['products'][$i]['prod_amount']);
        $total_pieces += $_SESSION['products'][$i]['prod_amount'];
    }
    echo "Antal varer: " . $total_pieces . "<br>";
    echo "Pris: " . $total_price . " Kr";
}
else
{
    echo "Antal varer: 0<br>";
    echo "Pris: 0 Kr";
}
echo "<hr><center><a href='basket_large.php' target='frmFront'>VIS KURV</a></center>";
unset($_GET['prodid']);
?>
Avatar billede technodance.dk Nybegynder
23. maj 2004 - 01:40 #1
iframe er ikke en god ting at køre din vogen i
Avatar billede mcgoat Nybegynder
23. maj 2004 - 01:41 #2
hvorfor ikke det?
Avatar billede technodance.dk Nybegynder
23. maj 2004 - 01:47 #3
få fordi du opdater så set to sider af gange og to = dobble
Avatar billede mcgoat Nybegynder
23. maj 2004 - 01:51 #4
Ja, men nu er det jo heller ikke normalt på en indkøbside at man trykker F5 for at opdatere...
Det er jo bare for at lave det helt sikkert, hvis nu nogen "ved et uheld" trykker F5, hvilket jo nok ikke sker, men alligevel.

Og det burde jo heller ikke have noget med koden at gøre...
Avatar billede bromer Nybegynder
23. maj 2004 - 02:13 #5
Jeg går ud fra at du sender klienten til den side, hvor du f.eks. indsætter noget i din indkøbskurv. Hvis du på dette tidspunkt sender folk videre med en header("Location: somelocation.php"); så "glemmer" den at du har sendt en form.

Bromer
Avatar billede mcgoat Nybegynder
23. maj 2004 - 02:20 #6
Min side er opbygget med en hovedside index.htm hvor der er en iframe med hovedsiden og en lille iframe i menuen med indkøbskurv.
Når jeg tilføjer et produkt kalder jeg sådan:
partent.frames['basket'].location.href = 'basket_small.php?prodid=' + prodid + '&amount=' + amount

Dette gør jeg i et javascript.
Avatar billede mcgoat Nybegynder
23. maj 2004 - 02:23 #7
der sætter den så $_GET['prodid'] og $_GET['amount']... i basket_small.php hvilket jo er fint nok.. men når jeg så browser videre på siden, f.eks ser på andre produkter, og så trykker F5 så tilføjer den en ekstra af den sidst ankomne i kurven. så det er som om at $_GET ikke bliver nulstillet i basket_small.php når koden er færdig?
Avatar billede svoeber Nybegynder
23. maj 2004 - 15:53 #8
Du kan sende en header i dit script til indkøbskurven efter du har lagt de nye produkter i sessionsvariable:
header("Location: indkobskurv.php");

Så skal du bare huske at tjekke efter sessionsvariable, når der ikke er en GET-variabel
Avatar billede mcgoat Nybegynder
23. maj 2004 - 19:07 #9
problemet er jo at jeg ikke aner om der er en GET variabel, for de bliver jo ikke nulstillet eller slettet.
Avatar billede mcgoat Nybegynder
16. september 2004 - 08:37 #10
Fik aldrig løst det :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester