pagination - PHP - Programmation
Marsh Posté le 10-02-2017 à 23:32:15
Dans les liens hypertextes pour passer d'une page à l'autre, il faut mettre un paramètre (genre https://mapage.fr?page=2
Dans ton script, tu vas récupérer le n° de page via $_GET["page"] que tu utilisera ensuite dans la clause LIMIT de ta requête SQL. Connaissant le nb de messages affichés par page, ton LIMIT sera de la forme :
$page = $_GET[#page"];
$nbrecords = 10;
SELECT...FROM...LIMIT ($page-1)*$nbrecords, $nbrecords
Marsh Posté le 11-02-2017 à 12:28:01
bonjour,
j'ai mis sa
Citation : $bdd = new PDO('mysql:host=***;dbname=***;charset=utf8', '****', '***'); |
et sa me met sa
Fatal error: Call to a member function fetch() on boolean in /home/u609801953/public_html/minichat.php on line 97
Marsh Posté le 11-02-2017 à 16:47:15
Merci d'utiliser la balise [code]. Ton code est illisible
Ensuite, t'as pas initialisé les variables que je t'ai proposées : $page et $nbrecords. Par ailleurs, tu écris
LIMIT ($page-1)*$nbrecords, $nbrecords '.$depart;
Ca risque pas de marcher
T'as regardé au moins la syntaxe de la clause LIMIT de Mysql
Quand il y a 2 arguments, le 1er, c'est le n° de l'enregistrement à partir duquel commencer à récupérer, et le 2ème, le nb d'enregistrements à récupérer.
Donc construis une requête SQL valide et ça ira mieux. Une petite aide : fait un echo $liste; afin de vérifier dans PhpMyAdmin que la syntaxe de ta requête est OK. Tu verras aussi si ça te remonte les bons enregistrements.
Marsh Posté le 11-02-2017 à 17:22:35
je ne peu pas mettre les variables $page et $nbrecords sa me met
Parse error: syntax error, unexpected ';', expecting ']' in /home/u609801953/public_html/minichat.php on line 82
et a la ligne 82 il y a
Code :
|
pour la balise [code] je savais pas que sa exister je n'ai pas l'option de cette balise j'ai juste la balise [cpp].
Citation : T'as regardé au moins la syntaxe de la clause LIMIT de Mysql |
je voit pas ce que tu veu dire
Marsh Posté le 11-02-2017 à 23:43:37
La chaîne de caractère qui contient ta requête SQL n'est pas construite correctement !
'SELECT pseudo, message, DATE_FORMAT(date_crea, \'%d/%m/%Y\') AS date_creation_fr, TIME_FORMAT(date_crea, \'%Hh%imin%ss\') AS time_creation_fr FROM minichat ORDER BY ID DESC LIMIT ".($page-1)*$nbrecords.", $nbrecords"
-> fais bien attention à la différence d'utilisation du ' et du " surtout quand on mets une variable php à l'intérieure !!!
ex :
$page = 1;
echo '$page';
-> ça va t'afficher $page
echo "$page";
-> ça va t'afficher 1
Marsh Posté le 10-02-2017 à 18:07:35
bonjour,
j'ai programmer un minichat mais voila je voudrais faire une pagination avec les cases, précédents, les 3 pages autours de la pages actuel, suivant, je sais pas trop si vous avez compris donc voici un exemple :
précédent, 1, 2, 3, (page actuel: 4), 5, 6, 7, suivant
mais je ne sais pas du tout comment faire esque vous pourriez m'aidez a le faire ou carrément me faire le code avec des commentaires pour que je puisse comprendre (seulement si vous avez le temp sinon pas grave) voici le code source
minichat.php
<?php setcookie('pseudo', time() + 365*24*3600, null, null, false, true);
if (isset($_POST['message']))
{
$message = stripslashes($_POST['message']); // On enlève les slashs qui se seraient ajoutés automatiquement
$message = htmlspecialchars($message); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$message = nl2br($message); // On crée des <br /> pour conserver les retours à la ligne
// On fait passer notre message à la moulinette des regex
$message = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $message);
$message = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $message);
$message = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $message);
$message = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $message);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Mini-chat</title>
</head>
<style>
form
{
text-align:center;
}
</style>
<body>
<form action="minichat_post.php" method="post">
<p>
<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
message :<br/>
<textarea id="Message" name="message" rows="8" cols="35"></textarea><br />
<p>Amusez-vous à utiliser du bbCode. Tapez par exemple :</p>
<blockquote style="font-size:0.8em">
<p>
Je suis un Crystalien, et pourtant j'ai pas voter sur http://crystalcraft3.wixsite.com/crystal<br />
Je vous [color=green]recommande[/color] d'aller sur ce site, c'est [color=purple]génial[/color] !
</p>
</blockquote>
<input type="submit" name="action" value="Envoyer" />
</p>
</form>
<?php
try
{
$bdd = new PDO('mysql:host=****;dbname=****;charset=utf8', '****', '****');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_crea, \'%d/%m/%Y\') AS date_creation_fr, TIME_FORMAT(date_crea, \'%Hh%imin%ss\') AS time_creation_fr FROM minichat ORDER BY ID DESC LIMIT 0, 10');
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . htmlspecialchars($donnees['date_creation_fr']) .' : ' . htmlspecialchars($donnees['time_creation_fr']) .' : ' . htmlspecialchars($donnees['pseudo']) . ' : </strong>'.htmlspecialchars($donnees['message']).'</p>';
}
$reponse->closeCursor();
?>
</body>
</html>
de plus j'aimerais savoir comment je peu placer le cookie ( ligne 1 ) dans le label pseudo de sorte a ce que dès que la personne entre son pseudo et envoie un message sons pseudo sois enregistrer dans un cookie et remplisse automatiquement le label pseudo avec son pseudo. en suite le bbCode ne marche pas et n'indique aucun message d'erreur.
merci d'avance