Bonjour à tous,

Voici mon problème. Le site internet de la société dans laquelle je travail à été développé par un prestataire externe. Depuis de nombreuses semaines, nous avons un soucis (nous l'avons toujours eu depuis la création du site...) auquel notre prestataire n'a jamais trouvé une solution. Aprés une multitude de conflit, nous n'avons plus aucun contact avec ce prestataire...

Ayant les bases en PHP, je cherches à résoudre le soucis afin d'éviter les coûts supplémentaires.

Le soucis :

Nous avons 3 champs de recherche sous forme de combos. Le résultats obtenu s'affiche sur plusieurs pages (1-2-3...Etc). Les pages 1,2 fonctionnent parfaitement, cependant à partir de la page 3, nous avons des résultats complétements faux

Voici le code PHP concerné :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
require_once("application_top.php");
require_once("template/class/mysqlClass.php");
require_once("template/class/paginationClass.php");
 
?>
<h1><img src="template/images/h1-catalogue.png"></h1>
<br /><br />
<?php
  // print_r($_SESSION);
		if(!empty($_POST)) {
                    $_SESSION['recherche'] = array();
                }
                if(!empty($_SESSION['recherche'])) {
                    $recherche = $_SESSION['recherche'];
                    //echo $recherche;
                } else {
		$recherche = "";
 
		if (!empty($_GET['tarif'])) { 
		$tarif = explode("-", $_GET['tarif']);
		} else {
		$tarif = explode("-", $_POST['tarif']);
		}
 
		$tarif_min =  $tarif[0]; // tarif min
		$tarif_max =  $tarif[1]; // tarif max
		//echo $tarif_min." / ".$tarif_max;
		if (!empty($_GET['type'])) { 
		$recherche .= "AND type LIKE '%".$_GET['type']."%'";	}
		if (!empty($_GET['periode'])) { 
		$recherche .= " AND date_debut LIKE '%".$_GET['periode']."%'";	}
		if (!empty($_GET['tarif'])) { 
		$recherche .= " AND tarif > ".$tarif_min." AND tarif < ".$tarif_max."";	}
 
		if (!empty($_POST['type'])) { 
		$recherche .= " AND type LIKE '%".$_POST['type']."%'";	}
		if (!empty($_POST['periode'])) { 
		$recherche .= " AND month(date_debut)=".$_POST['periode'];	}
		if (!empty($_POST['tarif'])) { 
		$recherche .= " AND tarif > ".$tarif_min." AND tarif < ".$tarif_max."";	}
 
		//if (empty($recherche)) { $recherche = '';	}
		$_SESSION['recherche'] = $recherche;
                }
				/* Calcul du nombre total d'entrées $total dans la table posts */	
		$sql1 = new DB();
		$query1 = "SELECT COUNT(*) FROM catalogue AS c LEFT JOIN catalogue_dates AS cd ON c.id = cd.catalogue_id WHERE c.id!=0 ".$recherche." ORDER BY date_debut ASC";
		//echo $query1;
		$sql1->query($query1);
		while ($pagine = $sql1->next_record()) {
		$total = $pagine[0];
		}
 
 
		/* Déclaration des variables */
		$epp = 5; // nombre d'entrées à afficher par page (entries per page)
		$countp = ceil($total/$epp); // calcul du nombre de pages $countp (on arrondit à l'entier supérieur avec la fonction ceil() )
 
		/* Récupération du numéro de la page courante depuis l'URL avec la méthode GET */
		if(!isset($_GET['p']) || !is_numeric($_GET['p']) ) // si $_GET['p'] n'existe pas OU $_GET['p'] n'est pas un nombre (petite sécurité supplémentaire)
			$current = 1; // la page courante devient 1
		else
		{
			$page = intval($_GET['p']); // stockage de la valeur entière uniquement
			if ($page < 1) $current=1; // cas où le numéro de page est inférieure à 1 : on affecte 1 à la page courante
			elseif ($page > $countp) $current=$countp; //cas où le numéro de page est supérieur au nombre total de pages : on affecte le numéro de la dernière page à la page courante
			else $current=$page; // sinon la page courante est bien celle indiquée dans l'URL
		}
 
		/* $start est la valeur de départ du LIMIT dans notre requête SQL (est fonction de la page courante) */
		$start = ($current * $epp - $epp);
 
		$test_id = array();
 
			$sql = new DB();
				$query = "SELECT distinct * FROM catalogue AS c LEFT JOIN catalogue_dates AS cd ON c.id = cd.catalogue_id WHERE c.id!=0 ".$recherche." ORDER BY date_debut ASC LIMIT $start, $epp";
			//print_r($query);
			$sql->query($query);
			while ($cata = $sql->next_record()) {
 
 
		if (in_array($cata['0'], $test_id)) {
			//echo "deja present";
		} else {
		array_push($test_id, $cata['0']);
		//print_r($test_id);
 
?>
Voilà, si vous avez une piste, je suis preneur.

Merci beaucoup