varible qui se perd dans une boucle!!!

Eléphant du PHP | 170 Messages

21 janv. 2008, 23:03

Bonjour à tous,
depuis un formulaire je choisi un prix mini et un prix maxi pour selection different objet dans une bdd.
Ma variable $prixmini et prixmaxi proviennent donc du formulaire precedent

J'ai un affichage a limitation de resultat par page. Seulement voila des que je demande la deuxieme page, mes variables sont perdues!!!
quelqu'un peu m'aider?
voici mon code:
<?php

	  // on se connecte à notre base  
$base = mysql_connect ('localhost', 'xxxx', 'yyyy' , 'bdd');  
mysql_select_db ('bdd', $base);

$prixmaxi = $_POST['prixmaxi'];
$prixmini = $_POST['prixmini'];  
  
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages  
$sql = "SELECT COUNT(*) AS id FROM bdd WHERE prix between '$prixmini' AND '$prixmaxi'";  

 
// on exécute cette requête  
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

// on récupère le nombre d'éléments à afficher  
$nb_total = mysql_fetch_array($resultat); 
$nb_affichage_par_page = 4 ;
 


// on teste si ce nombre de vaut pas 0  
if (($nb_total = $nb_total[0]) == 0)
		   { 
		   ?>
           
      <div id="Layer1" style="position:relative; top:-200px; left:120px; z-index:2; width: 800; height: 50;"> 
        <table width="700" height="300"  cellpadding="0" cellspacing="0">
          <tr> 
            <td width="700" height="40" align="center" valign="middle">il n'y 
              a pas de réponse</td>
          </tr>
          <tr> 
            <td width="700" height="80" align="center" valign="middle"> <form method = "post" action = "nosbiens.php">
                <strong></strong> 
                <input type="submit" value="retour à la page precedente" />
              </form></td>
          </tr>
        </table>
      </div> 
		  
  
		   <?php 
           }  
           else 
		   { 
		   
		   $toto = ceil($nb_total/4);
		   			 
		   ?>
		      <!-- insertion d'un calque C3 dans la ligne 2 -->
	   
      <div id="Layer1" style="position:relative; top:-230px; left:150px; z-index:2; width: 800; height: 10;"> 
        <table width="700" height="10" border="0" cellpadding="0" cellspacing="0">
          <tr> 
            <td width="620" valign="top"><h6 align="justify" class="sezfermilieu"> 
                <?php echo $nb_total ?> annonce(s)correspondent à votre recherche</h6></td>
            <td width="80" valign="top"></td>
          </tr>
        </table>
      </div>
	  
	  <?php


	  // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0  
if (!isset($_GET['debut'])) $_GET['debut'] = 0; 
   
    
   
// Préparation de la requête avec le LIMIT  
$sql = 'SELECT id, type, prix, ref, descriptif, lien_image1 , fond, agexve, cdc, designation FROM bdd WHERE prix between '."$prixmini".' AND '."$prixmaxi".' ORDER BY prix LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;  
 
// on exécute la requête  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
	  
	  
		 
		   while ($data = mysql_fetch_array($req) ) // debut de la boucle
		   {		       
  
  			 
	  ?>

			  <!-- insertion d'un calque C1 dans la ligne 2 -->
              
      <div id="Layer1" style="position:relative; top:-220px; left:180px; z-index:1; width: 700; height: 300;"> 
        <table width="700" height="300" border="2" cellpadding="0" cellspacing="0"<?php echo '<body background="image page/'.$data['fond'].'"'; ?>>
          <tr> 
            <td width="50" height="40">n°<?php echo $data['id']; ?> </td>
            <td width="100" height="40"><?php echo '<img src="image/'.$data['agexve'].'">';?></td>
            <td width="50" height="40" align="center"><?php echo '<img src="image/'.$data['cdc'].'">';?></td>
            <td width="50" height="40">ref: <?php echo $data['ref']; ?></td>
            <td width="300" height="40">d&eacute;signation:<?php echo $data['designation']; ?></td>
            <td width="150" height="40">Prix: <?php echo $data['prix']; ?>€</td>
          </tr>
          <tr> 
            <td colspan="4"><?php echo '<img src="./'.$data['id'].'/'.$data['lien_image1'].'">';?></td>
            <?php $descri = $data['descriptif'];
			$descriptif = wordwrap($descri, 45, "\n", true); ?>
            <td colspan="2"><?php echo $descriptif; ?></td>
          </tr>
          <tr> 
            <td height="30" colspan="4"> 
              <?php  // liens d'ouverture de page "en savoir plus" suivant ID de l'annonce
						            switch ($data['id'])
							        {
							        case 1: ?>
              <a href="id1.php" target="_blank">En savoir plus</a> 
              <?php break;
					                case 2: ?>
              <a href="id2.php" target="_blank">En savoir plus</a> 
              <?php break;
							        case 3: ?>
              <a href="id3.php" target="_blank">En savoir plus</a> 
              <?php break;
					                case 4: ?>
              <a href="id4.php" target="_blank">En savoir plus</a> 
              <?php break;
							        case 5: ?>
              <a href="id5.php" target="_blank">En savoir plus</a> 
              <?php break;
					                case 6: ?>
              <a href="id6.php">En savoir plus</a> 
              <?php break;
							        case 7: ?>
              <a href="id7.php">En savoir plus</a> 
              <?php break;
					                case 8: ?>
              <a href="id8.php">En savoir plus</a> 
              <?php break;
							        case 9: ?>
              <a href="id9.php">En savoir plus</a> 
              <?php break;
					                case 10: ?>
              <a href="id10.php">En savoir plus</a> 
              <?php break;
							        case 11: ?>
              <a href="id11.php">En savoir plus</a> 
              <?php break;
					                case 12: ?>
              <a href="id12.php">En savoir plus</a> 
              <?php break;
							        case 13: ?>
              <a href="id13.php">En savoir plus</a> 
              <?php break;
					                case 14: ?>
              <a href="id14.php">En savoir plus</a> 
              <?php break;
							        case 15: ?>
              <a href="id15.php">En savoir plus</a> 
              <?php break;
					                case 16: ?>
              <a href="id16.php">En savoir plus</a> 
              <?php break;
							        case 17: ?>
              <a href="id17.php">En savoir plus</a> 
              <?php break;
					                case 18: ?>
              <a href="id18.php">En savoir plus</a> 
              <?php break;
							        case 19: ?>
              <a href="id19.php">En savoir plus</a> 
              <?php break;
					                case 20: ?>
              <a href="id20.php">En savoir plus</a> 
              <?php break;
							        case 21: ?>
              <a href="id21.php">En savoir plus</a> 
              <?php break;
					                case 22: ?>
              <a href="id22.php">En savoir plus</a> 
              <?php break;
							        case 23: ?>
              <a href="id23.php">En savoir plus</a> 
              <?php break;
					                case 24: ?>
              <a href="id24.php">En savoir plus</a> 
              <?php break;
							        case 25: ?>
              <a href="id25.php">En savoir plus</a> 
              <?php break;
					                case 26: ?>
              <a href="id26.php">En savoir plus</a> 
              <?php break;
							        case 27: ?>
              <a href="id27.php">En savoir plus</a> 
              <?php break;
					                case 28: ?>
              <a href="id28.php">En savoir plus</a> 
              <?php break;
							        case 29: ?>
              <a href="id29.php">En savoir plus</a> 
              <?php break;
					                case 30: ?>
              <a href="id30.php">En savoir plus</a> 
              <?php break;
							        case 31: ?>
              <a href="id31.php">En savoir plus</a> 
              <?php break;
					                case 32: ?>
              <a href="id32.php">En savoir plus</a> 
              <?php break;
							        case 33: ?>
              <a href="id33.php">En savoir plus</a> 
              <?php break;
					                case 34: ?>
              <a href="id34.php">En savoir plus</a> 
              <?php break;
							        case 35: ?>
              <a href="id35.php">En savoir plus</a> 
              <?php break;
					                case 36: ?>
              <a href="id36.php">En savoir plus</a> 
              <?php break;
							        case 37: ?>
              <a href="id37.php">En savoir plus</a> 
              <?php break;
					                case 38: ?>
              <a href="id38.php">En savoir plus</a> 
              <?php break;
							        case 39: ?>
              <a href="id39.php">En savoir plus</a> 
              <?php break;
					                case 40: ?>
              <a href="id40.php">En savoir plus</a> 
              <?php break;
							        case 41: ?>
              <a href="id41.php">En savoir plus</a> 
              <?php break;
					                case 42: ?>
              <a href="id42.php">En savoir plus</a> 
              <?php break;
							        case 43: ?>
              <a href="id43.php">En savoir plus</a> 
              <?php break;
					                case 44: ?>
              <a href="id44.php">En savoir plus</a> 
              <?php break;
							        case 45: ?>
              <a href="id45.php">En savoir plus</a> 
              <?php break;
					                case 46: ?>
              <a href="id46.php">En savoir plus</a> 
              <?php break;
							        case 47: ?>
              <a href="id47.php">En savoir plus</a> 
              <?php break;
					                case 48: ?>
              <a href="id48.php">En savoir plus</a> 
              <?php break;
							        case 49: ?>
              <a href="id49.php">En savoir plus</a> 
              <?php break;
					                case 50: ?>
              <a href="id50.php">En savoir plus</a> 
              <?php break;
							        case 51: ?>
              <a href="id51.php">En savoir plus</a> 
              <?php break;
					                case 52: ?>
              <a href="id52.php">En savoir plus</a> 
              <?php break;
							        case 53: ?>
              <a href="id53.php">En savoir plus</a> 
              <?php break;
					                case 54: ?>
              <a href="id54.php">En savoir plus</a> 
              <?php break;
							        case 55: ?>
              <a href="id55.php">En savoir plus</a> 
              <?php break;
					                case 56: ?>
              <a href="id56.php">En savoir plus</a> 
              <?php break;
							        case 57: ?>
              <a href="id57.php">En savoir plus</a> 
              <?php break;
					                case 58: ?>
              <a href="id58.php">En savoir plus</a> 
              <?php break;
							        case 59: ?>
              <a href="id59.php">En savoir plus</a> 
              <?php break;
					                case 60: ?>
              <a href="id60.php">En savoir plus</a> 
              <?php break;
							        case 61: ?>
              <a href="id61.php">En savoir plus</a> 
              <?php break;
					                case 62: ?>
              <a href="id62.php">En savoir plus</a> 
              <?php break;
							        case 63: ?>
              <a href="id63.php">En savoir plus</a> 
              <?php break;
					                case 64: ?>
              <a href="id64.php">En savoir plus</a> 
              <?php break;
							        case 65: ?>
              <a href="id65.php">En savoir plus</a> 
              <?php break;
					                case 66: ?>
              <a href="id66.php">En savoir plus</a> 
              <?php break;
							        case 67: ?>
              <a href="id67.php">En savoir plus</a> 
              <?php break;
					                case 68: ?>
              <a href="id68.php">En savoir plus</a> 
              <?php break;
							        case 69: ?>
              <a href="id69.php">En savoir plus</a> 
              <?php break;
					                case 70: ?>
              <a href="id70.php">En savoir plus</a> 
              <?php break;
							        case 71: ?>
              <a href="id71.php">En savoir plus</a> 
              <?php break;
					                case 72: ?>
              <a href="id72.php">En savoir plus</a> 
              <?php break;
							        case 73: ?>
              <a href="id73.php">En savoir plus</a> 
              <?php break;
					                case 74: ?>
              <a href="id74.php">En savoir plus</a> 
              <?php break;
							        case 75: ?>
              <a href="id75.php">En savoir plus</a> 
              <?php break;
					                case 76: ?>
              <a href="id76.php">En savoir plus</a> 
              <?php break;
							        case 77: ?>
              <a href="id77.php">En savoir plus</a> 
              <?php break;
					                case 78: ?>
              <a href="id78.php">En savoir plus</a> 
              <?php break;
							        case 79: ?>
              <a href="id79.php">En savoir plus</a> 
              <?php break;
					                case 80: ?>
              <a href="id80.php">En savoir plus</a> 
              <?php break;
							        }
							        ?>
            </td>
            <td height="30" colspan="2">&nbsp;</td>
          </tr>
        </table>
      </div>
      <!-- fermeture du calque C1 -->
      <?php
	  
	    } // fermeture de la boucle
		
		
		// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($req); 
   //echo '</table><br />'; 
 
   // on affiche enfin notre barre
   ?>
   <table width="372" border="3">
  <tr>
    <td width="358" height="40" align="center" valign="middle"><?php echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';?></td>
  </tr>
</table>

 <?php 
     
}  
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($resultat);  
// on ferme la connexion à la base de données.  
mysql_close (); 
?>
    </td>		
	 
	 </tr> <!-- fin ligne 2 du tableau principal "bord de page" avec une colonnes 100% de la hauteur de page -->
 
</table>  
le message d'erreur est un undefined index et le nom des variables mini et maxi

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2008, 23:08

Normal puisque ces variables proviennent du formulaire lorsque tu cliques sur un "lien" de page les variables POST (du formulaire) n'existent plus.

Il te faut soit passer ces variables dans l'url soit en session pour les réutiliser sur une autre pages de la pagination.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 170 Messages

21 janv. 2008, 23:20

pourrais tu me donner un exemple ou me donner des indications, je ne vois pas du tout ce qu'il faut faire
merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 janv. 2008, 23:30

tu as ça
$prixmaxi = $_POST['prixmaxi'];
$prixmini = $_POST['prixmini']; 
Ok pour la récupération tout juste après la validation du formulaire.
Après clic sur le lien ces variables n'existent plus donc message erreur.

Tu peux commencer par les tester (existence) et récupérer soit une variable de session soit GET.

Exemple avec GET
$prixmaxi = (isset($_POST['prixmaxi'])) ? $_POST['prixmaxi']    : $_GET['prixmaxi']; 
Pour la syntaxe regarde ICI
Pour vérifier aussi l'existence de la variable GET avant utilisation :
$prixmaxi = (isset($_POST['prixmaxi'])) ? $_POST['prixmaxi']    : ((isset($_GET['prixmaxi'])) ? $_GET['prixmaxi']    : null);
Ne pas oublier d'ajouter $prixmaxi au lien de pagination en tant que variable

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 2144 Messages

22 janv. 2008, 00:34

Petite remarque tu as un fichier php par page de détails à afficher ? Je pense que tu te complique la vie ;)

Eléphant du PHP | 170 Messages

22 janv. 2008, 07:06

merci Truc, pour le moment ça ne fonctionne toujours pas mais je n'ai pas modifier ceci:
"Ne pas oublier d'ajouter $prixmaxi au lien de pagination en tant que variable"...
Peux tu m'indiquer ou cela ce situe?

Et pour ICLO, comment puis je reduire tout ma page de lien??

<?php

function barre_navigation ($nb_total, 
      $nb_affichage_par_page,
      $debut, 
      $nb_liens_dans_la_barre) { 
 
   $barre = ''; 
   
   // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT 
   if ($_SERVER['QUERY_STRING'] == "") { 
      $query = $_SERVER['PHP_SELF'].'?debut='; 
   } 
   else { 
      $tableau = explode ("debut=", $_SERVER['QUERY_STRING']); 
      $nb_element = count ($tableau); 
      if ($nb_element == 1) { 
         $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut='; 
      } 
      else { 
         if ($tableau[0] == "") { 
            $query = $_SERVER['PHP_SELF'].'?debut='; 
         } 
         else { 
            $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut='; 
         } 
      } 
   } 
   
   // on calcul le numéro de la page active 
   $page_active = floor(($debut/$nb_affichage_par_page)+1);  
   // on calcul le nombre de pages total que va prendre notre affichage 
   $nb_pages_total = ceil($nb_total/$nb_affichage_par_page); 
   
   // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin) 
   // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11 
   if ($nb_liens_dans_la_barre%2==0) { 
      $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1; 
      $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
	   
   } 
   else { 
      $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2)); 
      $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2)); 
   } 
   
   if ($cpt_deb1 <= 1) { 
      $cpt_deb = 1; 
      $cpt_fin = $nb_liens_dans_la_barre; 
   } 
   elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) { 
      $cpt_deb = $cpt_deb1; 
      $cpt_fin = $cpt_fin1; 
   } 
   else { 
      $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1; 
      $cpt_fin = $nb_pages_total; 
   } 
 
   if ($nb_pages_total <= $nb_liens_dans_la_barre) { 
      $cpt_deb=1; 
      $cpt_fin=$nb_pages_total; 
   } 
   
   // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page 
   if ($cpt_deb != 1) { 
      $cible = $query.(0); 
      $lien = '<A HREF="'.$cible.'"><<</A>&nbsp;&nbsp;'; 
   } 
   else { 
      $lien=''; 
   } 
   $barre .= $lien; 
 
   // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active 
   for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) { 
      if ($cpt == $page_active) { 
         if ($cpt == $nb_pages_total) { 
            $barre .= $cpt; 
         } 
         else { 
            $barre .= $cpt.'&nbsp;-&nbsp;'; 
         } 
      } 
      else { 
         if ($cpt == $cpt_fin) { 
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
            $barre .= "'>".$cpt."</A>"; 
         } 
         else { 
            
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
            $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;"; 
         } 
      } 
   } 
   
   $fin = ($nb_total - ($nb_total % $nb_affichage_par_page)); 
   if (($nb_total % $nb_affichage_par_page) == 0) { 
      $fin = $fin - $nb_affichage_par_page; 
   } 
 
      // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation 
   if ($cpt_fin != $nb_pages_total) { 
      $cible = $query.$fin; 
      $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">>></A>'; 
   } 
   else { 
      $lien=''; 
   } 
   $barre .= $lien; 
 
   return $barre;   
}  

	  // on se connecte à notre base  
$base = mysql_connect ('localhost', 'xxxx', yyyy' , 'bdd');  
mysql_select_db ('bdd', $base);

$prixmaxi = (isset($_POST['prixmaxi'])) ? $_POST['prixmaxi']    : $_GET['prixmaxi']; 
$prixmini = (isset($_POST['prixmini'])) ? $_POST['prixmini']    : $_GET['prixmini'];   
  
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages  
$sql = "SELECT COUNT(*) AS id FROM bdd WHERE prix between '$prixmini' AND '$prixmaxi'";  

 
// on exécute cette requête  
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

// on récupère le nombre d'éléments à afficher  
$nb_total = mysql_fetch_array($resultat); 
$nb_affichage_par_page = 4 ;
 


// on teste si ce nombre de vaut pas 0  
if (($nb_total = $nb_total[0]) == 0)
		   { 
		   ?>
           
      <div id="Layer1" style="position:relative; top:-200px; left:120px; z-index:2; width: 800; height: 50;"> 
        <table width="700" height="300"  cellpadding="0" cellspacing="0">
          <tr> 
            <td width="700" height="40" align="center" valign="middle">il n'y 
              a pas de réponse</td>
          </tr>
          <tr> 
            <td width="700" height="80" align="center" valign="middle"> <form method = "post" action = "nosbiens.php">
                <strong></strong> 
                <input type="submit" value="retour à la page precedente" />
              </form></td>
          </tr>
        </table>
      </div> 
		  
  
		   <?php 
           }  
           else 
		   { 
		   
		   $toto = ceil($nb_total/4);
		   			 
		   ?>
		      <!-- insertion d'un calque C3 dans la ligne 2 -->
	   
      <div id="Layer1" style="position:relative; top:-230px; left:150px; z-index:2; width: 800; height: 10;"> 
        <table width="700" height="10" border="0" cellpadding="0" cellspacing="0">
          <tr> 
            <td width="620" valign="top"><h6 align="justify" class="sezfermilieu"> 
                <?php echo $nb_total ?> annonce(s)correspondent à votre recherche</h6></td>
            <td width="80" valign="top"></td>
          </tr>
        </table>
      </div>
	  
	  <?php


	  // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0  
if (!isset($_GET['debut'])) $_GET['debut'] = 0; 
   
    
   
// Préparation de la requête avec le LIMIT  
$sql = 'SELECT id, type, prix, ref, descriptif, lien_image1 , fond, agexve, cdc, designation FROM bdd WHERE prix between '."$prixmini".' AND '."$prixmaxi".' ORDER BY prix LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;  
 
// on exécute la requête  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
	  
	  
		 
		   while ($data = mysql_fetch_array($req) ) // debut de la boucle
		   {		       
  
  			 
	  ?>

			  <!-- insertion d'un calque C1 dans la ligne 2 -->
              
      <div id="Layer1" style="position:relative; top:-220px; left:180px; z-index:1; width: 700; height: 300;"> 
        <table width="700" height="300" border="2" cellpadding="0" cellspacing="0"<?php echo '<body background="image page/'.$data['fond'].'"'; ?>>
          <tr> 
            <td width="50" height="40">n°<?php echo $data['id']; ?> </td>
            <td width="100" height="40"><?php echo '<img src="image/'.$data['agexve'].'">';?></td>
            <td width="50" height="40" align="center"><?php echo '<img src="image/'.$data['cdc'].'">';?></td>
            <td width="50" height="40">ref: <?php echo $data['ref']; ?></td>
            <td width="300" height="40">d&eacute;signation:<?php echo $data['designation']; ?></td>
            <td width="150" height="40">Prix: <?php echo $data['prix']; ?>€</td>
          </tr>
          <tr> 
            <td colspan="4"><?php echo '<img src="./'.$data['id'].'/'.$data['lien_image1'].'">';?></td>
            <?php $descri = $data['descriptif'];
			$descriptif = wordwrap($descri, 45, "\n", true); ?>
            <td colspan="2"><?php echo $descriptif; ?></td>
          </tr>
          <tr> 
            <td height="30" colspan="4"> 
              <?php  // liens d'ouverture de page "en savoir plus" suivant ID de l'annonce
						            switch ($data['id'])
							        {
							        case 1: ?>
              <a href="id1.php" target="_blank">En savoir plus</a> 
              <?php break;
					                case 2: ?>
              <a href="id2.php" target="_blank">En savoir plus</a> 
              <?php break;
							        case 3: ?>
              <a href="id3.php" target="_blank">En savoir plus</a> 
              <?php break;
					                case 4: ?>
              <a href="id4.php" target="_blank">En savoir plus</a> 
              <?php break;
							        case 5: ?>
              <a href="id5.php" target="_blank">En savoir plus</a> 
              <?php break;
					                case 6: ?>
              <a href="id6.php">En savoir plus</a> 
              <?php break;
							        case 7: ?>
              <a href="id7.php">En savoir plus</a> 
              <?php break;
					                case 8: ?>
              <a href="id8.php">En savoir plus</a> 
              <?php break;
							        case 9: ?>
              <a href="id9.php">En savoir plus</a> 
              <?php break;
					                case 10: ?>
              <a href="id10.php">En savoir plus</a> 
              <?php break;
							        case 11: ?>
              <a href="id11.php">En savoir plus</a> 
              <?php break;
					                case 12: ?>
              <a href="id12.php">En savoir plus</a> 
              <?php break;
							        case 13: ?>
              <a href="id13.php">En savoir plus</a> 
              <?php break;
					                case 14: ?>
              <a href="id14.php">En savoir plus</a> 
              <?php break;
							        case 15: ?>
              <a href="id15.php">En savoir plus</a> 
              <?php break;
					                case 16: ?>
              <a href="id16.php">En savoir plus</a> 
              <?php break;
							        case 17: ?>
              <a href="id17.php">En savoir plus</a> 
              <?php break;
					                case 18: ?>
              <a href="id18.php">En savoir plus</a> 
              <?php break;
							        case 19: ?>
              <a href="id19.php">En savoir plus</a> 
              <?php break;
					                case 20: ?>
              <a href="id20.php">En savoir plus</a> 
              <?php break;
							        case 21: ?>
              <a href="id21.php">En savoir plus</a> 
              <?php break;
					                case 22: ?>
              <a href="id22.php">En savoir plus</a> 
              <?php break;
							        case 23: ?>
              <a href="id23.php">En savoir plus</a> 
              <?php break;
					                case 24: ?>
              <a href="id24.php">En savoir plus</a> 
              <?php break;
							        case 25: ?>
              <a href="id25.php">En savoir plus</a> 
              <?php break;
					                case 26: ?>
              <a href="id26.php">En savoir plus</a> 
              <?php break;
							        case 27: ?>
              <a href="id27.php">En savoir plus</a> 
              <?php break;
					                case 28: ?>
              <a href="id28.php">En savoir plus</a> 
              <?php break;
							        case 29: ?>
              <a href="id29.php">En savoir plus</a> 
              <?php break;
					                case 30: ?>
              <a href="id30.php">En savoir plus</a> 
              <?php break;
							        case 31: ?>
              <a href="id31.php">En savoir plus</a> 
              <?php break;
					                case 32: ?>
              <a href="id32.php">En savoir plus</a> 
              <?php break;
							        case 33: ?>
              <a href="id33.php">En savoir plus</a> 
              <?php break;
					                case 34: ?>
              <a href="id34.php">En savoir plus</a> 
              <?php break;
							        case 35: ?>
              <a href="id35.php">En savoir plus</a> 
              <?php break;
					                case 36: ?>
              <a href="id36.php">En savoir plus</a> 
              <?php break;
							        case 37: ?>
              <a href="id37.php">En savoir plus</a> 
              <?php break;
					                case 38: ?>
              <a href="id38.php">En savoir plus</a> 
              <?php break;
							        case 39: ?>
              <a href="id39.php">En savoir plus</a> 
              <?php break;
					                case 40: ?>
              <a href="id40.php">En savoir plus</a> 
              <?php break;
							        case 41: ?>
              <a href="id41.php">En savoir plus</a> 
              <?php break;
					                case 42: ?>
              <a href="id42.php">En savoir plus</a> 
              <?php break;
							        case 43: ?>
              <a href="id43.php">En savoir plus</a> 
              <?php break;
					                case 44: ?>
              <a href="id44.php">En savoir plus</a> 
              <?php break;
							        case 45: ?>
              <a href="id45.php">En savoir plus</a> 
              <?php break;
					                case 46: ?>
              <a href="id46.php">En savoir plus</a> 
              <?php break;
							        case 47: ?>
              <a href="id47.php">En savoir plus</a> 
              <?php break;
					                case 48: ?>
              <a href="id48.php">En savoir plus</a> 
              <?php break;
							        case 49: ?>
              <a href="id49.php">En savoir plus</a> 
              <?php break;
					                case 50: ?>
              <a href="id50.php">En savoir plus</a> 
              <?php break;
							        case 51: ?>
              <a href="id51.php">En savoir plus</a> 
              <?php break;
					                case 52: ?>
              <a href="id52.php">En savoir plus</a> 
              <?php break;
							        case 53: ?>
              <a href="id53.php">En savoir plus</a> 
              <?php break;
					                case 54: ?>
              <a href="id54.php">En savoir plus</a> 
              <?php break;
							        case 55: ?>
              <a href="id55.php">En savoir plus</a> 
              <?php break;
					                case 56: ?>
              <a href="id56.php">En savoir plus</a> 
              <?php break;
							        case 57: ?>
              <a href="id57.php">En savoir plus</a> 
              <?php break;
					                case 58: ?>
              <a href="id58.php">En savoir plus</a> 
              <?php break;
							        case 59: ?>
              <a href="id59.php">En savoir plus</a> 
              <?php break;
					                case 60: ?>
              <a href="id60.php">En savoir plus</a> 
              <?php break;
							        case 61: ?>
              <a href="id61.php">En savoir plus</a> 
              <?php break;
					                case 62: ?>
              <a href="id62.php">En savoir plus</a> 
              <?php break;
							        case 63: ?>
              <a href="id63.php">En savoir plus</a> 
              <?php break;
					                case 64: ?>
              <a href="id64.php">En savoir plus</a> 
              <?php break;
							        case 65: ?>
              <a href="id65.php">En savoir plus</a> 
              <?php break;
					                case 66: ?>
              <a href="id66.php">En savoir plus</a> 
              <?php break;
							        case 67: ?>
              <a href="id67.php">En savoir plus</a> 
              <?php break;
					                case 68: ?>
              <a href="id68.php">En savoir plus</a> 
              <?php break;
							        case 69: ?>
              <a href="id69.php">En savoir plus</a> 
              <?php break;
					                case 70: ?>
              <a href="id70.php">En savoir plus</a> 
              <?php break;
							        case 71: ?>
              <a href="id71.php">En savoir plus</a> 
              <?php break;
					                case 72: ?>
              <a href="id72.php">En savoir plus</a> 
              <?php break;
							        case 73: ?>
              <a href="id73.php">En savoir plus</a> 
              <?php break;
					                case 74: ?>
              <a href="id74.php">En savoir plus</a> 
              <?php break;
							        case 75: ?>
              <a href="id75.php">En savoir plus</a> 
              <?php break;
					                case 76: ?>
              <a href="id76.php">En savoir plus</a> 
              <?php break;
							        case 77: ?>
              <a href="id77.php">En savoir plus</a> 
              <?php break;
					                case 78: ?>
              <a href="id78.php">En savoir plus</a> 
              <?php break;
							        case 79: ?>
              <a href="id79.php">En savoir plus</a> 
              <?php break;
					                case 80: ?>
              <a href="id80.php">En savoir plus</a> 
              <?php break;
							        }
							        ?>
            </td>
            <td height="30" colspan="2">&nbsp;</td>
          </tr>
        </table>
      </div>
      <!-- fermeture du calque C1 -->
      <?php
	 
  
	    } // fermeture de la boucle
		
		
		// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($req); 
   //echo '</table><br />'; 
 
   // on affiche enfin notre barre
   ?>
   <table width="372" border="3">
  <tr>
    <td width="358" height="40" align="center" valign="middle"><?php echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';?></td>
  </tr>
</table>

 <?php 
     
}  
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($resultat);  
// on ferme la connexion à la base de données.  
mysql_close (); 
?>

ViPHP
ViPHP | 2144 Messages

22 janv. 2008, 12:33

C'est la dedondance de code qui n'est pas optimale.

Tu vas vraiment avoir autant de fichier php, que tu auras de détails ? Les informations que tu vas affichée proviennent d'où ? elles sont statique dans le fichier ou proviennent d'une base de donnée ?
Imagine maintenant que quand tu auras 100 pages de détails, tu souhaites modifier la mise en page de celles-ci, ça te fera 100 pages à modifier. Enorme, non ?
Il vaudrait mieux stocker les informations dans une base de donnée, si ce n'est pas encore le cas, et avoir un seul fichier qui affichera les détails, en fonction d'un paramêtre (ici $data['id'])
Avantage un seul fichier php à créer, et surtout à modifier le cas échéans.

A ce moment là, la question de la liste de lien, devient très simple, et le switch n'a plus aucune raison d'être.
on obtient un lien
print "<a href=\"details.php?id=".$data['id']."\">lien</a>";
Pour ton problème de variable, comme il t'a été dit précédement, les variables reçues par un script, ne sont pas conservées dans les scripts qui le suivent. Tu dois donc continuer à transmettre ces variables au script suivant pour qu'il puisse les utiliser à son tour.
Par exemple, en les passant dans les url de tes lien.
Une autre possibilité, c'est de les stocker dans une session afin qu'elles soient accessible à tous les autres scripts qui s'exécuteront par la suite.
Une petite recherche sur les sessions en php, sur le site, ou avec google te donnera tous les exemples nécessaires.

Eléphant du PHP | 170 Messages

22 janv. 2008, 14:06

donc si je comprends bien , je pourrais par exemple ecrire les valeurs de prix mini et maxi dans une table de ma bdd lors du choix par le formulaire, et ainsi pouvoirs les recuperer a tout moment sans avoir ce probleme de perte de valeurs?
A+

ViPHP
ViPHP | 2144 Messages

22 janv. 2008, 16:29

Non, ce n'est vraiment pas une bonne idée puisque tu n'as pas besoin de conserver ces valeurs après que le visiteur ait quitté le site. (et que pour mettre en place un truc du genre, il faudra identifié le visiteur, et surtout vider cette table de temps à autre)

Il faut bien séparer les problèmes.
Pour ce qui est de tes variables, comme on te l'a dit tu dois transmettres ces variables d'un script à l'autre.
Pour le moment, tu as une page A où le visiteur encode ces valeurs, et elles sont transmises à la page B qui les reçoit bien. Si tu veux que la page C qui est appelée après la page B reçoivent ces variables, il faut bien que tu fasses en sorte de les lui envoyer.
Soit en les transmettant dans l'url, soit les stockant dans une session.
As-tu déja regardé comment fonctionne une session ? comment y stocker des variables et comment les récupérer ?

Pour ce que je t'ai expliqué plus haut, c'est tout simplement comment revoir l'organisation de tes pages, afin d'avoir quelque chose que tu puisse maintenir.

Ps: prends bien le temps de lire les réponses qu'on te donne et surtout de répondre aux questions qu'on te posent, sans plus d'information, on ne peut pas te conseiller efficacement...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 janv. 2008, 16:38

Oui mais c'est la solution la moins optimale... en effet inutile d'aller requêter la base pour ces informations que tu peux avoir dans l'url ou session.

Il faut comprendre un script avant de l'utiliser ;)

il te faut trouver les lignes correspondantes aux liens. en début de fonction "barre_navigation" et ajouter les paramètres de prixmini et maxi dans le genre :
$query = $_SERVER['PHP_SELF'].'?prixmaxi='.$prixmaxi.'&prixmini='.$prixmini.'&';

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 170 Messages

23 janv. 2008, 20:13

bon ça avance!!! grace à vos explication.
j'utilise les variables de sessions, c'est hyper pratique!
une derniere dont je n'arrive pas a me depatouiller:
$sql = "SELECT id, type, prix, ref, descriptif, lien_image1 , fond, agexve, cdc, designation FROM bdd WHERE type = '$type' AND prix between '$prixmini' AND  '$prixmaxi' ORDER BY prix LIMIT '".$_GET['debut'].'","'$nb_affichage_par_page;  
j'ai cette erreur:
unexpected T_VARIABLE
je trouve pas ce qui ne vas pas

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 janv. 2008, 21:15

une variable qui se balade en fin de ligne sans concaténation :idea:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 170 Messages

24 janv. 2008, 13:43

ça y est ! j'ai compris certaines choses....
merci de votre patience a tous