2010-07-30 5 views
0

Fondamentalement, c'est une page Web où quelqu'un appuie sur un bouton pour incrémenter la variable de sélection $. Globals et statiques ne semblent pas fonctionner. code ressemble à ceci:Je veux incrémenter une valeur à l'extérieur d'un bloc php

<?php 

    if(isset($_POST['next'])) 
    { 
     displaynext(); 
    } 
    else 
    { 

     global $image_folder = "/images/"; 

     echo "global declared"; 

     global $selection; 
     $selection = 1; 
    } 

    function displaynext() 
    { 
     $selection++; 

     if (file_exists($image_folder."/".$selection.".png")) { 

     echo "<img src=\"$image_folder/".$selection.".png\">"; 

    } 
    else { 

     echo "No next image was found for $selection in ".$image_folder."/".$selection.".png"; 

    } 

    ?> 


    <form action="<?=$_SERVER['PHP_SELF'];?>" method="post"> 
    <input type="submit" name="next" value="Next"> 
    </form> 

Répondre

3

Une fois que PHP fonctionne et la sortie est envoyée au client, le code ne fonctionnera que si la page est demandée à nouveau à partir du serveur. Vous pouvez créer un session variable et l'utiliser pour stocker la variable sur les demandes de page. Vous devez à nouveau accéder à la page ou effectuer une requête AJAX pour rappeler votre code PHP.

+0

suivi tutoriel dans votre réponse avons réussi, - merci! – tylercomp

0

utiliser Juste un autre élément de formulaire.

<input type=hidden name=selection value=1> 

Faites une vérification de bon sens comme is_numeric sur $_POST['selection'] avant d'afficher l'étiquette d'image. Si $_POST['selection'] est défini, incrémentez-le pour l'étiquette d'entrée ci-dessus.

Exemple complet:

<?php 
$selection = 0; 
$image_folder = "images/"; 
if (isset($_POST['selection'])) { 
    $userSelection = $_POST['selection']; 
    if (is_numeric($userSelection) && file_exists($image_folder . $userSelection)) $selection = $userSelection; 
} 

echo "<img src=\"images/" . $selection . ".png\">"; 

echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=post>"; 
echo "<input type=hidden name=selection value=\"" . ($selection + 1) . "\">"; 
echo "<input type=submit name=subnext value=\"Next\">"; 
0

Au lieu d'utiliser Global, pourquoi n'utilisez-vous pas un $_SESSION var?

0

Put:

global $selection 

dans votre fonction, donc:

global $selection; 
$selection++; 
Questions connexes