Avatar billede tigertool Nybegynder
11. april 2004 - 20:34 Der er 7 kommentarer og
1 løsning

Session i function

GRRRRRRRRR!!!!!!!!
Så sletter E! bare mit spørgsmål - så må jeg jo prøve igen!

Jeg arbejder med en ældre version af PHP (4.0.1) og jeg skal bruge session.

Jeg har en index.php:
<?
session_start();
global $date;
session_register('date');
Include("functions.php");
if (!isset($date))
{
    $date = date("Y-m-d");
}
....
?>

functions.php:
<?

function dateAdd()
{
    global $date;
    ...... (tilføjer en dag)
    $date = $temp;
    echo $date;
}

$date bliver udskrevet og der er tilføjet en dag, men når jeg kalder $date senere så er den stadig det samme som jeg satte den til i starten (altså dags dato)

Kan man ikke ændre $date (som er en session?) i en function?
Avatar billede coderdk Praktikant
11. april 2004 - 22:58 #1
prøv med $HTTP_SESSION_VARS['date']
Avatar billede schaefner Juniormester
12. april 2004 - 00:53 #2
<?php
session_start();
$HTTP_SESSION_VARS['date'] = date("Y-m-d"); // Sætter standardværdien, dags dato

function changeDate($date) {
    global $HTTP_SESSION_VARS;
    $HTTP_SESSION_VARS['date'] = $date;
    echo $HTTP_SESSION_VARS['date'];
}
changeDate('2004-11-19'); // Ændre datoen til 2004-11-19
?>
Avatar billede tigertool Nybegynder
12. april 2004 - 01:05 #3
Ok, det vil jeg så lige prøve i morgen.

Det vil jo faktisk svare til at jeg bruger $_SESSION['var'] i andre PHP versioner, ikke?
Avatar billede schaefner Juniormester
12. april 2004 - 01:06 #4
jo
Avatar billede schaefner Juniormester
12. april 2004 - 01:10 #5
Bare med den forskel at fra version 4.1.0 er $_SESSION global som standard.

<?php
session_start();
$_SESSION['date'] = date("Y-m-d"); // Sætter standardværdien, dags dato

function changeDate($date) {
    $_SESSION['date'] = $date;
    echo $H_SESSION['date'];
}
changeDate('2004-11-19'); // Ændre datoen til 2004-11-19
?>

As of PHP 4.1.0, $_SESSION is available as a global variable just like $_POST, $_GET, $_REQUEST and so on. Unlike $HTTP_SESSION_VARS, $_SESSION is always global. Therefore, you do not need to use the global  keyword for $_SESSION. Please note that this documentation has been changed to use $_SESSION everywhere.

[http://dk2.php.net/manual/en/ref.session.php]

mvh. Jesper Sørensen
Avatar billede schaefner Juniormester
12. april 2004 - 01:11 #6
Der røg lige et H ind:

echo $H_SESSION['date'];
echo $_SESSION['date'];
Avatar billede tigertool Nybegynder
14. april 2004 - 08:47 #7
Hmm.. jeg kan desværre ikke få det til at virke. Her er min kode:

-----------------------------------------KODE----------------------------------------
<?
session_start();
// functions.php

global $dates;
global $weekdays;
global $max_weeks;

$max_weeks = 3;
$weekdays = array('Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag','Søndag');

function addWeek()
{
        global $max_weeks;
        $_SESSION['week']++;

        if ($_SESSION['week'] > $max_weeks)
        {
                $_SESSION['week'] = 0;
        }
}

function changeDate($id)
{
        global $dates;

        if ($_SESSION['date'] == $dates[$_SESSION['week']][$id])
        {
                addWeek();
        }

        if ($dates[$_SESSION['week']][$id] == null)
        {
                addWeek();
        }
        $tempWeek = $_SESSION['week'];

        $_SESSION['date'] = $dates[$tempWeek][$id];
}


// end of functions

if(!isset($_SESSION['week']))
{
        $_SESSION['week'] = 0;
}
?>
<center>
<form action="<?=$PHP_SELF?>" method="post">
<?
//temp
$tempDate = time();
$tempWeek = 0;

for ($r = 0; $r < $max_weeks * 7; $r++)
{
        $weekDay = date("w",$tempDate);

        $dates[$tempWeek][$weekDay] = date("d-m-Y",$tempDate);

        if ($weekDay == "0")
        {
                $tempWeek++;
        }

        $tempDate += 60*60*24;
}
?>
<p>Udskrift af dobbelt-array:</p>
<?
for ($i = 0; $i < $max_weeks + 1; $i++)
{

        if ($_SESSION['week'] > $max_weeks)
        {
                $_SESSION['week'] = 0;
        }
}

function changeDate($id)
{
        global $dates;

        if ($_SESSION['date'] == $dates[$_SESSION['week']][$id])
        {
                addWeek();
        }

        if ($dates[$_SESSION['week']][$id] == null)
        {
                addWeek();
        }
        $tempWeek = $_SESSION['week'];

        $_SESSION['date'] = $dates[$tempWeek][$id];
}


// end of functions

if(!isset($_SESSION['week']))
{
        $_SESSION['week'] = 0;
}
?>
<center>
<form action="<?=$PHP_SELF?>" method="post">
<?
//temp
$tempDate = time();
$tempWeek = 0;

for ($r = 0; $r < $max_weeks * 7; $r++)
{
        $weekDay = date("w",$tempDate);

        $dates[$tempWeek][$weekDay] = date("d-m-Y",$tempDate);

        if ($weekDay == "0")
        {
                $tempWeek++;
        }

        $tempDate += 60*60*24;
}
?>
<p>Udskrift af dobbelt-array:</p>
<?
for ($i = 0; $i < $max_weeks + 1; $i++)
{
        echo "<p>";
        for ($l = 0; $l < 7; $l++)
        {
                echo $dates[$i][$l]." ";
        }
        echo "</p>";
}
?>
<p>
<input type="submit" name="d1" value="<?=$weekdays[1]?>">&nbsp;
<input type="submit" name="d2" value="<?=$weekdays[2]?>">&nbsp;
<input type="submit" name="d3" value="<?=$weekdays[3]?>">&nbsp;
<input type="submit" name="d4" value="<?=$weekdays[4]?>">&nbsp;
<input type="submit" name="d5" value="<?=$weekdays[5]?>">&nbsp;
<input type="submit" name="d6" value="<?=$weekdays[6]?>">&nbsp;
<input type="submit" name="d0" value="<?=$weekdays[0]?>">&nbsp;
<?
if ($d1)
{
        changeDate(1);
}
elseif ($d2)
{
        changeDate(2);
}
elseif ($d3)
{
        changeDate(3);
}
elseif ($d4)
{
        changeDate(4);
}
elseif ($d5)
{
        changeDate(5);
}
elseif ($d6)
{
        changeDate(6);
}
elseif ($d0)
{
        changeDate(0);
}
else
{
        if ($date1)
        {
                $_SESSION['date'] = $date1;
        }
        else
        {
                $_SESSION['date'] = date("d-m-Y");
        }
}
?>
</form>
<p><? echo $_SESSION['date']; ?></p>
</center>
----------------------------------------/KODE----------------------------------------

meningen med koden er at lave 7 knapper hvor man kan vælge en dato. Hvis kan har trykket på torsdag og så trykker på torsdag igen, så får man torsdag i næste uge (lige frem til $max_weeks) og derefter forefra.

Er der nogen der kan skrive koden om til at kunne bruge session på en ændre PHP?
Avatar billede tigertool Nybegynder
29. maj 2004 - 18:11 #8
...
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