page par page

patricedup
Invité n'ayant pas de compte PHPfrance

09 avr. 2006, 18:30

bonjour, voilà mon problème, un affichage page par page sur mon site mais voilà la 1ere page s'affiche bien, mais ensuite j'ai un problème d'url pour afficher les autres pages, je pert des parties de mon url qui est du type: http://www.monsite.com/fiche.php?page=c ... tiondivers
(les 2 variables marque et util sont stockés dans une session par la suite)
les liens que je généres sont du type:
http://www.monsite.com/fiche.php?page=comp&limit=8 par exemple
cette url me renvois sur la page par default de mon site.
cette page par default est la page default de mes pages include :roll:
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page2 = $path_parts["basename"];
$page = $page2.'?page=comp' ;
je cherche depuis cette semaine mais mes compétances en php sont quant même limité ! quelqu'un pourrait il me mettre sur la vois, merci.

:shock:

Mammouth du PHP | 19672 Messages

09 avr. 2006, 18:33

Un tuto peut-être ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

p
Invité n'ayant pas de compte PHPfrance

09 avr. 2006, 18:35

oui je l'ai vu :P , mais j'avais le même problème quant je l'ai testé.

Mammouth du PHP | 19672 Messages

09 avr. 2006, 18:39

Attentioun avec l'utilisation de PHP_SELF : les paramètres de l'url ne sont pas inclus. Pour ça, il faut faire une reconstruction dynamique de l'url en récupérant dans $_GET les paramètres et leurs valeurs respectives.

Comme je ne vois pas tout le code, j'ignore à quel endroit ça bafouille, mais cherche de ce coté là.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

patricedup
Invité n'ayant pas de compte PHPfrance

09 avr. 2006, 18:41

mon pb viens peut être de ma page principal avec les includes :
<div id="contenu">
	 <?php 
if (!isset($_GET['page'])) $page= 'default'; else $page= $_GET['page']; 
 switch($page)
{
case 'resultat': include ('resultat.php');break;
case 'comp': include ('comp.php');break;
default:   include ('default.php'); 
} 
?>
</div>

Invité
Invité n'ayant pas de compte PHPfrance

09 avr. 2006, 18:46

cette partie là ?
<?php
function displayNextPreviousButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo  '<table><tr>'."\n";
if($limite != 0) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="post">'."\n";
        echo  '<input type="submit" value="précédents">'."\n";
        echo  '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
}
if($limiteSuivante < $total) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="post">'."\n";
        echo  '<input type="submit" value="suivants">'."\n";
        echo  '<input type="hidden" value="'.$limiteSuivante.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
            
}
echo  '</tr></table>'."\n";
}
?>
j'ai fait un echo dans ma page de $page et il correspond bien a mon url.

Mammouth du PHP | 19672 Messages

09 avr. 2006, 19:26

Comment transmets-tu les paramètres de point de départ de la requête pour la page suivante ou précédente ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

09 avr. 2006, 19:44

les paramettre passe par url ex:
http://www.monsite.com/fiche.php?page=c ... tiondivers
je les met dans ma session:
<?php
session_start();
$_SESSION['id_machine'] = $_POST['id_machine'];
if (isset($_GET['marque']) && isset($_GET['util'])) {
$_SESSION['marque'] = $_GET['marque'] ;
$_SESSION['util'] = $_GET['util'] ;
?>
....
....
<?php
$nombre = 8;  

if (!$limite) $limite = 0; 
   
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page2 = $path_parts["basename"];
$page = $page2.'?page=comp' ;
echo $page ;
...
...
$select = 'SELECT count(id_article) FROM '.$table ;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
    

$verifLimite= verifLimite($limite,$total,$nombre);

if(!$verifLimite)  {
    $limite = 0;
}

$select = 'select * FROM '.$table. ' LIMIT '.$limite.','.$nombre ;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
?>
dans mon exemple j'ai même enlever de ma requete le WHERE je prend donc tous ce qu'il y a dans ma table.
<form id="form1" name="form1" method="post" action="fiche.php?page=resultat">
<?php
      while($row = mysql_fetch_array($result)) {
	
	$tabTitre = array('Marque','Model');
?>
//la suite du code:
<div>
<ul>
<li class="title"><a href="<? echo '../images/big/'.$row['photo']; ?> " class="tn" title="titre"><img src="<? echo '../images/'.$row['photo']; ?> " alt="" /></a></li>
<li class="title"><?php echo $tabTitre[0].': <span>'; echo($row['marque']); ?></span></li>
<li class="title"><?php echo $tabTitre[1].': <span>'; echo($row['model']); ?></span></li>
<li class="title"><span><a href="<?php echo 'fiche.php?page='.$row['fiche']; ?> ">Voir Fiche</a></span></li>
<li class="title">Selection: <label><input type="checkbox" name="id_article[]" value="<?php echo($row['id_article']); ?>" /></label></li>
</ul>
</div>

Mammouth du PHP | 19672 Messages

09 avr. 2006, 20:56

Relis donc le tuto que j'ai mentionné plus haut : m'est avis que tu l'as juste survolé en vitesse sans voir certains détails importants et donc sans le comprendre du tout. Ce n'est pas un script à adapter que j'ai mis dans ce tuto mais une méthodologie et une logique de fonctionnement et ça, tu pourrais t'en inspirer pour adapter ton propre code.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

patricedup
Invité n'ayant pas de compte PHPfrance

10 avr. 2006, 12:07

:D ça marche avec ton tuto cyrano, mais maintenant j'ai besoin de rajouter 2 choses:

1/ une clause where dans le comptage des resultats
$sql_nb = "SELECT COUNT(id_article) FROM $table"; 
j'ai testé:
$sql_nb = "SELECT COUNT(id_article) FROM $table WHERE marque=marque1 AND util=util2"; 
mais bon ça doit pas être la bonne syntax ?

2/ mon resulat se trouve dans une balise form avec des case à cocher qui me renvois vers une page de résultat qui compte le nombre de case cochée j'en suis pas encore là mais je pense qu'on pert les coches de page en page ?
:roll: