PHP - Valeur d'une variable non déterminée ?

Résolu
Hello !

Une petite question tout simple pour vous qui êtes des as de PHP (si, si, je le sais) ! lol

Bon, voilà, je découvre PHP ! Auparavant, le seul langage de programmation que j'ai eu l'occasion d'utiliser, c'est de l'ActionScript ! Or, en AS, lorsqu'une variable est indéterminée, sa valeur est automatiquement undefined.

Mais en PHP, je constate dans les manuels que cette valeur n'existe pas ! Je pense que NULL remplace celle-ci !

Cependant, je suis en train de construire un script dont les retour me font hésiter. La question que je me pose, c'est : en PHP, lorsqu'une variable n'est pas déterminée, quelle est sa valeur par défaut ? NULL ou false ?

Si je me pose cette question, c'est que i'ai créé une condition qui n'exécute son script interne que si la valeur de la variable mise en condition est false !

Or, le script concerné par cette condition est exécuté, ce qui n'est pas logique... et, là, je ne comprend pas ! ^^

Voilà pourquoi je fais appel à vos lumières !

Je joint mon script, au cas où...

<?php  
 //VARIABLES A DEFINIR -------------  
 $nameGallery = 'mariages';  
 $nbrImages = 179;  
 $nbrImagesPerLines = 5;  
 $nbrLinesPerPage = 5;  
 //VARIABLES PREDEFINIES -----------  
 $nbrImagesPerPage = $nbrImagesPerLines*$nbrLinesPerPage;  
 $folderGallery = 'galerie_'.$nameGallery;  
 $nbrLines = 0;  
 if(clicOnPrev == true){  
  echo '$clicOnPrev = true';  
  $numImageIndex = $numImagePrevPage;  
 }elseif(clicOnPrev == false){  
  echo '$clicOnPrev = false';  
  $numImageIndex = $numImageNextPage;  
 }  
 if($numImageIndex == NULL){  
  echo '$numImageIndex = null';  
  $numImageIndex = 1;  
 }  
 $numImageNextPage = $numImageIndex += $nbrImagesPerPage;  
 $numImagePrevPage = $numImageIndex -= $nbrImagesPerPage;  
 //FONCTIONS PREDEFINIES -----------  
 function defineStateNavigation($numImageIndex,$nbrImagesPerPage,$nameGallery,$numImagePrevPage,$numImageNextPage){  
  if($numImageIndex==1){  
   $stateNavigation = 'begin';  
  }elseif($numImageIndex>1 && $numImageIndex<$numImageIndex-$nbrImagesPerPage){  
   $stateNavigation = 'center';  
  }elseif($numImageIndex>=$numImageIndex-$nbrImagesPerPage){  
   $stateNavigation = 'end';  
  }  
  switch($stateNavigation){  
   case 'begin':  
    $GLOBALS['titleButtonPrev'] = 'Pas de page précédente';  
    $GLOBALS['titleButtonNext'] = 'Voir la page suivante';  
    $GLOBALS['classButtonPrev'] = 'butPrevGrey';  
    $GLOBALS['classButtonNext'] = 'butNext';  
    $GLOBALS['wayGalleryPrev'] = '#';  
    $GLOBALS['wayGalleryNext'] = 'index.php?contenu=visio&type='.$nameGallery.'&numImageIndex='.$numImageNextPage.'&clicOnPrev=false&clicOnNext=true';  
   break;  
   case 'center':  
    $GLOBALS['titleButtonPrev'] = 'Voir la page précédente';  
    $GLOBALS['titleButtonNext'] = 'Voir la page suivante';  
    $GLOBALS['classButtonPrev'] = 'butPrev';  
    $GLOBALS['classButtonNext'] = 'butNext';  
    $GLOBALS['wayGalleryPrev'] = 'index.php?contenu=visio&type='.$nameGallery.'&numImageIndex='.$numImagePrevPage.'&clicOnPrev=true&clicOnNext=false';  
    $GLOBALS['wayGalleryNext'] = 'index.php?contenu=visio&type='.$nameGallery.'&numImageIndex='.$numImageNextPage.'&clicOnPrev=false&clicOnNext=true';  
   break;  
   case 'end':  
    $GLOBALS['titleButtonPrev'] = 'Voir la page précédente';  
    $GLOBALS['titleButtonNext'] = 'Pas de page suivante';  
    $GLOBALS['classButtonPrev'] = 'butPrev';  
    $GLOBALS['classButtonNext'] = 'butNextGrey';  
    $GLOBALS['wayGalleryPrev'] = 'index.php?contenu=visio&type='.$nameGallery.'&numImageIndex='.$numImagePrevPage.'&clicOnPrev=true&clicOnNext=false';  
    $GLOBALS['wayGalleryNext'] = '#';  
   break;  
  }  
 }  
 function displayImages($numImageIndex,$nbrImagesPerPage,$nbrImagesPerLines,$folderGallery){  
  $endImage = $numImageIndex+$nbrImagesPerPage;  
  for($numImage = $numImageIndex; $numImage < $endImage; $numImage++){  
   ?>  
   <a class="lightbox" href="pages/<?php echo $folderGallery ?>/images/creapix_image_<?php printf('%03d',$numImage) ?>.jpg"><img class="miniature_galerie" src="pages/<?php echo $folderGallery ?>/miniatures/creapix_image_<?php printf('%03d',$numImage) ?>_miniature.jpg" /></a>  
   <?php  
   if(is_int($numImage/$nbrImagesPerLines)){  
    echo '<hr>';  
   }  
  }  
 }  
 function displayGalleryButtons($wayGalleryPrev,$wayGalleryNext,$classButtonPrev,$classButtonNext,$titleButtonPrev,$titleButtonNext){  
  ?>  
  <div class="buttonsText">  
   <a href="<?php echo $wayGalleryNext ?>" class="<?php echo $classButtonNext ?>" title="<?php echo $titleButtonNext ?>"></a>  
   <a href="<?php echo $wayGalleryPrev ?>" class="<?php echo $classButtonPrev ?>" title="<?php echo $titleButtonPrev ?>"></a>  
  </div>  
  <?php  
 }  
 //EVENEMENTS ---------------------  
 defineStateNavigation($numImageIndex,$nbrImagesPerPage,$nameGallery,$numImagePrevPage,$numImageNextPage);  
 displayImages($numImageIndex,$nbrImagesPerPage,$nbrLinesPerPage,$folderGallery);  
 displayGalleryButtons($wayGalleryPrev,$wayGalleryNext,$classButtonPrev,$classButtonNext,$titleButtonPrev,$titleButtonNext);  
?>  


C'est le script d'une galerie d'images en plusieurs pages. Le souci se situe au dessus, dans :

elseif(clicOnPrev == false){  
 echo '$clicOnPrev = false';  
 $numImageIndex = $numImageNextPage;  
} 


Le echo apparaît sur ma page, ce qui n'est pas logique vu que la valeur de clicOnPrev n'est définie que lorsqu'on appuie sur les boutons PREV ou NEXT!!

10 réponses

  1. Ok, merci pour vos réponses, je prend note ! (-;

    Pourquoi, les 3 égals ? Ca signifie "strictement égal", non ?

    2 ne suffisent pas pour tester le contenu de la variable ?
    0
    1. = : On attribue une valeur a une variable
      == : On vérifie si les valeurs sont équivalentes
      === : On vérifie si les valeurs sont équivalentes et de même type.
      0
    2. Merci, Maka ! (-;
      0
  2. pour tester une variable en php, il existe plusieurs moyen

    tester si la variable existe
    if(isset($var))

    tester ce que la variable retourne quelque chose
    if($var)

    tester si la variable retourne true ou false
    if($var === true)
    if($var === false)
    avec trois =

    tester si la variable est vide
    if(empty($var))
    0
    1. C'est la seule que je connais mais une variable qui tu a déclarer mais pas initialisée renvoi null, maisune variable de type POST ou GET ou GLOBAL ou autre de même style n'existe pas de base.
      0
      1. Ow, ok ! Merci, Skymax ! (-;

        C'est la seule méthode qui existe, j'imagine ?

        Ca me fait bizarre que ce ne soit pas la valeur null qui s'installe par défaut (comme undefined en ActionScript, le seul langage que je connaisse XD) !
        0
        1. Sinon pour répondre a ta question, ( oui je suis un gros feignant je n'ai pas lu ton code Oo ) pour tester si une variable existe tu peux toujours faire un isset genre pour une variable POST par exemple

          if (isset($_POST['mavariable']))
              $mavariable = $_POST['mavariable'];
          else
              $mavariable = "NotExisted";
          
          0
          1. On va dire que c'est parce que je n'ai pas pensé qu'il y avait une restriction ! ^^'
            0
            1. mais surtout je ne comprend pas du tout pourquoi tu utilise le php pour faire un diapo mais bon ...
              0
              1. PS : pourquoi le PHP n'est-il pas idéal pour faire une galerie ?
                0
                1. Je n'aurais pas "null", plutôt ??

                  Cela dit, moi et ma tête de linotte, on vient de réaliser que si je pose clicOnPrev sans le "$" devant, ça va pas le faire non plus ! :-s
                  0
                  1. si une variable n'est pas défini, du style $a; echo $a;
                    tu auras une jolie erreur : Undefined variable a;

                    Juste pour info le php n'est pas l'idéal pour faire une galerie

                    EDIT: puis c'est mieux si tu met
                    if($cliOnPrev == false)
                    Sans le dollar sa veut dire que c'est une constante.
                    0