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 30/01/2012, 16h56   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
Par défaut pagination passage parametre déprecié

Bonjour,

l'activation vers PHP 5.3 soulève chaque jour son lot de tracasseries

aujourd'hui, c'est la pagination qui ne passe plus


L'ancienne formule de type

Code :
1
2
3
 
 
http://www.domaine.com/rubrique/liste.php?nbinf=20&nbpage=20


ne permet plus de passer à la page suivante

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
 
 
//pagination							
 
 
if (!$nbpage){
$nbpage=20;
}
 
if (!$nbinf){
$nbinf=0;
} 
 
if (!$choix){
$choix=0;
} else {
$choix -=1;
$nbinf = $choix * $nbpage ;
}
$nbsup= $nbinf + $nbpage;
$nbprec = $nbinf - $nbpage;
$page = $nbinf / $nbpage;
$page = $page + 1;
$nbtotalpage = $total / $nbpage;
$nbtotalpage = ceil($nbtotalpage);
Code :
1
2
3
 
if ($page != $nbtotalpage) {
echo "<a href='http://www.domaine.com/rubrique/liste.php?nbinf=$nbsup&amp;nbpage=$nbpage'>page suivante</a>\n";

Il n'y a pourtant pas de signal d'erreur, mais il ne se passe tout simplement rien

Y aurait il des paramètres dépréciés dans cette fonction
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 17h46   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Oui, les Register Globals ont été dépréciés pour des raisons (plus qu'évidentes) de sécurité.

Voir: http://php.net/manual/fr/security.globals.php

Tu dois désormais utiliser les superglobales $_GET ou $_POST, préférablement avec les filtres, pour obtenir des informations de l'utilisateur.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h29   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
Merci pour le lien

En essayant d'installer un nouveau code , j'ai l'erreur suivante:

mysql_fetch_row() expects parameter 1 to be resource, boolean given in
Unable to count rows: Unknown column '$now' in 'where clause'

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 $now = date('Ymd'); 
$query = mysql_query('SELECT COUNT(*) FROM evenement WHERE publication="oui" AND date_fin >= $now  ');
 
while ($evenement = mysql_fetch_object ($resultat))
   {
 
   $id_evenement = $evenement->id_evenement;
   $date_debut = $evenement->date_debut;
   $date_fin = $evenement->date_fin;
   }
 
 
$fetched = mysql_fetch_row($query) 
	or die('Unable to count rows: '.mysql_error());
$count = current($fetched);
Je n'arrive pas à passer cette étape de compter les occurences dans la base

la date Ymd qui est pourtant bien déclarée
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h51   #4
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Une erreur de concaténation dans la requête je pense
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h52   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Quel est le type du champ date_fin dans ta base de données ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h01   #6
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
Citation:
Envoyé par rawsrc Voir le message
Bonjour,

Quel est le type du champ date_fin dans ta base de données ?
Bonjour,

C'est un varchar dans une table ISO 8859-1
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h04   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Ok donc tu as une erreur dans ton sql :
Code sql :
SELECT COUNT(*) AS nbRec FROM evenement WHERE publication = 'oui' AND date_fin >= '$now';
D'ailleurs pourquoi utiliser un varchar pour un champ date ?
Integer je veux bien mais varchar !?!!??
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h17   #8
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
merci rawsrc

Ce champs aurait du être bien paramétré dès le départ mais pour l'instant je ne m'aventurerais pas à le changer

J'ai toujours cette erreur:

Selection error:Unknown column '$now' in 'where clause'

le doit se retrouver ailleurs dans cette partie ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$fetched = mysql_fetch_row($query) 
	or die('Unable to count rows: '.mysql_error());
$count = current($fetched);
 
// Create the Spagination object and set up count & limit per page
$pagi = Spagination::create($count, 15);
 
// Pagination calculated all needed params, let's get the actual data
$books = mysql_query('
	SELECT * FROM evenement WHERE publication="oui" AND date_fin >= $now 
	LIMIT '.$pagi->limit().' 
	OFFSET '.$pagi->offset()
) or die('Selection error:'.mysql_error());
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h25   #9
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Oui c'est normal, mon code avait pour but de te montrer qu'il manquait des guillemets autour de ta valeur (texte) $now :
Code :
1
2
$now   = date('Ymd'); 
$query = mysql_query("SELECT COUNT(*) FROM evenement WHERE publication = 'oui' AND date_fin >= '$now' ");
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h33   #10
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Citation:
Selection error:Unknown column '$now' in 'where clause'
C'est dû au fait que tu utilise des guillements simple or le remplacement des variables par leur valeurs dans les chaines de caractères ne s'effectue qu'avec des guillements doubles. Voir http://www.php.net/manual/fr/languag....syntax.double

Ex:
Code :
1
2
3
4
$str = "hello";
var_dump('say $str to peter');
// est différent de
var_dump("say $str to peter");
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 12h18   #11
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
Merci de vos précisions,

Maintenant la pagination s'affiche sous un beau tableau
(il s'agit d'un script valide PHP 5 que l'on trouve sur codecanyon.net )

Mais le problème initial n'est pas résolu
Les pages suivantes restent identiques ... (tjrs sous PHP 5.3)

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
// Get count of some records in the db
 
// Get count of some records in the db
$now   = date('Ymd'); 
$query = mysql_query("SELECT COUNT(*) FROM evenement WHERE publication = 'oui' AND date_fin >= '$now' ");
 
 
while ($evenement = mysql_fetch_object ($resultat))
   {
 
   $id_evenement = $evenement->id_evenement;
   $date_debut = $evenement->date_debut;
   $date_fin = $evenement->date_fin;
   $datefin = DateTime::createFromFormat('Ymd', $date_fin)->format('Y-m-d');
   }
 
 
$fetched = mysql_fetch_row($query) 
	or die('Unable to count rows: '.mysql_error());
$count = current($fetched);
 
// Create the Spagination object and set up count & limit per page
$pagi = Spagination::create($count, 15);
 
// Pagination calculated all needed params, let's get the actual data
$books = mysql_query('
	SELECT *  FROM evenement WHERE publication = "oui" AND date_fin >= "$now"
	LIMIT '.$pagi->limit().' 
	OFFSET '.$pagi->offset()
) or die('Selection error:'.mysql_error());
 
while ($evenement = mysql_fetch_object ($resultat))
   {
$pagination->template('digg');
 
 
$pagi = Spagination::create(300)
	->limit(15) 
	->current_page(10)
	->count(500) 
	->lang('ba')
	->template('digg')
	->query_key('key_in_query_string')
	->render(); 
/**
 * $pagi is a string containing HTML now because render() 
 * returns rendered template
 */
 // Get the current limit
$limit = $pagi->limit();
// Total number of items
$count = $pagi->count();
// Current pagination page
$page = $pagi->current_page();
// Query key in $_GET array this pagination is using
$query_key = $pagi->query_key();
// Template
$template = $pagi->template();
$pagi->url_handler(function($page){
	// ... return the URL with page defined
});
// Current language
$lang = $pagi->lang(ba);
 $html = (string) $pagi; // Get the pagination HTML in $html var, same as:
$html = $pagi->render(); 
 
$pagi->render(FALSE); // 
function custom_url_handler($page)
{
	return 'http://www.domaine.com/rubrique/liste.php'.$page;
}
$pagi->url_handler('http://www.domaine.com/rubrique/liste.php');
 
 
   }
// Display pagination 
echo $pagi; // Echoes the pagination HTML inplaceoes the pagination HTML
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 13h08   #12
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Tu as une erreur dans le sql de $books. Relis la remarque faite par Benjamin concernant l'utilisation des guillemets simples ou doubles.
Voici le sql corrigé :
Code :
1
2
3
4
5
$books = mysql_query("
   SELECT * FROM evenement WHERE publication = 'oui' AND date_fin >= '$now'
   LIMIT {$pagi->limit()} 
   OFFSET {$pagi->offset()}"
)
Faut lire et relire le code.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 18h30   #13
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
j'ai une erreure avec les guillemets comme ceci:

Code :
1
2
3
4
5
 
$books = mysql_query("
	SELECT * FROM evenement WHERE publication = 'oui' AND date_fin >= '$now'
	LIMIT '.$pagi->limit().
	OFFSET '.$pagi->offset()") or die('Selection error:'.mysql_error());


Faut -il à chaque fois compléter les champs entre parenthèse de type

render () ?

ou est-ce qu'il y en a qu'il faut laisser vides ?

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
 
// Pagination calculated all needed params, let's get the actual data
$books = mysql_query('
	SELECT * FROM evenement WHERE publication = "oui" AND date_fin >= "$now"
	LIMIT '.$pagi->limit().' 
	OFFSET '.$pagi->offset()) or die('Selection error:'.mysql_error());
 
while ($evenement = mysql_fetch_object ($resultat))
   {
$pagination->template('blue');
 
 
$pagi = Spagination::create(50)
	->limit(15) 
	->current_page(10)
	->count(100) 
	->lang('fr')
	->template('blue')
	->query_key('key_in_query_string')
	->render(); 
/**
 * $pagi is a string containing HTML now because render() 
 * returns rendered template
 */
 // Get the current limit
$limit = $pagi->limit(15);
// Total number of items
$count = $pagi->count(100);
// Current pagination page
$page = $pagi->current_page(10);
// Query key in $_GET array this pagination is using
$query_key = $pagi->query_key();
// Template
$template = $pagi->template();
$html = (string) $pagi; // Get the pagination HTML in $html var, same as:
$html = $pagi->render(); 
 
$pagi->render(FALSE); // Echoes the pagination HTML
$pagination->template('blue');
// Current language
$lang = $pagi->lang(fr);
Merci !
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 19h06   #14
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par event Voir le message
j'ai une erreure avec les guillemets comme ceci:

Code :
1
2
3
4
5
 
$books = mysql_query("
	SELECT * FROM evenement WHERE publication = 'oui' AND date_fin >= '$now'
	LIMIT '.$pagi->limit().
	OFFSET '.$pagi->offset()") or die('Selection error:'.mysql_error());
C'est normal, tu ouvres avec des guillemets doubles et tu refermes avec des simples -> erreur (j'ai tout mis sur une ligne histoire de bien voir les guillemets)
Code :
$books = mysql_query("SELECT * FROM evenement WHERE publication = 'oui' AND date_fin >= '$now' LIMIT " . $pagi->limit() . " OFFSET " . $pagi->offset()) or die('Selection error:'.mysql_error());
Citation:
Envoyé par event Voir le message
Faut -il à chaque fois compléter les champs entre parenthèse de type

render () ?
Pas de réponse à cette question vu que je ne connais pas du tout le script que t'utilises, donc c'est à toi de lire la doc...
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 19h16   #15
Invité de passage
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 2
Points : 2
Merci beaucoup rawsrc

Il n'y a plus d'erreures , cela devrait normalement le faire, mais toujours pas de défilement

Je me demandais si le fait d'être sur un mutu pouvait être la cause, et s'il fallait ajouter une ligne dans le htaccess
event est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 19h36   #16
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par event Voir le message
Je me demandais si le fait d'être sur un mutu pouvait être la cause, et s'il fallait ajouter une ligne dans le htaccess
Absolument pas et ça n'a rien à voir avec les fichiers .htaccess
C'est la manière dont tu utilises le script qui est problématique. Y a un ou deux trucs que tu ne dois pas correctement paramétrer.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h58.


 
 
 
 
Partenaires

Hébergement Web