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

Résolu
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -  
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
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!!
A voir également:

10 réponses

jojo150393 Messages postés 330 Date d'inscription   Statut Membre Dernière intervention   23
 
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
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   65
 
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
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   65
 
PS : pourquoi le PHP n'est-il pas idéal pour faire une galerie ?
0
jojo150393 Messages postés 330 Date d'inscription   Statut Membre Dernière intervention   23
 
mais surtout je ne comprend pas du tout pourquoi tu utilise le php pour faire un diapo mais bon ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   65
 
On va dire que c'est parce que je n'ai pas pensé qu'il y avait une restriction ! ^^'
0
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
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
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   65
 
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
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
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
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
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
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   65
 
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
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
= : 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
Gizmil Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   65
 
Merci, Maka ! (-;
0