Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
J'ai créée une page avec une base de données. Sur ma page je voulais afficher mon tableau de données avec un système de pagination automatique. J'ai récupérer le script sur ICI. J'ai tout réécris mais j'ai une erreur que je n'arrive pas à résoudre. Voici mon script php :
//Connexion à la base de données
if (!connexion())
{
echo "erreur de connexion à la base".mysql_error();
}
else
{
$messagesParPage=5; //Nous allons afficher 5 messages par page.
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM clients'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']); //intval -> retourne la valeur entière
if ($pageActuelle > $nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle = $nombreDePages; //on reste sur la dernière page
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM clients ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
echo 'Nombre d\'enregistrement : '.$total;
echo '<table id="tableau">'."\n";
echo '<tr>';
echo '<td> NOM </td>';
echo '<td> PRENOM </td>';
echo '<td> TELEPHONE </td>';
echo '<td> E-MAIL </td>';
echo '<td> NOTE </td>';
echo '</tr>';
while($donnees_messages=mysql_fetch_array($retour_messages)) // On lit les entrées une à une grâce à une boucle
{//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
echo '<tr>';
echo '<td class="nomC">'.stripslashes($donnees_messages['nom']).'</td>';
echo '<td>'.stripslashes($donnees_messages['prenom']).'</td>';
echo '<td>'.stripslashes($donnees_messages['telephone']).'</td>';
echo '<td>'.stripslashes($donnees_messages['mail']).'</td>';
echo '<td>'.stripslashes($donnees_messages['note']).'</td>';
echo '</tr>';
}
echo '</table>';
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="index.php?nompage=listeClients&page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
}
?>
Et voici ma page avec mon Erreur :
Liste des clients
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in F:\EASY\EasyPHP-5.3.8.1\www\ZEN ATTITUDE\pages\admin\listeClients.php on line 43
Page : 1 2 3
De plus, j'ai essayer le script avec la base de donnée sur une autre page du tuto que je vous ai mis en lien, et il marche parfaitement. Du coup, j'ai fais copier-coller de mon script qui marche sur ma page souhaité et j'ai ce message d'erreur donc je ne comprends absolument pas.
Si vous pouviez m'aider cela serait adorable .
Merci d'avance
Dernière modification par soft57 (20-01-2012 18:33:13)
Hors ligne
Please
Hors ligne
A quelle ligne de ton script correspond la ligne 43 ?
Par ailleurs, merci de ne pas raviver la guerre des étoiles.
Enfin, avant de sombrer dans une totale obsolescence, il faudrait se mettre à PDO.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Il n'y a rien à la ligne 43, mais si c'est pour la ligne 41 il affiche les données de ma requête selon la limite et le nombre de données que je souhaite par page.
Je vais attendre encore un peu pour le PDO ^^ ça m'a l'air assez complexe pour le moment.
Hors ligne
Ne te fie pas aux numéros de lignes du bout de script posté ici, il s'agit du script global parsé par PHP.
Ce qu'il faudrait savoir c'est quelle variable, de $retour_total ou de $retour_messages, est "boolean instead of resource"
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je vais attendre encore un peu pour le PDO ^^ ça m'a l'air assez complexe pour le moment.
Tu ne tarderas pas à comprendre que la vie, elle-même, n'est pas simple. Est-ce une raison suffisante pour procrastiner face à toute difficulté ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
D'après le message d'erreur, ça serait cette ligne :
while($donnees_messages=mysql_fetch_array($retour_messages))
Hors ligne
Alors modifie provisoirement ton script comme ceci
et dis-nous ce qu'il en advient.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
J'obtiens ceci
Erreur de syntaxe près de '-5, 5' à la ligne 1
Hors ligne
Hé bien voilà, revois la construction de ta requête.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je ne suis pas sûr que le problème vienne de la requête. J'ai modifié les "$GET_['page'] et mes 5 premières données sont bien affichées sur la première page. Mais lorsque je clique sur la 2ème page, j'ai une page vide. Voilà mon code modifié :
//Connexion à la base de données
if (!connexion())
{
echo "erreur de connexion à la base".mysql_error();
}
else
{
$messagesParPage=5; //Nous allons afficher 5 messages par page.
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM clients'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['index.php?nompage=listeClients&page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['index.php?nompage=listeClients&page']); //intval -> retourne la valeur entière
if ($pageActuelle > $nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle = $nombreDePages; //on reste sur la dernière page
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT nom, prenom, telephone, mail, note FROM clients ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'')
or die(mysql_error());
//print_r($retour_messages);
echo 'Nombre d\'enregistrement : '.$total;
echo '<table id="tableau">'."\n";
echo '<tr>';
echo '<td> NOM </td>';
echo '<td> PRENOM </td>';
echo '<td> TELEPHONE </td>';
echo '<td> E-MAIL </td>';
echo '<td> NOTE </td>';
echo '</tr>';
while($donnees_messages=mysql_fetch_array($retour_messages)) // On lit les entrées une à une grâce à une boucle
{//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
echo '<tr>';
echo '<td class="nomC">'.stripslashes($donnees_messages['nom']).'</td>';
echo '<td>'.stripslashes($donnees_messages['prenom']).'</td>';
echo '<td>'.stripslashes($donnees_messages['telephone']).'</td>';
echo '<td>'.stripslashes($donnees_messages['mail']).'</td>';
echo '<td>'.stripslashes($donnees_messages['note']).'</td>';
echo '</tr>';
}
echo '</table>';
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="index.php?nompage=listeClients&page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
}
?>
Dernière modification par soft57 (23-01-2012 09:17:10)
Hors ligne
C'est quoi ça :
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
C'est pour convertir le numéro de la page en entier, mais effectivement je ne pense pas que cela serve à grand chose ici.
Hors ligne
D'autant que le numéro de page c'est $_GET['page']
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Oui mais quand je mets $_GET['page'] aucune données ne s'affiche
Hors ligne
Ça c'est un autre problème, mais $_GET['index.php?nompage=listeClients&page'], ça n'existe pas.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Peut-être bien, mais je souhaiterai résoudre mon problème
Hors ligne
Mon soucis est résolu, ça venez d'une variable qui se trouver dans mon index et qui prenez la priorité sur mon script de pagination. Merci quand même
Hors ligne
Pages :: 1