Avatar billede Morten Professor
18. februar 2015 - 06:50 Der er 34 kommentarer og
1 løsning

$_SESSION kan det laves på en hel side?

Hej

Jeg vil høre om jeg kan bruge en hel side som session.
Altså bruge min database så jeg udtrække dem alle som session, vil det være nemmere at lave indkøbskurv så?

Med venlig hilsen
Morten A. Møller
Avatar billede Slater Ekspert
18. februar 2015 - 09:19 #1
Kan godt være det bare er mig, men jeg forstår overhovedet ikke spørgsmålet.

Bruge en side som session? Bruge din database til at udtrække dem alle som session? Hvem er "dem alle", og hvad mener du med "bruge som session"?
Avatar billede Morten Professor
18. februar 2015 - 09:28 #2
http://em-deko.dk/testside.php

Hvordan for jeg dem begge ud har lavet side med
$_SESSION[kurv] = feks. $row_Vare_oversigt['id'];
Avatar billede Morten Professor
18. februar 2015 - 09:30 #3
Min session indeholder

Array
(
    [vare] => Test2
    [pris] => 300
    [indkoeb] => Array
        (
            [0] => Test
            [1] => 1
            [2] => 500
        )

    [varenr] => Array
        (
            [3] => 1
            [12] => 1
        )

    [id] => Array
        (
            [11] => 2
            [12] => 1
        )

)
Avatar billede Slater Ekspert
18. februar 2015 - 10:03 #4
Hvem er "dem begge"?
Avatar billede Morten Professor
18. februar 2015 - 10:19 #5
Test og test2
Avatar billede Slater Ekspert
18. februar 2015 - 10:22 #6
Det gør du vel med $_SESSION['vare'] og $_SESSION['indkoeb'][0]

Men de ligger to forskellige steder i array'et, jeg kan ikke forstå hvad de har med hinanden at gøre. Eller stadig hvad du mente med at bruge siden som session.
Avatar billede Morten Professor
18. februar 2015 - 10:31 #7
Det er at alle databasens indhold er lavet om til sessions
hvordan skille jeg dem ad de arrays?
Avatar billede olsensweb.dk Ekspert
18. februar 2015 - 11:24 #8
din session indkøbs kurv indeholder alt for meget, gem kun det mest nødvendige i din session
som splazz skriver i #4 (*) "netop varens id og antal.". dette blev ilusteret i #22 (*) af jakobdo, hvilke også er måden man bør gøre det på
(*) ref http://www.eksperten.dk/spm/1001765

noget ala
(utested)
lav en function der retunerer vare info
  
// retunerer som minimum vare_navn, vare_stk_pris
function vare_Read($conn, $id){
sql ="SELECT * FROM vare WHERE id = $id";
$rs = $conn->query($sql);
$ar = $rs->fetch_assoc();
return $ar;


du kan hjælpe dig selv ved at dele din opgave op i del opgaver, hvilke mange gange kunne være functioner

dit session array kunne se sådan ud
  
[kurv] => Array
(
    [5] => Array
        (
            [id] => 5
            [antal] => 2                   
        )

    [7] => Array
        (
            [id] => 7
            [antal] => 4                   
        )

)

mere er ikke nødvendigt, resten kan du hente fra db når du udskriver


(utested)
  
//vis kurv:
foreach($_SESSION['kurv'] as $vare){
    $vare_info=    vare_Read($conn, $vare['id']);
    echo "vare navn er " .  $vare_info['vare_navn']."<br>";
    echo "vare pris er " .  $vare['antal'] * $vare_info['vare_stk_pris']."<br>";
}


hvorfor anvender du stadig det gamle sql API ??
dette bliver fjernet fra PHP i kommende vertioner, og så vil din nuværende sql code ikke virke.
http://php.net/manual/en/mysqlinfo.api.choosing.php
du burde få en fejl i din mysql-connect, hvis du har slået error_reporting og display_errors til, hvilke du bør under udvikling

ref http://php.net/manual/en/function.mysql-connect.php
  
Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
mysqli_connect()
PDO::__construct()
Avatar billede Morten Professor
18. februar 2015 - 11:35 #9
Er det her for meget
Array
(
    [vare] => Test
    [pris] => 500
    [id] => 11
    [farve] => Test
    [matriale] => Test
    [hoejde] => Test
    [diameter] => Test
    [vaegt] => Test
    [indkoeb] => Array
        (
            [0] => Test2
            [1] => Test2
            [2] => 300
            [3] => 12
        )

    [varenr] => Array
        (
            [12] => 1
        )

)
Avatar billede olsensweb.dk Ekspert
18. februar 2015 - 11:49 #10
>Er det her for meget
JA

hvis du ikke henter vare info hver gang du skal udskrive, hvordan vil du så opdage at prisen/vare på lager osv ændres mens du er inde på siden ??

hvis jeg er en ond person går jeg ind og ændre vare pris til 0, og så får jeg mine vare gratis :), tænk på sikkerhed.
alt clientside kan manipuleres

du besvare ikke et meget vigtigt spørgsmål
>hvorfor anvender du stadig det gamle sql API ??
Avatar billede Morten Professor
18. februar 2015 - 12:03 #11
Jeg kender ikke til andet.
kender du noget bedre?
Avatar billede Morten Professor
18. februar 2015 - 12:07 #12
Ved du hvordan jeg ud trækker et session id til databasen
Så jeg kan bruge det til at hende oplysninger fra databasen.
Det er fordi jeg kan ikke finde det id så jeg kan udtrkke det til et andet sted. f.eks. en mail form
Avatar billede olsensweb.dk Ekspert
18. februar 2015 - 12:36 #13
>kender du noget bedre?
som der står på php's hjemmeside anvend mysqli eller PDO

mysql kan skrives på 2 måder: eller blandes hvis man ønsker
mysqli kan skrives procedural style som du kender fra det gamle mysql API, og derfor meget nemt at lære
mysqli kan skrives med OOP hvilke bliver fremtiden.

PDO: kan kun anvende OOP.
personligt er jeg til PDO, da jeg fra tid til anden bruger Prepare Statement, og der er PDO klart forbedret IMHO, og man nemt kan skifte fra en database til en anden uden at rette alt coden
feks fra mysql til mssql, der er nogle kommandoer og sysntal der skal rettes, men det er småting iforhold til andre API'er.

>Ved du hvordan jeg ud trækker et session id til databasen
>Så jeg kan bruge det til at hende oplysninger fra databasen.
det kommer an på hvordan dit session array ser ud, men det jeg viste i #8 vis kurv: er meget tæt på

hvis det ser ud som i #9
må det være noget ala
$id=$_SESSION['id'];
Avatar billede Morten Professor
18. februar 2015 - 12:40 #14
Nu har jeg gjort det ganske enkelt igen.
Array
(
    [vare] => test
    [pris] => 200
    [indkoeb] => Array
        (
            [0] => test
            [1] => 1
            [2] => 200
            [3] => 14
        )

    [varenr] => Array
        (
            [14] => 1
        )

)

Jeg vil på det nye der. jeg må have fat i en bog. det er der igennem jeg har lært alt det andet. :-)
Avatar billede Morten Professor
18. februar 2015 - 13:40 #15
Hvorfor har jeg stadig Array
(
    [pris] => 200
    [vare] => test
)
Når jeg har slettet alt
Avatar billede olsensweb.dk Ekspert
18. februar 2015 - 14:21 #16
>hvorfor har jeg stadig
fordi du ikke laver en unset på dit array
Avatar billede Morten Professor
18. februar 2015 - 16:07 #17
Jamen det er fordi den sletter kun noget af det?
Avatar billede olsensweb.dk Ekspert
18. februar 2015 - 16:32 #18
>Jamen det er fordi den sletter kun noget af det?
nej, det er pga du ikke sletter hele arrayet, eller opretter det igen et andet sted

afprøv dette.
     
<?php
session_start( );
$_SESSION['kurv']=array(
    "5"=>array('id' => 5, 'anta' => 2),
    "7"=>array('id' => 7,'antal' => 4 )
);

echo "<br>før sletning<br>";
print_r($_SESSION['kurv']);
unset($_SESSION['kurv']);
echo "<br>Efter sletning, her kommer en fejl, da arrayet ikke findes længere<br>";
print_r($_SESSION['kurv']);
?>
Avatar billede Morten Professor
18. februar 2015 - 16:37 #19
Det vil jeg prøve.
Har lige et spørgsmål mere jeg prøver at trække data ud af databasen hvor det skal være de id i sessions det bliver de oplysninger session iderne. Kan bare ikke få den til det.
Avatar billede olsensweb.dk Ekspert
18. februar 2015 - 16:54 #20

<?php
session_start( );
$_SESSION['kurv']=array(
    "5"=>array('id' => 5, 'anta' => 2),
    "7"=>array('id' => 7,'antal' => 4 )
);
echo "<br>før sletning<br>";
print_r($_SESSION['kurv']);
$vare_info= vare_Read($conn, $_SESSION['kurv']['7']['id']);
print_r($vare_info);
unset($_SESSION['kurv']);
echo "<br>Efter sletning, her kommer en fejl, da arrayet ikke findes længere<br>";
print_r($_SESSION['kurv']);
?>
Avatar billede Morten Professor
18. februar 2015 - 17:55 #21
Det vil jeg prøve.
Har lige et spørgsmål mere jeg prøver at trække data ud af databasen hvor det skal være de id i sessions det bliver de oplysninger session iderne. Kan bare ikke få den til det.
Avatar billede Morten Professor
18. februar 2015 - 17:59 #22
Hov kom til at skrive den samme besked to gang.
Jeg vil lige prøve det du skriver.
Avatar billede Morten Professor
18. februar 2015 - 18:11 #23
Det virkede på session ;)
Avatar billede Morten Professor
18. februar 2015 - 20:45 #24
Hvorfor kan jeg bare ikke få min pris frem?

Viser kurv ==>
<?php require_once('../Connections/hellestrik.php');

/*
  List varer i kurv
*/
session_start();

$foerstelinie=true;
foreach($_SESSION['id'] as $id => $antal){
   
   
if($antal>0){
    if($foerstelinie){
      $foerstelinie=false;
    }
    echo ' Varenr:  ' . $id;
      echo ' Vare:  ' . $_SESSION['vare'];
    echo ' Antal:  ' . $antal;
    echo ' Pris:  ' . $_SESSION['pris'];
    echo '';
  }
}
if(!$foerstelinie){


?>

opdater ==>

if(isset($row_rsVare_Salg['id'])){
  if(!isset($_SESSION['indkoeb'])){
    $_SESSION['indkoeb']=array($row_rsVare_Salg['pris'],$row_rsVare_Salg['id'],$row_rsVare_Salg['antal']);
  }
  if(isset($_SESSION['id'][$row_rsVare_Salg['id']]))
  {
    $_SESSION['id'][$row_rsVare_Salg['id']]++;
  } else {
    $_SESSION['id'][$row_rsVare_Salg['id']]=1;
  }
} else {
  echo "Fejl: Ingen vareid";
}
Avatar billede olsensweb.dk Ekspert
19. februar 2015 - 05:08 #25
>Hvorfor kan jeg bare ikke få min pris frem?
ud fra hvilke session array (hvordan ser det ud) ??
hvorfor vil du kun have en vare i session ??, en kunde køber ofte mere en 1 vare.

hint:
echo ' Varenr:  ' . $id;
echo ' Vare:  ' . $_SESSION['vare'];
echo ' Antal:  ' . $antal;
echo ' Pris:  ' . $_SESSION['pris'];

her mangler en dimention
Avatar billede Morten Professor
19. februar 2015 - 06:32 #26
Ville gerne have flere frem. Men hvordan er lige problemet. Jeg føler mig en smule dum. Håber ikke jeg tager for meget af din toldmodighed.
For du er rigtig god.
Avatar billede Morten Professor
19. februar 2015 - 07:14 #27
(
    [pris] => 400
    [vare] => test
    [indkoeb] => Array
        (
            [0] => 200
            [1] => 1
            [2] => 1
        )

    [id] => Array
        (
            [1] => 8
            [2] => 7
        )

)

Det er hvad jeg kan få frem i min mailform

Det er her de ser hvad de har købt her til sidst.
Men ville godt have hentet resten af oplysningerne om produktet.
Avatar billede Morten Professor
19. februar 2015 - 07:52 #28
Den tager og kun det ene id Vare: test2
Antal: 1
Varenr: 1
Pris: 200
Vare: test2
Antal: 1
Varenr: 2
Pris: 200

Man hvor er det træls
Avatar billede olsensweb.dk Ekspert
19. februar 2015 - 10:30 #29
>Håber ikke jeg tager for meget af din toldmodighed.
den er sat alvorligt på prøve

prøv at kigge på is-array og så er det bare en simpel for løkke


<?php
session_start();
$_SESSION['kurv'] = array(
    'pris' => 400,
    'vare' => "test",
    'indkoeb' => array(200, 1, 1),
    'id' => array(8, 7)
);
// print_r($_SESSION['kurv']);
// http://php.net/manual/en/function.is-array.php
$str = "";
foreach ($_SESSION['kurv'] as $key => $value) {
    if (is_array($value)) {
        for ($i = 0, $lng = count($value); $i < $lng; $i++) {
            $str .= $key . " har værdien " . $value[$i] . "<br>";
        }
    } else {
        $str .= $key . " har værdien " . $value . "<br>";
    }
}
echo $str;
?>
Avatar billede Morten Professor
19. februar 2015 - 16:27 #30
Tak for din toldmodighed jeg er rigtig glad for du har hjulpet mig så meget.
Jeg skal lige høre dig,  jeg har nogle priser og antal i min database.
Hvordan kan jeg tælle det sammen.
Altså priser sammen. Og så antal sammen.
Det her er udenom session.
Avatar billede olsensweb.dk Ekspert
19. februar 2015 - 16:35 #31
>jeg har nogle priser og antal i min database.
>Hvordan kan jeg tælle det sammen.
se på count
http://dev.mysql.com/doc/refman/5.7/en/counting-rows.html
http://www.w3schools.com/sql/sql_func_count.asp
Avatar billede Morten Professor
19. februar 2015 - 16:49 #32
Takker &#128522;
Kan du gøre så du kan få point.
Jeg takker for al din hjælp.
Avatar billede olsensweb.dk Ekspert
19. februar 2015 - 16:53 #33
du får et svar her
Avatar billede Morten Professor
19. februar 2015 - 17:11 #34
Tak for hjælpen ;o)
Avatar billede olsensweb.dk Ekspert
20. februar 2015 - 05:50 #35
#31
retelse: kig på SUM
http://www.tizag.com/mysqlTutorial/mysqlsum.php
http://www.w3schools.com/sql/sql_func_sum.asp


noget ala
select SUM(antal) as sum_antal, SUM(pris) as sum_pris FROM vare
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