duncan_mc_leod | Patty62 a écrit :
Hello à tous,
Pouvez-vous m'aider pour la fin de mon livre d'or? Il marche enfin mais je voudrais faire la pagination. Ce que je veux dire est que je n'ai pas demandé à ce que l'on me mette par exemple 20 messages par pages.
Voilà j'ai créé une base de données qui est :
- ID (de type int) - PSEUDO (de type varchar) - EMAIL (de type varchar) - MESSAGE (de type TEXT) et voici ma page liveor.php :
<html>
<head>
<meta http-equiv="imagetoolbar" content="no">
<title>Livre d'or</title>
</head>
<body background="../images/fond.jpg" bgproperties="fixed" text=#FFFFFF>
<?
if(isset($pseudo))
{
$connect=mysql_connect('localhost','root','')or die("Problème connection" );
$selectdb=mysql_select_db("acbe" )or die("Problème selection base" );
$req="insert into livreor values('','$pseudo','$email','$message')";
$res=mysql_query($req)or die("pb d insertion" );
}
?>
<form method="post" action="livreor.php" name="livreor">
<h2><center> Laissez-nous un message !</center></h2>
<table>
<tr>
<td><font size=+1><font color=#0C0980>
<b>Pseudo* :</b></td>
<td><input type=text name=pseudo size=25 ></td>
<tr><td><font size=+1><font color=#0C0980><b>Email :</b></td>
<td><input type=text name=email size=25 ></td></tr>
<tr><td><font size=+1><font color=#0C0980><b>Message :</b></td><td colspan=2>
<textarea name=message rows=4 cols=47></textarea>
<td rowspan=2><input type=submit value=Envoyer></td></tr>
</td>
</tr>
</form>
<table width=100% align=center border=0>
<tr>
<td>
<br>
<br>
</td>
</tr>
<br>
<br>
<?
$connect=mysql_connect("localhost","acbe62200","" )or die ("Pb de connexion à la base MySQL" );
$selectbase=mysql_select_db("acbecibistes_db" )or die ("Pb de selection de base" );
$req="select*from livreor limit 30";
$res=mysql_query($req)or die ("Pb d'execution de requête" );
echo"<table width=100% border=1>";
echo"<tr>";
echo"<td width=30%><font size=+2><font color=#0C0980><center>Pseudo</center></td>";
echo"<td width=90%><font size=+2><font color=#0C0980><center>Message</center></td>";
echo"</tr>";
while($row=mysql_fetch_array($res)){
echo "<tr>\n";
echo "<td>".$row[pseudo]."</td>\n";
echo "<td>".$row[message]."</td>\n";
}
?>
<table width=90% align=center border=0>
<tr>
<td><br><br>
<a href="../pages/bienvenue.php"><IMG SRC="../images/boutonretour.gif" border=0>
<td align=right>
<br><br>
<a href="../pages/presentation.php" target=cadprinc><IMG SRC="../images/logo_retour.gif" border=0>
</td>
</tr>
<br>
</body>
</html>
Aussi je souhaiterais avoir de l'aide du point de vue date. J'ai vu que je pouvais mettre dans ma base de données DATEHEURE (du type datetime) et j'ai vu que l'on pouvait incrémenter automatiquement. Mais je ne sais pas trop ce que c'est et je n'ai jamais fait. Alors si quelqu'un peut m'aider et m'expliquer. Merci beaucoup.
J'espère que quelqu'un m'aidera à finir ce livre d'or. Bye. Patty
|
Pour l'ID met le en autoincrement si ce n'est pas fait.
Sinon :
$req="insert into livreor values('','$pseudo','$email','$message')";
mieux vaut faire :
$req = "insert into livreor(ID, PSEUDO, EMAIL, MESSAGE) VALUES('','$pseudo','$email','$message')";
Sinon pour le nombre de message par pages, c'est pas sorcier mais il te faut réfléchir un peu. De quoi as tu besoin ? Tu as besoin du nombre total de messages divisé par le nombre de message par pages pour avoir le nombre de pages et les afficher.
Donc :
$nb_par_page = 20;
Tu dois compter le nombre de messages dans la table, donc le nombre d'entrées....
$selectmess = 'SELECT COUNT(ID)as nombre FROM livreor';
$comptmess = mysql_query($selectmess);
$totalmess = mysql_fetch_array($comptmess);
$totalmessages = $totalmess['nombre'];
ou sinon :
$sql = 'SELECT count(ID) FROM livreor';
$resultat = mysql_query($sql);
$nb_total = mysql_fetch_array($resultat);
$totalmessages = $nb_total[0];
Tu as donc ce qu'il te faut, le nombre de messages au total, et le nombre de messages par pages...
Reste a faire l'opération :
$pages_total = ceil($totalmessages / $nb_par_page); // Pour info ceil te permet d'arrondir a l'entier superieur, si tu as 6,4 pages ca fera 7, tu peux utiliser round pour arrondir a l'entier inférieur. Ensuite avant ou apres ton les messages tu aimerais surement afficher les liens vers les pages...donc on les affiche :
$p = "page n° ";
echo $p;
$i = 1;
while ($i < $pages_total)
{
echo '<a href="livreor.php?page='.$i.'" class="lienmachin">'.$i.'</a>';
}
il te reste plus qu'a verifier si la variable $_GET['page'] est présente pour afficher les messages et de créer une variable $page qui reprends le $_GET et si aucune page est séléctionné il te faut donner une valeure par défaut à cette variable , on va dire 1 pour la page 1.
Et enfin il te faut créer ta requete sql en intégrant en LIMIT le premier message que tu affiches, donc l'ID 1 par exemple, ca te donnes LIMIT 1, le nombre de message par page pour ne pas tout afficher .Donc il te faut une variable qui définit le premier element de la LIMIT pour le premier message a afficher sur chaque page. Compte tenu que sur la page 1, ce sera le message 0 a 19, page 1, message 20 à 39, etc... tu dois faire une variable qui calcule celà.
Ca doit donner un calcul du genre $tavariable = page - 1 * $nb_par_page . Ainsi si le livre est a la page 2 , ca donnera 2-1 * 20 = 20. Tu peux aussi faire avec des clauses if , if ($_GET['page'] == 2) {tes requetes} etc... mais c'est plus lourd a faire.
Sinon pour la date, bein tu choppes celle du serveur avec un :
$dateheuremessage = date("Y-m-j H:m:s" );
Il te reste plus qu'a créer le champ datetime et insérer le $dateheuremessage a chaque message posté...
Ensuite tu peux reprendre cette valeur en utilisant explode pour l'afficher comme tu veux du genre :
Le 02/03/2004 à 00h52 etc...
Tu peux aussi utiliser un timestamp ... mais le datetime fonctionnera aussi bien si ton serveur est a l'heure
Voilà bon courage (un ptit café ? ) Message édité par duncan_mc_leod le 28-02-2005 à 00:05:39
|