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!!

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