Page 1 sur 1

Variable volatile...

Posté : 11 févr. 2007, 20:14
par andr0
Hello,

Avant toute chose je vous remercie pour le travail que vous faites.

J'ai un petit problème avec une de mes variables, je m'explique :
je donne une valeur à ma variable "$pages" lorsque quelqu'un clique sur un des liens suivants

Code : Tout sélectionner

<li><a href="prestations.php?pages=10">titi</a></li> <li><a href="prestations.php?pages=11">tata</a></li>
puis je teste cette variable afin de déterminer quel est le répertoire contenant les photos à afficher, comme suit :

Code : Tout sélectionner

<?php echo $pages; if($pages != 0) { switch ($pages) { case 10: $dir = "photo/titi/"; //Repertoire des images break; case 11: $dir = "photo/tata/"; //Repertoire des images break; default: echo "Désolé il n'y a pas d'image"; break; } echo $dir; include('vision_jjs.php'); } else { echo "problème ...:("; echo $pages; } ?>
cela fonctionne "relativement bien" le probleme est le suivant :

--> Lorsque je clique sur photo suivante, le script me perd la valeur de la variable "$pages", si je donne une valeur par défaut a "$pages",le script m'écrase la valeur reçue lors du "clique" sur le lien apres avoir appuyé sur image suivante...et lui redonne la valeur par défaut ...

je me doute bien que ce doit être un problème de déclaration de variable .. mais mes connaissances en php sont assez faible ...

afin de mieux illustrer mon problème, je vous invite à vous rendre sur cette page : http://andr0.free.fr/prestations.php et sur http://andr0.free.fr

merci d'avance ...

Posté : 11 févr. 2007, 20:45
par Ajoloca
Bonjour,

Quand tu passes une variable avec un lien de type <a></a>, tu la passes dans l'URI, c'est à dire par la méthode GET.

Tu dois dans le script appelé (dans ton cas prestations.php) la récupérer avant de pouvoir l'utiliser
<?php
   // Récupération de la variable transmise $pages 
   $pages = isset($_GET['pages']) ? $_GET['pages'] : '';
   echo $pages;
   
      if(!empty($pages))
         { 
.........

Posté : 11 févr. 2007, 21:18
par andr0
Merci Ajoloca,

Mais malheusement cela ne fonctionne pas ...

J'ai mis ta proposition sur le lien donné dans mon premier post, si tu cliques par exemples sur lien 1 , en bas une image s'affiche, puis clique sur la flèche "suivante" et ragarde le résultat ...

merci

as tu une autre idée ?

Posté : 11 févr. 2007, 21:24
par Ajoloca
Re,

C'est pas une question d'idées. Si tu regardes ce qui se trouve sous ton lien
http://andr0.free.fr/prestations.php?visref=9w0w1
tu remarques que ça n'a pas grande chose à voir avec les pages.

Regarde bien commet tu les construits, tes liens.
Si tes liens ont la bonne valeur (je doute vu ce que tu cherches à faire) c'est pas la variable "pages" que tu dois récupérer mais "visref"

Posté : 11 févr. 2007, 21:50
par andr0
Euh ... Visuref est la variable du n° de la miniature (le code n'est pas de moi :oops: )

pour moi $pages indique juste le répertoire de destination, testé lors du clique sur un des lien présent sur la page "prestations.php"...
il est vrai j'aurai pu l'appeler $rep ...

Code : Tout sélectionner

http://andr0.free.fr/prestations.php?visref=9w0w1
j'essaye de savoir comment faire pour que une fois que la première image s'affiche, j'arrive à afficher la seconde... et ne plus tombé sur

Code : Tout sélectionner

echo "problème ...";
(arrive si $pages est vide ... donc non mémorisation de la valeur de $pages)

mais malheusement je ne sais pas comment faire pour résoudre ce probleme...


++

Posté : 12 févr. 2007, 00:08
par Ajoloca
Re,

Il faut être plus explicite dans tes messages d'erreur, ça c'est la première chose.

Ensuite, sans un bout de code on ne pourra pas t'aider davantage. Tu dois voir comment tu sais (quelle variable ou autre) t'indique la prochaine image.

Est-ce dans le même répertoire ?, dans un autre ? qui te l'indique ? comment tu récupères cette info, etc...

Une fois que tu as tout ça il suffit de le faire en PHP mais la première chose c'est de bien connaitre la structure et le déroulement fonctionnel.

Posté : 12 févr. 2007, 00:10
par Jules Petibidon
hello,

pour ne plus avoir "probleme..." il faut que pages soit $défini. il est défini lorsque tu appele ta page la premiere fois, mais tu dois ensuite la refaire passer avec tes références d'image, pour que le script suivant puisse la recevoir.

pour cela tu as deux possibilités.

1) garder $page comme variable de session. méthode la plus simple à partir du moment ou on sait se servir des sessions.

2) repasser ta variable $page dans tes liens qui référencent tes images :
$lien = 'http://andr0.free.fr/prestations.php?visref=9w0w1&page=' . $page
par exemple.

Posté : 12 févr. 2007, 01:01
par andr0
Re à vous,

Il est vrai Ajoloca que le fait d'être plus explicite pourrai faciliter la résolution de ce problème. :wink: je vais essayer.

Comment je vois le problème :

1) j'arrive à visualiser le contenu d'un répertoire
2) je vois le chemin grâce à l'affichage de la variable $dir
3) si je clique sur une des flèches "précedente" ou "suivante" je retombe sur l'affichage de problème ..., j'en déduit que $pages perd sa valeur lors de la réactualisation de la page "prestations.php"...


voici la structure du site :

racine --> prestations.php
racine --> vision_jjs.php

racine/photo/divers repertoires
(tous est visible sur http://andr0.free.fr il n'y a pas d'index)


voici le code contenu dans vision_jjs.php
<?php

//PLF http://www.jejavascript.net/
//JJS VISIONNEUSE 2005
 $htim=200; 					//hauteur maxi des images
 $lgim=300; 					//largeur maxi des images
 $nbmin=2;						//nombre de miniatures // 0 si pas de miniatures
 $maxmin=90;					//largeur ou hauteur maxi des miniatures
 $nomfic= array();
 $cpt2=0;
 $page_nom="prestations.php";

// Ouvre le dossier $dir, et liste tous les fichiers
if (is_dir($dir)) {

   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
	   if ($file != "." && $file != ".."){
	   $info= pathinfo($file);
	   $info=$info['extension'];           
		   if ($info == "gif" || $info == "jpg" || $info == "png" || $info == "swf" || $info == "psd" || $info == "bmp" || $info == "JPG"){
		   
		$cpt2++;$nomfic[$cpt2]=$file;
       }}}
       closedir($dh);
	   sort($nomfic, SORT_STRING);//tri
   }
}//****************
if (empty($visref)) { //1er passage *****************************************
$cpt=$cpt2;
$numero=0;
$nummin=0;

}
else { //passages suivants *************************************************
$maref = explode("w",$visref);//nom des espaces : 
$cpt = $maref[0];		//nombre d'image 			
$numero= $maref[1];		//image en cours 
$nummin= $maref[2];		//1ere miniature

if ($numero >=  $cpt) $numero=0;
if ($numero <0 ) $numero=$cpt-1;
if ($nummin >=  $cpt) $nummin=0;
if ($nummin >  $cpt-$nbmin) $nummin=$cpt-$nbmin;
if ($nummin <0 ) $nummin=$cpt-$nbmin;
}//***************************



	  //*** PAGE ***
  		print '<table width="'.$lgim.'" border="0" align="center"><tr><td align="left">'; 
	   	print '<a href="'.$page_nom.'?visref='.$cpt.'w'.($numero-1).'w'.($numero-1).'&page='.$pages.' ">
		<img src="images/flchg.gif" width="20" height="16" border="0"></a>'; 
      	print '</td><td align="right">';
		$byjjs='<br><div align="center"><font size="1" face="Verdana, sans-serif">
		<a href="http://www.jejavascript.net" target="_blank">Je JavaScript</a></font><div>';
	   	print '<a href="'.$page_nom.'?visref='.$cpt.'w'.($numero+1).'w'.($numero+1).'&page='.$pages.' ">
		<img src="images/flchd.gif" width="20" height="16" border="0"></a>';
      	print'</td></tr></table>';
  		print '<table width="'.$lgim.'" border="0" align="center"><tr>
      		<td height="'.($htim+10).'" align="center" valign="top">'; 
	  
		  $fic_lu=$dir.$nomfic[$numero];// réduction de l image et mise en page		  
		  $tail=GetImageSize($fic_lu);
		  
		  if ($tail[1]>$htim) 
			  {
			  $tail[0]=round($tail[0]/($tail[1]/$htim));
			  $tail[1]=$htim;
			  }
		  if ($tail[0]>$lgim) 
			  {
			  $tail[1]=round($tail[1]/($tail[0]/$lgim));
			  $tail[0]=$lgim;
			  }
		  
		print '&nbsp;<img src="'.$fic_lu.'" width="'.$tail[0].'" height="'.$tail[1].'" name="image">';
	  	print '</td></tr></table>';
		
  	if ($nbmin !=0) 
	{//miniatures
  		
		print '<table width="'.$lgim.'" border="0" align="center"><tr>';
		$reculmin=$nummin-1;
			if ($reculmin <0) $reculmin=0;
					print '<td><a href="'.$page_nom.'?visref='.$cpt.'w'.($numero).'w'.$reculmin.'&page='.$pages.'">
		<img src="images/flchg.gif" width="20" height="16" border="0"></a></td>'; 

			for ($i=0; $i<$nbmin; $i++) 
				{
		  		print '<td height="'.($maxmin+10).'" align="center" valign="middle">';
				$fic_lu=$dir.$nomfic[$nummin+$i];// réduction de l image et mise en page		  
				$tail=GetImageSize($fic_lu);
				  
					if ($tail[1]>$maxmin) 
						{
						$tail[0]=round($tail[0]/($tail[1]/$maxmin));$tail[1]=$maxmin;
						}
				    if ($tail[0]>$maxmin) 
					   {
					   $tail[1]=round($tail[1]/($tail[0]/$maxmin));
					   $tail[0]=$maxmin;
					   }
				  
				print '<a href="'.$page_nom.'?visref='.$cpt.'w'.($nummin+$i).'w'.($nummin+$i).'&page='.$pages.' "><img src="'.$fic_lu.'" width="'.$tail[0].'" height="'.$tail[1].'" name="image"></a>';	  
			  	print  '</td>';
				}
		
		print '<td><a href="'.$page_nom.'?visref='.$cpt.'w'.($numero).'w'.($nummin+1).'&page='.$pages.' ">
		<img src="images/flchd.gif" width="20" height="16" border="0"></a></td>';
		print '</tr></table>'; 
	}	
	echo $byjjs;

?> 
 
//attribution de la valeur souhaitée à $pages
<li><a href="prestations.php?pages=1">Lien 1</a></li>
<li><a href="prestations.php?pages=2">Lien 2</a></li>
...
<?php 

$pages = isset($_GET['pages']) ? $_GET['pages'] : '';
   echo $pages;
   
      if(!empty($pages)) 
			{
			switch ($pages)
				{
				case 1:
					$dir = "photo/bancs_test/";//Repertoire des images
					break;	
				case 2:
					$dir = "photo/cablage/";
					break;	
			
				default:
				        echo "Désolé il n'y a pas d'image";
				        break;
				}
				echo $dir;		
				include('vision_jjs.php');
			}
			else
			{
			echo "problème ...";
			echo $pages;
			}
?>
Jules Petibidon, j'ai placé ce que tu m'as dit:
 
//extrait de vision_jjs.php
print '<td><a href="'.$page_nom.'?visref='.$cpt.'w'.($numero).'w'.($nummin+1).'&page='.$pages.' ">
<img src="images/flchd.gif" width="20" height="16" border="0"></a></td>';

mais malheusement toujours le meme problème, impossible d'afficher la seconde image contenu dans le repertoire.

j'espère avoir été plus clair et plus précis.

Encore merci de me consacrer un peu de votre temps.

Posté : 12 févr. 2007, 01:27
par sadeq
Regardes bien le nom du paramètre que tu passes dans les liens : suivant et précédent

On voit le nom "&page=" alors que ça devrait être "&pages=" (avec S)

Posté : 12 févr. 2007, 01:35
par andr0
Arf sadeq, ça marche, ch'ui con :)
merci à toi.

Tiens encore une question:

--> Est-il possible que lors du changement de photo, d'éviter que la page remonte et comme ca on évite de devoir redescendre pour voir la totalité de la visionneuse ... ?

merci à tous

Posté : 12 févr. 2007, 14:01
par sadeq
En plaçant un "signet" à l'emplacement des photos puis l'inclure dans l'URL appellée comme ça:
Si le signet est nommé "photos" l'URL d'appel devient :
"http://....../page.php#photos?paramètres"

Pour placer un signet on utilise la balise <A name="nom du signet"> </a>

Exemple:

Code : Tout sélectionner

<a name="photos"> </a> ... code pour afficher les photos ...

Posté : 12 févr. 2007, 14:47
par andr0
ah ok ok :) merci à toi :)

je vous remercie tous pour cette super aide :pouce: :pouce: