limiter le nombre d'affichage

pingoo
Invité n'ayant pas de compte PHPfrance

02 juil. 2005, 23:16

Désolé oui j'ai mis $page mais ca ne fonctionne pas. :(
Comment dois-je coder le lien :?:

Mammouth du PHP | 19672 Messages

02 juil. 2005, 23:17

bon, là, il y a un problème, je n'ai que des portions de code,mais je ne vois pas ce que tu as pu modifier ailleurs, mets moi toutes les parties nécessaires pour que je sache comment te guider parce que là, j'avance à l'aveuglette.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pingoo
Invité n'ayant pas de compte PHPfrance

02 juil. 2005, 23:23

require_once("config_script_categorie.php"); 
$secteur_activite= $_POST['secteur_activite']; 
$lieu= $_POST['lieu']; 
$type_de_contrat=$_POST['type_de_contrat']; 
$parution=$_POST['parution_emploi']; 
$mots_cle=addslashes($_POST['mots_cle']); 
$date1= date("Y-m-d", strtotime("  -1 day"));  // aujourd'hui 
$date2= date("Y-m-d", strtotime("  -1 week"));  // 1semaine 
$date3= date("Y-m-d", strtotime("  -2 week"));  // 2semaine 
$date4= date("Y-m-d", strtotime("  -3 week"));  // 3semaine 
$date5= date("Y-m-d", strtotime("  -4 week"));  // 1mois 
$tri_date= "ORDER BY 'id' DESC"; //tri par date 
$select  = "SELECT secteur_activite, fonction, lieu, type_de_contrat, id, societe,  DATE_FORMAT(date, '%d.%m.%y') date, SUBSTRING(profil_rechercher,1,200) AS profil_rechercher, profil_entreprise, debut, salaire, contact, adresse_societe, web FROM fk_offre_emploi "; 
switch ($parution) { 
case "toutes": 
    $select .= "where date ";break; 
case "aujourdhui": 
    $select .= "where date > '". $date1 ."' ";break; 
case "1semaine": 
    $select .= "where date > '". $date2 ."' ";break; 
case "2semaines": 
    $select .= "where date > '". $date3 ."' ";break; 
case "3semaines": 
    $select .= "where date > '". $date4 ."' ";break; 
case "1mois": 
    $select .= "where date > '". $date5 ."' ";break; 
    } 
if ($mots_cle != "") { 
    $select .= "AND (secteur_activite LIKE '%". $mots_cle ."%' OR fonction LIKE '%". $mots_cle ."%' OR societe LIKE '%". $mots_cle ."%' OR profil_rechercher LIKE '%". $mots_cle ."%' OR profil_entreprise LIKE '%". $mots_cle ."%' OR reference LIKE '%". $mots_cle ."%' OR lieu LIKE '%". $mots_cle ."%' OR debut LIKE '%". $mots_cle ."%' OR salaire LIKE '%". $mots_cle ."%' OR contact LIKE '%". $mots_cle ."%' OR adresse_societe LIKE '%". $mots_cle ."%' OR type_de_contrat LIKE '%". $mots_cle ."%') "; 
    } 
$result = mysql_query($select) or die ('Erreur : '.mysql_error() ); 
$total = mysql_num_rows($result); 
/* Nombre de lignes qui seront affichés par page */ 
$na = 5; 
/* Calcul du nombre de pages. */ 
if($total >0) 
{ 
    $nb_pages = ceil($total/$na); 
}
/* On définit le point de départ pour la requête : 
Si le nombre a été envoyé en paramètre, on initialise notre 
départ avec, sinon le départ sera à 0 par défaut */ 
$depart = isset($_GET['page']) ? $_GET['page'] * $na : 0; 
$select .= " LIMIT ".$depart.", ".$na."";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
J'ai supprimé le lien car il ne me convennais pas du tout.
Merci pour ton aide

Mammouth du PHP | 19672 Messages

02 juil. 2005, 23:38

Ok, on va légèrement modifier la fin du scritp et je t'ai rajouté les liens après:
/* On définit le point de départ pour la requête :
Si le nombre a été envoyé en paramètre, on initialise notre
départ avec, sinon le départ sera à 0 par défaut */
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$depart = $page * $na;
$select .= " LIMIT ".$depart.", ".$na;
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );

/* Les liens */
if($page > 0)
{
?>
<a href="<?php echo($_SERVER['PHP_SELF']."?page=". $page - 1) ?>">Page précédente</a>
<?php
}
if($page < $nb_pages)
{
?>
<a href="<?php echo($_SERVER['PHP_SELF']."?page=". $page + 1) ?>">Page suivante</a>
<?php
}
?>
Comme ça, $page correspond à un chiffre alors qu'avant effectivement ça ne pouvait générer qu'une erreur.

Tu noteras que s'il n'y a pas de page précédente ou de page suivante, les liens correspondants ne seront pas affichés (logique mais il faut le programmer.).
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pingoo
Invité n'ayant pas de compte PHPfrance

02 juil. 2005, 23:49

Je ne comprend pas cela me donne comme URL 1 lorsque je clique sur suivant?

Mammouth du PHP | 19672 Messages

02 juil. 2005, 23:59

juste "1", rien d'autre ? Alore remplace le <?php echo($_SERVER['PHP_SELF']); ?> par l'url de ta page
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pingoo
Invité n'ayant pas de compte PHPfrance

03 juil. 2005, 00:05

Super la ca marche mais j'ai encore un petit souci, c'est que les conditions de recherche ne sont pas transmises :
$secteur_activite= $_POST['secteur_activite'];
$lieu= $_POST['lieu'];
$type_de_contrat=$_POST['type_de_contrat'];
$parution=$_POST['parution_emploi'];
$mots_cle=addslashes($_POST['mots_cle']);
Ce qui me donne :
Notice: Undefined index: secteur_activite in c:\program files\easyphp1-7\www\le journal des petites annonces\offres-emploi.php on line 59

Notice: Undefined index: lieu in c:\program files\easyphp1-7\www\le journal des petites annonces\offres-emploi.php on line 60

Notice: Undefined index: type_de_contrat in c:\program files\easyphp1-7\www\le journal des petites annonces\offres-emploi.php on line 61

Notice: Undefined index: parution_emploi in c:\program files\easyphp1-7\www\le journal des petites annonces\offres-emploi.php on line 62

Notice: Undefined index: mots_cle in c:\program files\easyphp1-7\www\le journal des petites annonces\offres-emploi.php on line 63

Comment peut on les transmettre?

Mammouth du PHP | 19672 Messages

03 juil. 2005, 00:10

Vérifie dans ton formulaire les noms de tes champs : est-ce que ça corrspond bien ? Éventuellement, mets des valeurs par défaut, et puis au niveau de la construction de ta requête, si aucun choix n'est sélectionné, il vaudrait mieux que tu n'aies pas ces clauses sinon tu vas avoir des surprises, mais bon, là, on change de problème. Lance un nouveau post sur la transmission des variables d'un formulaire.

Je crois que pour celui-là, on peut le mettre à [Résolu] ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pingoo
Invité n'ayant pas de compte PHPfrance

03 juil. 2005, 00:13

OK merci beaucoup pour ton aide et bonne soirée :P