Avatar billede bengun Novice
07. juli 2005 - 21:57 Der er 5 kommentarer og
1 løsning

Opskrivning af variabel via funktion

Hej. Hvordan får jeg opskrivning af en variabel til at virke mere end én gang.

Jeg har dette lille program, men det virker kun én gang og jeg kan ikke finde ud af hvorfor.

<?php
// Definer variabler
$nRecord = 1;

function show_form()
{
  ?>
  <form method="POST" action="taller_2.php">
      <p><input type="submit" value="Næste" name="submit_next"></p>
  </form>
  <?
}

function vis_data($nFindRecord)
{
  echo "Tæller: $nFindRecord, ";
  echo date("G:i:s",time());
       
  show_form();
}

function submit_next()
{
  global $nRecord;
  $nRecord ++;
   
  vis_data($nRecord);
}

// ******** MAIN ********

if(isset($_POST['submit_next']))
{
  unset($submit_next);

  submit_next();
}
else
{
  vis_data($nRecord);
}
   
?>
Avatar billede xyborx Nybegynder
07. juli 2005 - 22:22 #1
Jeg er ikke helt sikker på at jeg har forstået spørgsmålet korrekt. Vil du have tælleren til at tælle en op for hver gang man submitter formularen? For så er du nødt til at gemme det i en variabel der ikke slettes ved hver sidevisning. Hver sidevisning svarer til en kørsel af programmet, og ligesom i C er du nødt til at gemme dine data et mere permanent sted for at kunne bruge dem igen ved næste kørsel.

Jeg foreslår at du læser lidt om sessions. Basalt set skal du køre session_start() som noget af det første ved hver visning (den sender en HTTP header, og den slags _skal_ sendes før dokumentet), og derefter kan du bruge $_SESSION array'et til at gemme data mellem visningerne.

Simpelt eksempel:
<?php
session_start();
if(!isset($_SESSION['counter']))
{
    $_SESSION['counter']=1;
}
echo('Du har set denne side '.$_SESSION['counter'].' gange');
$_SESSION++;
?>
Avatar billede bengun Novice
09. juli 2005 - 15:41 #2
Hej xyborx

Jeg har prøvet med SESSION, men det ser ikke ud til at løse noget. Jeg har prøvet dette lille eksempel, som heller ikke virker............

<?php
session_start();
   
  if(!isset($nCounter))
  {
      session_register("nCounter");
      $nCounter = 1;
  }
   
  echo "Antal besøg $nCounter ";
  echo date("G:i:s",time());

  $nCounter++;

?>
Avatar billede bengun Novice
09. juli 2005 - 15:45 #3
Jeg har også prøvet dit eksempel, men tælleren kommer aldrig til at indeholde andet en 1, uanset hvor mange gange jeg tyrker "Refresh" !!!!!!
Hvad kan der være galt ?????????
Avatar billede xyborx Nybegynder
09. juli 2005 - 16:05 #4
Hov.. I mit eksempel skal
$_SESSION++;
selvfølgelig laves om til
$_SESSION['counter']++;

I dit eksempel bruger du session_register(). Det vil kun virke på servere med register_globals=off. Det er bedre at bruge $_SESSION. Et andet problem kan være at du har slået cookies fra i din browser.
Avatar billede bengun Novice
09. juli 2005 - 23:39 #5
Det med $_SESSION['counter']++; fandt jeg selv, så ingen problemer der.......

Jeg har tjekket i min browse og jeg kan ikke finde noget med cookies. Jeg bruger IE 6.0, er der et specielt sted jeg skal finde det ??
Avatar billede bengun Novice
01. november 2006 - 12:53 #6
.
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