2013-08-30 5 views
0

Bonjour, j'ai du mal à comprendre comment fonctionne la session. Je suis en train d'écrire un programme qui demandera à plusieurs reprises un certain nombre à saisir et à chaque fois que le numéro est entré dans le programme est d'imprimer:store variable session php

  1. ce nombre
  2. la somme de tous les chiffres saisis
  3. le compte en combien de fois je soumis

Ceci est mon code à ce jour:

<?php 
session_start(); 
if(isset($_session['count'])) 
{ 
    $_session['count'] = $count; 
}else{ 
    $_session['count'] = 0; 
} 
?> 

<html> 
    <head> 
     <title>number</Title> 
      <style> 
      </style> 
     <body> 
      <form action = "numbers.php" method = "post"> 
       Numbers: <input type "text" name = "number" size = "6"/> 
       <input type = "submit" value = "submit" name = "submit"/> 
       <p> 
      </form> 
     </body> 
    </head> 
</Html> 
<?php 
    if(isset($_POST["submit"])) 
    { 
     $number = $_POST['number']; 
     If (is_numeric($number)) 
     { 
      $count = $_session['count'] + $number; 
      print "Last number entered: ".$number; 
      print "<br>Total internal numbers: ".$count; 
     } 
    } 
?> 

Im essayant de stocker mes $count variables de sorte que chaque fois que je soumets délivre la somme totale des numéros est entré

+0

Pour votre information: '$ cnt = 0; 'then' isset ($ cnt) 'serait ** faux **! – undone

Répondre

0

Au début, vous utilisez variable non définie $ count . Modifier à:

if(!isset($_session['count'])) 
    $_session['count'] = 0; 

Puis ajouter une nouvelle ligne:

If (is_numeric($number)) 
{ 
    $count = $_SESSION['count'] + $number; 
    $_SESSION['count'] = $count; 
    print "Last number entered: ".$number; 
    print "<br>Total internal numbers: ".$count; 
} 

OU deuxième partie à modifier:

If (is_numeric($number)) 
{ 
    $_SESSION['count'] += $number; 
    print "Last number entered: ".$number; 
    print "<br>Total internal numbers: ".$_SESSION['count']; 
} 
+0

le premier si peut être soumis en toute sécurité à thedailywtf.com;) sérieusement, ne pouvez-vous pas penser à une meilleure mise en œuvre? ASTUCE: inverser le contrôle isset, de vrai à faux –

+0

Je viens d'éditer son code, maintenant j'ai la version courte. –

+0

merci cela aide beaucoup – user2732815

0
<?php 
    if(isset($_POST["submit"])) 
    { 
     $number = $_POST['number']; 
     If (is_numeric($number)) 
     { 
      $count = $_session['count'] + $number; 
      $_session['count'] = $count; 
      print "Last number entered: ".$number; 
      print "<br>Total internal numbers: ".$count; 
     } 
    } 
?> 
2

Vous définissez $_session['count'] = $count; avant d'avoir une variable appelée $count. Vous devez mettre à jour la valeur de la session après que vous avez défini $count comme:

$count = $_session['count'] + $number; 
$_session['count'] = $count; 

Vous pouvez remplacer le haut de votre script avec:

if(!isset($_session['count'])) 
{ 
    $_session['count'] = 0; 
} 
+1

+1 pour l'explication de POURQUOI le code ne fonctionne pas comme le demande le demandeur. – Fluffeh

+1

ah ok merci beaucoup :) – user2732815

0

est ici l'exemple de travail. [TESTE]

Vous devez attribuer $_SESSION['count']=$count;

<?php 
session_start(); 
//Code commented as not required. 
/*if(isset($_session['count'])) 
{ 
    $_session['count'] = $count; 
}else{ 
    $_session['count'] = 0; 
} 
*/?> 

<html> 
<head> 
    <title>number</Title> 
    <style> 
    </style> 
    <body> 
    <form action = "" method = "post"> 
     Numbers: <input type "text" name = "number" size = "6"/> 
     <input type = "submit" value = "submit" name = "submit"/> 
     <p> 
    </form> 
    </body> 
</head> 
</Html> 
<?php 
if(isset($_POST["submit"])) 
{ 
    $number = $_POST['number']; 
    if (is_numeric($number)) 
    { 

     $count = $_SESSION['count'] + $number; 
     $_SESSION['count']=$count; 
     print "Last number entered: ".$number; 
     print "<br>Total internal numbers: ".$count; 
    } 
} 
?> 
+0

Ne dites pas que le code au début n'est pas nécessaire. '$ count = $ _SESSION ['count'] + $ number;' passe par une notice d'index indéfinie la première fois que le script est appelé. – insertusernamehere