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

Résolu/Fermé
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - Modifié par Gizmil le 19/11/2011 à 13:16
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 19 nov. 2011 à 16:51
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 samedi 12 septembre 2009 Statut Membre Dernière intervention 29 juillet 2015 23
Modifié par jojo150393 le 19/11/2011 à 13:25
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 mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
Modifié par Gizmil le 19/11/2011 à 13:31
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 mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
19 nov. 2011 à 13:31
PS : pourquoi le PHP n'est-il pas idéal pour faire une galerie ?
0
jojo150393 Messages postés 330 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 29 juillet 2015 23
19 nov. 2011 à 13:31
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 mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
19 nov. 2011 à 14:02
On va dire que c'est parce que je n'ai pas pensé qu'il y avait une restriction ! ^^'
0
skymax406 Messages postés 215 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 22 avril 2015 24
19 nov. 2011 à 14:08
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 mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
Modifié par Gizmil le 19/11/2011 à 14:27
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 215 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 22 avril 2015 24
19 nov. 2011 à 14:31
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 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
19 nov. 2011 à 15:27
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 mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
Modifié par Gizmil le 19/11/2011 à 16:02
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 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
19 nov. 2011 à 16:27
= : 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 mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
19 nov. 2011 à 16:51
Merci, Maka ! (-;
0