Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2011, 15h00   #1
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 54
Points : 9
Points : 9
Par défaut Bug de pagination

Bon voila je me suis déjà adresser a vous il y a quelque jours pour un problème de moteur de recherche et vous m'avez vraiment aidé mais je me retrouve de nouveau confronté à une difficulté que je n'arrive pas a surmonter. Voila après avoir fais le moteur de recherche on ma demander d'y intégrer une liste déroulante qui permettrait de choisir le nombre de résultat par page . ça j'ai fait mais le seul problème et la pagination j'ai bien le nombre de résultat mais j'ai qu'une page j'ai essayer différente méthode mon script arrive a calculer le nombre de page nécessaire pour afficher tout les résultat mais quand je clique sur le numéro de page j'ai des erreurs pourriez vous m'aidez svp? =D

Voici le html


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<link rel="stylesheet" Type="text/css" Href="stylesheet.css">
 
<Title>XXX</title>
 
 
<Body>
 
<h2>XXXXXX</h2>
 
<form method="POST" action="recherche.php" align="center">
<h5>Veuillez entrer le nom du produit ou sa référence</h5>
<input  type="text" name="critere"><br /> 
<h5>Nombre de résultat par page</h5> 
  <select name="choix"  >
    <option value="5" selected="selected">5</option>
    <option value="10">10</option>
    <option value="20">20</option>
  </select><br><br>
<input type="submit" value="Recherche"/>
</form>


et voici le php

Code :
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
<?php
$host = "localhost";
 
$user = "xxxxx";
 
$password = "xxxx";
 
$bdd = "XXXXX";
 
$connexion = @ mysql_connect($host, $user,$password) or exit("Impossible de se connecter !") ;
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
 
// Numero de page (1 par défaut)
if( isset($_GET['page']) && is_numeric($_GET['page']) )
	$page = $_GET['page'];
else
	$page = 1;
 
// Nombre d'info par page
$pagination = $_POST['choix'];
// Numéro du 1er enregistrement à lire
$limit_start = 0;
$crit=$_POST['critere'];
// Préparation de la requête
$sql = "SELECT * FROM produit
		WHERE LIBELLE_PRODUIT LIKE '%".$crit."%'
		or DESCRIPTION LIKE '%".$crit."%' or REFERENCE_PRODUIT LIKE '%".$crit."%' ORDER BY REFERENCE_PRODUIT ASC LIMIT $limit_start, $pagination";
 
// Requête SQL
$resultat = mysql_query($sql);
 
// Traitement et affichage des données
if (mysql_num_rows($resultat) > 0){
echo '<table align="center" border="2" bordercolor="red">';
	echo '<tr><th>Image</th><th>Référence</th><th>Libellé</th><th>Prix TTC</th><th>Prix HT</th><th>Description</th></tr>';
while ( $r = mysql_fetch_assoc($resultat) ) {
	echo '<tr>';
		echo '<td height="22" align="center"><a href="'.$r['GRANDE_IMAGE_SITE_ORIGINE'].'"><img src="'.$r['PETITE_IMAGE_SITE_ORIGINE'].'" high=70 width=70/></a></td>';
		echo '<td height="22" align="center">'.$r['REFERENCE_PRODUIT'].'</td>';
		echo '<td height="22" align="center">'.$r['LIBELLE_PRODUIT'].'</td>';
		echo '<td height="22" align="center">'.$r['PRIX_TTC'].'</td>';
		echo '<td height="22" align="center">'.$r['PRIX_HT'].'</td>';
		echo '<td height="22" align="center">'.$r['DESCRIPTION'].'</td>';
		echo '</tr>';
	}
	echo '</table>';
} else {
	echo "<p>Aucun enregitrement ne correspond</p>";
}
	/* ICI VOTRE CODE NORMAL */
	/* Affichage d'un élément */
 
 
 
// Nb d'enregistrement total
$nb_total = mysql_query("SELECT * FROM produit
		WHERE LIBELLE_PRODUIT LIKE '%".$crit."%'
		or DESCRIPTION LIKE '%".$crit."%' or REFERENCE_PRODUIT LIKE '%".$crit."%'");
$nb_total = mysql_num_rows($nb_total);
 
 
// Pagination
$nb_pages = ceil($nb_total / $pagination);
 
echo '<p>[ Page :';
// Boucle sur les pages
for ($i = 1 ; $i <= $nb_pages ; $i++) {
	if ($i == $page )
		echo " $i";
	else
		echo " <a href=\"?page=$i\">$i</a> ";
}
echo ' ]</p>';
 
?>
je ne sais vraiment pas quoi faire pour que les résultats suivant s'affichent sur les pages =(
hotwheals est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h54   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonjour,

Peux-tu préciser quelles sont les erreurs ?
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h06   #3
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 54
Points : 9
Points : 9
Bonjour ,en fait quand je clique sur le numéro d'une page au lieu d'avoir les autre résultat j'obtient et de plus je n'arrive pas a faire de bouton précédent suivant

Citation:
Notice: Undefined index: choix in C:\Program Files\EasyPHP-5.3.6.0\www\Electromodel\recherche.php on line 20

Notice: Undefined index: critere in C:\Program Files\EasyPHP-5.3.6.0\www\Electromodel\recherche.php on line 23

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.6.0\www\Electromodel\recherche.php on line 33

Aucun enregitrement ne correspond

Warning: Division by zero in C:\Program Files\EasyPHP-5.3.6.0\www\Electromodel\recherche.php on line 64
[ Page : ]

Suite a une mauvaise manipulation j'ai mis le sujet en résolu =s désolé.
hotwheals est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 19h18   #4
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 568
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonjour,

Le message t'indique que tu essaies de récupérer les paramètres choix et critere qui ont été postés.

Or, quand tu crées tes liens, tu ne passes qu'un paramètre via GET.

Tu peux t'inspirer de cette source pour corriger : http://php.developpez.com/telecharge...tat-de-requete
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 19h27   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
pour ne pas perdre en route (après pagination) les infos de ton formulaire (choix, critere), le mieux est de les mettre en session.
D'autre part, ta pagination ne fonctionne pas !

Code :
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
<?php session_start(); // a mettre tout en haut de page !
// ...
// -------------
// Numero de page (1 par défaut)
if( isset($_GET['page']) && is_numeric($_GET['page']) )
	$page = $_GET['page'];
else
	$page = 1;
// -------------
// Nombre d'info par page
if(isset($_SESSION['choix']) && is_numeric($_SESSION['choix'])) {
	$nb_par_page = $_SESSION['choix'];
} else {
	$nb_par_page = 5; // nombre par defaut
}
if(isset($_POST['choix']) && is_numeric($_POST['choix'])) {
	$_SESSION['choix'] = $_POST['choix'];
	$nb_par_page = $_SESSION['choix'];
}
// -------------
// critere de recherche
if(isset($_POST['critere']) && $_POST['critere']!='') {
	$_SESSION['critere'] = $_POST['critere'];
}
	$crit = $_SESSION['critere'];
// -------------
// nombre total repondant a la recherche
$NbreTotal_query 	= "SELECT COUNT(*) AS nbreTotal FROM produit ".
			" WHERE (".
			" LIBELLE_PRODUIT LIKE '%".$crit."%' ".
			" or DESCRIPTION LIKE '%".$crit."%' ".
			" or REFERENCE_PRODUIT LIKE '%".$crit."%' ".
			");";
$NbreTotal_result 	= mysql_query($NbreTotal_query) or die('Erreur SQL :<br />'.$NbreTotal_query.'<br />'.mysql_error());
$NbreTotal_row 		= mysql_fetch_array($NbreTotal_result);
$NbreTotal_nombre 	= $NbreTotal_row['nbreTotal'];
// -------------
// nombre de pages a creer
	$nb_pages = ceil($NbreTotal_nombre / $nb_par_page);
// -------------
// Numéro du 1er enregistrement à lire
// On calcule le numero du premier message qu on prend pour le LIMIT de MySQL (pagination)
$num_debut 	= ($page-1) * $nb_par_page;
// -------------
// Préparation de la requête
	$rech_query 	= "SELECT * FROM produit ".
			" WHERE (".
			" LIBELLE_PRODUIT LIKE '%".$crit."%' ".
			" or DESCRIPTION LIKE '%".$crit."%' ".
			" or REFERENCE_PRODUIT LIKE '%".$crit."%' ".
			") ".
			" ORDER BY REFERENCE_PRODUIT ASC ".
			" LIMIT ".$num_debut.",".$nb_par_page.";";
	$rech_result 	= mysql_query($rech_query) or die('Erreur SQL :<br />'.$rech_query.'<br />'.mysql_error());
// -------------
while ($rech_row = mysql_fetch_array($rech_result))
{
// AFFICHAGE des resultats
 
// .....
 
}
// -------------
// PAGINATION
// -------------
// page precedente
if($page!=1) {
	echo ' <a href="?page='.($page-1)'">préc.</a> ';
}
// liens vers chacune des pages
if($nb_pages > 1) { 
	for ($p=1; $p<=$nb_pages; $p++)
	{
		if ($p == $page) { echo ' <b>'.$p.'</b> '; }
		else { echo ' <a href="?page='.$p'">'.$p.'</a> '; }
	}
// page suivante
if($page!=$nb_pages) {
	echo ' <a href="?page='.($page+1)'">suiv.</a> ';
}
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h15   #6
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 54
Points : 9
Points : 9
je sais que ma pagination de fonctionne pas et c'est bien ça le problème^^
Après j'aurais le code que tu me passe c'est comme si t'envoyer un traité de philo a quelqu'un qui en a jamais fais moi je suis que novice en php alors que j'ai essayer de capter ton code (bien commenter d'ailleurs ) j'ai rien compris..parce que tout mon code marche c'est juste que je n'arrive pas a faire de pagination ^^ c'est ça le problème =s
hotwheals est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 11h29   #7
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 54
Points : 9
Points : 9
En fait c'était des erreur de transmission de donnée d'une page a l'autre et j'ai réussi a réglé le problème grace a de l'aide ^^mais c réglé =D en tt cas merci pour votre aide^^
hotwheals est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h39.


 
 
 
 
Partenaires

Hébergement Web