Affichage en plusieurs page PHP

Fermé
mouna - 4 avril 2010 à 11:12
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 4 avril 2010 à 18:59
Bonjour,
je veux bien afficher le contenu de ma bdd dans une table sur plusieurs page, pour cela j'ai essayer de traiter ce code la, le résultat que j'ai trouvé c'est qu'il fonctionne mais avec des erreurs.
Voilà le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<?php
include ("connexion.php");
$req_limit="select codeClt from client";
$resultat= mysql_num_rows ($req_limit);
$limit_page= '2';
$nombre_page=$resultat/$limit_page;
$nombre_tot=ceil($nombre_page);
$nombre=$nombre_tot - 1;
if(isset($_GET['numero_page']) || $_GET['numero_page'] != '0' )
{
$limite_mysql = $limit_page * $_GET['numero_page'];
}
else
{
$limite_mysql = '0';
}
if( $nombre != '0' && empty($_GET['numero_page']))
{
print '<a href="affichage.php?numero_page=1">Page suivante</a>';
}
elseif($nombre !='0' && isset($_GET['numero_page']) && $_GET['numero_page'] < $nombre)
{
$suivant = $_GET['numero_page'] + 1;
print '<a href="affichage.php?numero_page='.$suivant.'">Page suivante</a>';
print '  <a href="javascript: history.back();">Page précédente</a>';
}
elseif( $nombre !='0' && isset($_GET['numero_page']) && $_GET['numero_page'] >= $nombre )
{
print '<a href="javascript: history.back();">Page précédente</a>';
}
$req=mysql_query("select * from client order by codeClt desc limit $limite_mysql,$limit_page") or die ("erreur requete");
echo "<table border=\"1\"><tbody>";
echo "<tr><td> Code Client </td> <td> Nom </td> <td> Prenom </td> <td> Adresse </td> <td> pays </td> <td> Ville </td> <td> email </td> <td> tel 1 </td> <td> Tel 2 </td> <td> Fax </td> </tr>";
while ($res=mysql_fetch_array ($req))
{
echo "<tr>";
foreach ($res as $valeur)
{ echo "<td> $valeur </td>";
}
echo "</tr>";
}
echo "</tbody></table>";
?>

</body>
</html>

Les lignes en gras sont les lignes dont il m'indique le message d'erreur
En exécutant ce code il m'affiche un tableau qui contient le contenu de ma table client et aussi il m'affiche le lien vers la page suivante et il fonctionne et aussi le lien vers la page précédente mais le tableau affiché n'est pas bien organisé il affiche chaque enregistrement 2 fois et il s'affiche ces messages d'erreur au dessus du tableau :

Warning: mysql_num_rows() expects parameter 1 to be resource, string given in D:\Program Files\EasyPHP-5.3.1\www\hbs\affichage.php on line 12

Notice: Undefined index: numero_page in D:\Program Files\EasyPHP-5.3.1\www\hbs\affichage.php on line 17

Notice: Undefined index: numero_page in D:\Program Files\EasyPHP-5.3.1\www\hbs\affichage.php on line 19

Merci de m'aider à résoudre ce problème.


A voir également:

3 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 avril 2010 à 13:47
il faut executer la requett etoi tu l'a seulement définie:

<?php
include ("connexion.php");
$req_limit="select codeClt from client";
$resultat= mysql_num_rows ($req_limit);


<?php
include ("connexion.php");
$req_limit="select codeClt from client";
$reultat_req=mysql_query($req_limit); //execution de l arequette
$resultat= mysql_num_rows ($reultat_req); 


et
if(isset($_GET['numero_page']) || $_GET['numero_page'] != '0' )

c'est plutôt un ET

if(isset($_GET['numero_page']) && $_GET['numero_page'] != '0' ) 
2
Merci, le message d'erreur a été éliminé suite à votre correction mais il reste seulement l'affichage du tableau, il m'affiche chaque enregistrement 2 fois.
par exemple pour la table client j'ai code,nom, prenom, adresse
supposons on a le 1ere enregistrement
code: 1 nom: ABCD prenom: Mona Adresse Tunisie
il m'affiche
1 1 ABCD ABCD Mona Mona Tunisie Tunisie
j'arrive pas à comprendre pourquoi !!!!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 avril 2010 à 18:59
Il faut mettre

while ($res=mysql_fetch_assoc ($req))


car mysql_fetch_array te sort en fait un array avec des index numériques de 0 à .... et avec des index alpha (les noms des champs de la table)

donc chaque valeur se retrouve deux fois une fois ex:
le code client dans $res[0] et dans $res['codeClt']

hors comme tu fais l'affichage par une boucle foreach sur tous les index du tableau tu les as deux fois
0