Avatar billede krydset Nybegynder
10. december 2003 - 15:44 Der er 26 kommentarer og
3 løsninger

if sætning driller

Hejsa jeg har denne her ifsætning men den volder lidt problemer

men jeg får hele tiden en parse error:
Parse error: parse error in /home/administrator/www/index.php on line 395

linie 395 er denne her



$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv
if(isset($_POST[kob_x])) {
    //hvis køb knappen aktiveres tjek om sessione er sat
    if(!$_SESSION[tjek] == "") {
        //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal)) {
                if($row[vare_id] == "$_POST[varenummer]") {
                echo "OPDATER ANTAL";
                //hvis varen findes skal antal i db opdateres
            /*linie 395*/} else {
                //hvis ikke varen findes i kurv skal den lægge varen i kurv
                mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
            } else {
                //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind
                ikke_logget_ind();
            }
        }
    }
}


kan i hjælpe lidt med den??

Mvh krydset
Avatar billede htm Nybegynder
10. december 2003 - 15:46 #1
denne linie
if(!$_SESSION[tjek] == "") {
skal for det første være:
if($_SESSION[tjek] != "") {
Avatar billede krydset Nybegynder
10. december 2003 - 15:50 #2
Nej det virkede før har bare tilføjet antal funktionen i det og så gik det lidt galt

før havde jeg bare
hvis $SESSION[tjek] sat ind læg vare i db

hvis ikke $_SESSION[tjek] tom kør ikke logget_ind function
Avatar billede krydset Nybegynder
10. december 2003 - 15:52 #3
det her var det orginale script jeg havde fra starten
if(isset($_POST[kob_x])) {
    if(!$_SESSION[tjek] == "") {
        mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
    } else {
        ikke_logget_ind();
    }
}
Avatar billede htm Nybegynder
10. december 2003 - 15:52 #4
Grunden til fejlen er at du har to else. Du kan ikke have en if-sætning og så have to else.
Avatar billede krydset Nybegynder
10. december 2003 - 15:52 #5
og det virkede !!
Avatar billede krydset Nybegynder
10. december 2003 - 15:53 #6
det der virkede var altså det jeg skrev i indlæg:
Kommentar: krydset
10/12-2003 15:52:20
det gamle script
'

Hvordan ville du sætte det op ??
Avatar billede jakoba Nybegynder
10. december 2003 - 15:54 #7
og hvis ikke  'tjek' og 'kob_x' og 'vare_id' og 'unikt_id' og 'antal' er defineret som konstanter skal der anførselstegn om

til gengæld er der ingen grund til at sætte anførselsteng omkring "$_POST[varenummer]" i linien:
                if( $row[vare_id] == $_POST[varenummer] ) {

fire linier under den linie du peger på
        /*linie 395*/ } else {
er der en anden linie med
            } else {
som ikke hører til nogen if-sætning. det vil gå galt.

mvh JakobA
Avatar billede htm Nybegynder
10. december 2003 - 15:56 #8
Svært lige at se hvad du vil, men ser ud til at det er sådan du vi:

$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv
if(isset($_POST['kob_x']))
{
    //hvis køb knappen aktiveres tjek om sessione er sat
    if(!$_SESSION['tjek'] == "")
    {
        //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal))
        {
            if($row['vare_id'] == $_POST['varenummer'])
            {
                echo "OPDATER ANTAL";
                //hvis varen findes skal antal i db opdateres
                /*linie 395*/
            }
            else
            {
                //hvis ikke varen findes i kurv skal den lægge varen i kurv
                mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
            }
        }
    }
    else
    {
        //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind
        ikke_logget_ind();
    }
}
Avatar billede jakoba Nybegynder
10. december 2003 - 16:00 #9
det ser meget rigtigere ud (og endda med ordentlige indrykninger:-))
kommer der stadig fejl?
Avatar billede fangel Nybegynder
10. december 2003 - 16:04 #10
jeg holder også på at det burde være korrekt nu... det var også den eneste fejl jeg kunne se...

Morten
Avatar billede krydset Nybegynder
10. december 2003 - 16:52 #11
tester lige nu er lidt noob endnu :-( så hav lidt tålmodighed ik?
Avatar billede krydset Nybegynder
10. december 2003 - 16:59 #12
Det er ikke helt korrekt.

Hvis man ikke er logget ind så kan man ikke købe det virker!
men hvis man logger ind så kan man godt købe men ikke putte noget i kurven
Avatar billede krydset Nybegynder
10. december 2003 - 17:11 #13
Jeg har det her nu


$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv
if(isset($_POST['kob_x']))
{
    //hvis køb knappen aktiveres tjek om sessione er sat
    if(!$_SESSION['tjek'] == "")
    {
        //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal))
     
        {
            echo "TJEK VAREN";
            if($row['vare_id'] == $_POST['varenummer'])
            {
                echo "OPDATER ANTAL";
                mysql_query("UPDATE kurv antal = '$_POST[antal]' WHERE vare_id = '$_POST[varenummer]' AND unikt_id = '$_SESSION[unikt_id]'") or die(mysql_error());
                //hvis varen findes skal antal i db opdateres
            }
            else
            {
                //hvis ikke varen findes i kurv skal den lægge varen i kurv
                mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
                echo "indsæt i db";
            }
        }
    }
    else
    {
        //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind
        ikke_logget_ind();
    }
}

den udskriver ikke nogen af de echo jeg har sat ind
Avatar billede fangel Nybegynder
10. december 2003 - 17:14 #14
der ligger en fejl idat at else-betingelsen ligger INDE i der hvor du looper kurven igennem - dette medføre 2 ting

1) du kan kun tilføje ting til kurven hvis der allerede ligger noget !
2) der bliver oprettet en ordre HVER gang du har en anden ting i kurven (da den jo stadig looper gennem kurven)

derfor skal du lige omstrukturere dit script lidt

Mortne
Avatar billede krydset Nybegynder
10. december 2003 - 17:15 #15
oki prøver mig lidt frem skriver efter mere hjælp hvis det kokser helt :-O
Avatar billede fangel Nybegynder
10. december 2003 - 17:17 #16
altid velkommen ;) (du er ikke den værste at hjælpe ;))
Avatar billede jakoba Nybegynder
10. december 2003 - 17:32 #17
Nu har dea_pg allerede skrevet det, her er et forslag til jvordan koden kunne være:

du har et problem i den der while sætning:

        //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal))
        {
            if($row['vare_id'] == $_POST['varenummer'])
            {
                echo "OPDATER ANTAL";
                //hvis varen findes skal antal i db opdateres
                /*linie 395*/
            }
            else
            {
                //hvis ikke varen findes i kurv skal den lægge varen i kurv
                mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
            }
        }

while løkken løber igennem alle de varer der er i indkøbskurven og for hver af varerne udføres if-sætningen.
Så hvis det er tredie vare i indkøbskurven vil den prøve at lægge varen i to gange før den kommer til at forsøge at opdatere kurven.

Så jeg ville flytte indsætning af ny vare udenfor while løkken så det først sker nå alle varer er blevet tested igennem og vi er sikre på at varen ikke er der:

        //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal))
        {
            if($row['vare_id'] == $_POST['varenummer'])
            {
                echo "OPDATER ANTAL";
                //hvis varen findes skal antal i db opdateres
                /*linie 395*/
                break;              // springer ud af while løkken
            }
        }
        if ( !$row )  // hvis while-løkken fik lov at køre færdig blev varen ikke fundet
        {
            //hvis ikke varen findes i kurv skal den lægge varen i kurv
            mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
        }
Avatar billede krydset Nybegynder
10. december 2003 - 17:46 #18
tror det virker efter det jacoba skal lige rette lidt små fejl vender tilbage senere
Avatar billede krydset Nybegynder
10. december 2003 - 18:06 #19
Der er et lille problem med det.

Hvis man starter med at putte en vae i kurven der ikke eksistere virker det fint, men hvis man derimod putter en vare i der eksistere opdatere den osse antallet, MEN skriver udskriver osse functionen ikke_logget_ind();, hvorfor gør den det??
Avatar billede krydset Nybegynder
10. december 2003 - 18:13 #20
og hvis man prøver at putte en vare i kurven kører den IKKE "ikke_logget_ind functionen. Men jeg kan ikk eirgtig få det på plads:-O
Avatar billede jakoba Nybegynder
10. december 2003 - 18:13 #21
fordi du nok har mistet det else der skal stå foran  ikke_logget_ind(...).

dt jeg skrev var kun løllem og en if i samme niveau som løkken. alt det udenom (med mindre indrykning) skal ikke ændres.
Avatar billede jakoba Nybegynder
10. december 2003 - 18:14 #22
Ups.    løllem  ->  løkken
Avatar billede krydset Nybegynder
10. december 2003 - 18:32 #23
Jeg har det her

$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv
if(isset($_POST['kob_x']))
{
    //hvis køb knappen aktiveres tjek om sessione er sat
    if(!$_SESSION['tjek'] == "")
    {
  //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal))
        {
            if($row['vare_id'] == $_POST['varenummer'])
            {
                  mysql_query("UPDATE kurv SET antal = '$_POST[antal]' WHERE vare_id = '$_POST[varenummer]' AND unikt_id = '$_SESSION[unikt_id]'") or die(mysql_error());

                echo "OPDATER ANTAL";
                //hvis varen findes skal antal i db opdateres
                /*linie 395*/
                break;              // springer ud af while løkken
            }
        }
        if ( !$row )  // hvis while-løkken fik lov at køre færdig blev varen ikke fundet
        {
            //hvis ikke varen findes i kurv skal den lægge varen i kurv
            mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
        }
   
    else
    {
        //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind
        ikke_logget_ind();
    }
}
}

Mangler der en else her nogen steder her
Avatar billede fangel Nybegynder
10. december 2003 - 18:37 #24
der mangler en } foran else ikke_logget_ind()

tror jeg - har kin lige skimmet den - sidder og lavet matematik aflevering...

Morten
Avatar billede krydset Nybegynder
10. december 2003 - 21:34 #25
så var den der det endelig eresultat blev det her



$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv
if(isset($_POST['kob_x']))
{
    //hvis køb knappen aktiveres tjek om sessione er sat
    if(!$_SESSION['tjek'] == "")
    {
  //hvis sessionen er sat. Tjek så om varen findes
        while($row = mysql_fetch_array($antal))
        {
            if($row['vare_id'] == $_POST['varenummer'])
            {
                  mysql_query("UPDATE kurv SET antal = '$_POST[antal]' WHERE vare_id = '$_POST[varenummer]' AND unikt_id = '$_SESSION[unikt_id]'") or die(mysql_error());

                echo "OPDATER ANTAL";
                //hvis varen findes skal antal i db opdateres
                /*linie 395*/
                break;              // springer ud af while løkken
            }
        }
        if ( !$row )  // hvis while-løkken fik lov at køre færdig blev varen ikke fundet
        {
            //hvis ikke varen findes i kurv skal den lægge varen i kurv
            mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error());
        }
   
    }else
    {
        //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind
        ikke_logget_ind();
    }
}


gider i alle 3 lægge et svar så i kan få lidt for hjælpen?
Avatar billede fangel Nybegynder
10. december 2003 - 21:37 #26
svaa'r

Morten
Avatar billede jakoba Nybegynder
10. december 2003 - 21:39 #27
takker
Avatar billede htm Nybegynder
10. december 2003 - 22:12 #28
Svar :-)
Avatar billede krydset Nybegynder
10. december 2003 - 22:39 #29
Takker for hjælpem :-D
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