Oprettet fre. d. 29. juni 2012 kl. 20:17:28

morticms
morticms (1.800 point. Point ude: 60)

Fra database til Session

Hej her inde :o)

Jeg har et problem, som jeg håber der er en der kan hjælpe mig med.
Jeg forsøger at huske nogle data fra min database i MySQL til min session. Men den vil bare ikke huske dem.
Jeg får den skrevet til min session, men når jeg så forsøger at læse dem igen, melder den at den ikke kan åbne den.

Håber der er en der kan hjælpe mig.

Med venlig hilsen
Morten Møller

Skrevet fre. d. 29. juni 2012 kl. 21:29:03| #1


Skrevet lør. d. 30. juni 2012 kl. 07:46:00| #2

morticms
morticms (1.800 point)
Hej :o)

Her er Kode til at hente det igen.

<?php
session_start();
$result = OpenSession();
if (!$result[0]) echo "Kunne ikke aabne session.";
else
{
list($vare, $varenr, $antal, $pris, $id) = $result[1];
echo "Retrieving session variables:<pre>";
echo "vare: $vare\n";
echo "varenr: $varenr\n";
echo "antal: $antal\n";
echo "pris: $pris\n";
echo "id: $id\n";   
}
function OpenSession()
{
if (!@session_start()) return array(FALSE);
if (isset($_SESSION['vare'])) return array(FALSE);
       
$vars = array();
$vars[] = $_SESSION['vare'];
$vars[] = $_SESSION['varenr'];
$vars[] = $_SESSION['antal'];
$vars[] = $_SESSION['pris'];
$vars[] = $_SESSION['id'];
return array(TRUE, $vars);
    }
?>

Med venlig hilsen
Morten Møller

Skrevet lør. d. 30. juni 2012 kl. 07:49:26| #3

morticms
morticms (1.800 point)
/*Henter brugeres vare*/
    $vare = $row_rsVare_Salg['vare'];
    $varenr = $row_rsVare_Salg['varenr'];
    $antal = $row_rsVare_Salg['antal'];
    $pris = $row_rsVare_Salg['pris'];
    $id = $row_rsVare_Salg['id'];
    $result = CreateSession($vare, $varenr, $antal, $pris, $id);
    if (!$result) echo "Kunne ikke oprette session";
    else
    {
        echo 'session oprettet.<br /><pre>';
        echo 'Tester: $_SESSION[\'vare\'] = ' . $_SESSION['vare'];
    }
    function CreateSession($vare, $varenr, $antal, $pris, $id)
    {
        if (!session_start()) return FALSE;
        $_SESSION['vare'] = $vare;
        $_SESSION['varenr'] = $varenr;
        $_SESSION['antal'] = $antal;
        $_SESSION['pris'] = $pris;
        $_SESSION['id'] = $id;
        $_SESSION['ipnum'] = getenv("REMOTE_ADDR");
        $_SESSION['agent'] = getenv("HTTP_USER_AGENT");
        return TRUE;
    }

Skrevet lør. d. 30. juni 2012 kl. 13:50:10| #4

Kunne det være den der

  if (isset($_SESSION['vare']))...

der skal vendes om - dvs. negeres?

Skrevet lør. d. 30. juni 2012 kl. 16:41:34| #5

morticms
morticms (1.800 point)
Hej

Jeg har prøvet med:

function OpenSession()
{
        if (!@session_start()) return array(FALSE);
        if ($_SESSION['vare']) return array(TRUE);
       
        $vars = array();
        $vars[] = $_SESSION['vare'];
        $vars[] = $_SESSION['varenr'];
        $vars[] = $_SESSION['antal'];
        $vars[] = $_SESSION['pris'];
        $vars[] = $_SESSION['id'];
        return array(TRUE, $vars);
    }
Men så viser den ikke det der står i databasen.
Viser dog de
echo "vare: $vare\n";
echo "varenr: $varenr\n";
echo "antal: $antal\n";
echo "pris: $pris\n";
echo "id: $id\n";
Bare uden det der står i databasen.

Skrevet lør. d. 30. juni 2012 kl. 17:56:25| #6

Det jeg siger, er at

  if ($_SESSION['vare']) return array(TRUE);

(og den med isset) vil returnere et tomt array, hvis der står noget i $_SESSION['vare']. Men det er ikke hvad du vil? Måske

  if (!isset($_SESSION['vare'])) return array(TRUE);

Skrevet søn. d. 01. juli 2012 kl. 07:55:44| #7

morticms
morticms (1.800 point)
Ja det er det jeg vil have den til, men prøvede uden isset men viste stadig ikke nogle af de data jeg havde.
Hvad gør jeg mon forkert?

Skrevet søn. d. 01. juli 2012 kl. 07:56:55| #8


Skrevet søn. d. 01. juli 2012 kl. 10:34:36| #9

Igen: Hvilken kode er det du prøver, der ikke virker? Den fra #6? Noget andet?

Skrevet søn. d. 01. juli 2012 kl. 16:00:07| #10

morticms
morticms (1.800 point)
Jeg prøvede det fra #6 der kom så noget frem, bare uden det jeg havde gemt session.
Kun punkterne altså vare: varenr: osv.

Skrevet søn. d. 01. juli 2012 kl. 19:31:22| #11


Skrevet søn. d. 01. juli 2012 kl. 21:25:16| #12

morticms
morticms (1.800 point)
Det er den i #2

Skrevet søn. d. 01. juli 2012 kl. 22:11:31| #13

Men det virker jo ikke. Men så synes jeg du skal kigge på #6.

Skrevet søn. d. 01. juli 2012 kl. 22:26:38| #14

morticms
morticms (1.800 point)
Nej nemlig jeg har prøvet det i #6
Der kunne jeg få det frem, bare uden min data.
Kun det der vare: osv.

Skrevet søn. d. 01. juli 2012 kl. 22:30:51| #15

Er du sikker på at der skal TRUE i linien fra #6?

Skrevet man. d. 02. juli 2012 kl. 09:38:52| #16

morticms
morticms (1.800 point)
Jeg prøvede uden isset. Når jeg siger true,
for som du siger. så vil den bare komme med en tom array.
Så ville der komme noget frem, bare ikke det jeg forsøger at få ind i min session.

tak for du bruger din tid, på at hjælpe mig.

Skrevet man. d. 02. juli 2012 kl. 09:41:28| #17

Og hvad sker der så, hvis du bruger linien fra #6 og skriver FALSE i stedet for?

Skrevet man. d. 02. juli 2012 kl. 15:47:27| #18

morticms
morticms (1.800 point)
Så kommer den samme fejl som i starten. Med at den ikke kan finde nogen.

Skrevet tir. d. 03. juli 2012 kl. 12:00:40| #19

Jeg er nødt til at se den kode, der ikke virker.

Skrevet tir. d. 03. juli 2012 kl. 18:09:07| #20

morticms
morticms (1.800 point)
#2 den virker ikke efter hensigten.

Skrevet tir. d. 03. juli 2012 kl. 18:13:31| #21


Skrevet tir. d. 03. juli 2012 kl. 22:12:19| #22

morticms
morticms (1.800 point)
Er der noget jeg misforstår?
Med hvilken del du skal bruge?
Det er fordi de koder jeg bruger til session delen, er det der står i #2 og #3.
Og det er der jeg ikke kan finde problemet. #3 skulle gerne oprette. Og #2 skulle gerne få de oplysninger frem.

Med venlig hilsen
Morten Møller

Skrevet lør. d. 07. juli 2012 kl. 09:41:55| #23

Temp_dk
Temp_dk (6.855 point)
<?php
if(!isset($_SESSION))
{
    session_start();
}

$result = OpenSession();

list($vare, $varenr, $antal, $pris, $id) = $result[1];
echo "Retrieving session variables:<pre>";
echo "vare: $vare\n";
echo "varenr: $varenr\n";
echo "antal: $antal\n";
echo "pris: $pris\n";
echo "id: $id\n";   


// formoder at denne funktion ligger i en anden fil
function OpenSession()
{
  /* Ved denne metode opstår der ikke warnings med mere hvis session_start() har været kaldt
*/
  if(!isset($_SESSION))
  {
    session_start();
  }

  // Nedenstående vil returnere FALSE hvis $_SESSION['vare'] er sat
  // if (isset($_SESSION['vare'])) return array(FALSE);

  // Opret $vars hvis $_SESSSION['vare'] er sat   
  if(isset($_SESSIOn['vare'])
  {
      $vars = array();
      $vars[] = $_SESSION['vare'];
      $vars[] = $_SESSION['varenr'];
      $vars[] = $_SESSION['antal'];
      $vars[] = $_SESSION['pris'];
      $vars[] = $_SESSION['id'];

      return array(TRUE, $vars);
  }
  return false;
}
?>

Skrevet lør. d. 07. juli 2012 kl. 11:57:25| #24

morticms
morticms (1.800 point)
Hej

function OpenSession() /vil det sige at den tror, den ligger et andet sted.
altså feks. på brugeres computer.

Skrevet lør. d. 07. juli 2012 kl. 17:06:47| #25

Temp_dk
Temp_dk (6.855 point)
Nej

Når en bruger kalder dit script og der står session_start()
oprettes der er temp fil på 0 byte på serveren.

Heri gemmes blandt andet alle de nødvendige $_SESSIONS variabler der er gældende for den aktuelle session.

Opret et php script med navn phpinfo.php med følgende 3 linjer

<?php
  phpinfo()
?>

Gem det på din server og kald det.
Søg efter 'session.save_path' og du kan se i hvilken mappe den midlertidige fil bliver placeret.

Herefter opret php script
<?php
session_start();
echo session_id();;
?>

Nu vil du se at der er oprettet en fil i den mappe som du fandt ved hjælp af php_info.php og navnet er vis i browser, kan dog have fået et prefix = sess_.

Dette script vil gemme $_SESSION['vare'] i filen

<?php
session_start()
$_SESSION['vare'] = "Godt vejr i resten af ugen";
?>

husk at $_SESSION variabler udløber efter et vist tidsrum hvis bruger ikke har været aktiv.


læs mere om $_SESSION her
http://www.php.net/ (...)

Skrevet lør. d. 07. juli 2012 kl. 21:55:53| #26

morticms
morticms (1.800 point)
Takker det må jeg lige prøve.

Med venlig hilsen
Morten Møller

Skrevet man. d. 09. juli 2012 kl. 08:34:52| #27

morticms
morticms (1.800 point)
Hej Temp_dk

Så virker det :o)
1000 tak for hjælpen.
Hvis du lige vil have dine point.
Kan du så skrive i "Svar"

Med venlig hilsen
Morten Møller

Skrevet tir. d. 10. juli 2012 kl. 19:25:11| #28

Temp_dk
Temp_dk (6.855 point)
Det var rart at høre det virker

og samler ikke point

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

fejl i while (gentager sekvens)

Oprettet den 19. maj 2013 kl. 10.58
magnus_rievers giver 30 point for svar | Giv et svar »

Select og 2 count

Oprettet den 17. maj 2013 kl. 17.15
steen-h giver 100 point for svar | Giv et svar »

syntax fejl, select med RANK()

Oprettet den 14. maj 2013 kl. 16.06
rhaa giver 30 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

Galleri: Her er Googles nyeste værktøj og legetøj

Google har i denne uge afholdt udviklerkonferencen I/O i San Francisco. Se her hvad søgegiganten kunne præsentere af nyskabelser.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger