Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1030 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  pagination

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pagination

n°2296184
zougui1
Posté le 10-02-2017 à 18:07:35  profilanswer
 

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

Citation :

<?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

mood
Publicité
Posté le 10-02-2017 à 18:07:35  profilanswer
 

n°2296191
rufo
Pas me confondre avec Lycos!
Posté le 10-02-2017 à 23:32:15  profilanswer
 

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


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2296194
zougui1
Posté le 11-02-2017 à 12:28:01  profilanswer
 

bonjour,
 
j'ai mis sa
 

Citation :

$bdd = new PDO('mysql:host=***;dbname=***;charset=utf8', '****', '***');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
try
{
    $count='SELECT count(id) as nb_ligne FROM minichat';
    $reponse = $bdd->prepare($count);
    $reponse->execute();
    $nb_enregistrement_total=$reponse->fetch();
}
 
catch(Exception $e)
{  
    die('Erreur : '.$e->getMessage());
}
$ligne_affichage=10;
/* on va calculer le nombre de page que cela va donner */
$nombreDePages = ceil($nb_enregistrement_total['nb_ligne'] / $ligne_affichage);
/* On contrôle le bon format du GET et si il exist si c'est le cas on le reprend bien sinon ou le définit la limite basse de 0 */
if(isset($_GET['page']) and is_numeric($_GET['page']) and $_GET['page']>0) $_GET['page']=intval($_GET['page']); else $_GET['page']=0;
/* si on est dans une limite supérieur on prend les deux bornes */
if($_GET['page']<$nb_enregistrement_total['nb_ligne']) $depart=$ligne_affichage.' OFFSET '.$_GET['page'];
/* sinon on fait un limit simple avec le Nb d'enregistrement de page défini */
else { $depart=$ligne_affichage;}
/* on va maintenant s'occuper de la requête qui intègre les limites */
$nombreDePages = $_GET['page'];  
$ligne_affichage = 10;
try
{  
    $liste='SELECT id,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 LIMIT ($page-1)*$nbrecords, $nbrecords '.$depart;
    $reponse = $bdd->prepare($liste);
    $reponse->execute();
}
 
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 ($page-1)*$nbrecords, $nbrecords');


 
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

n°2296199
rufo
Pas me confondre avec Lycos!
Posté le 11-02-2017 à 16:47:15  profilanswer
 

Merci d'utiliser la balise [code]. Ton code est illisible :o
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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2296203
zougui1
Posté le 11-02-2017 à 17:22:35  profilanswer
 

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 :
  1. $nbrecords = 10;


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 :??:  
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.


je voit pas ce que tu veu dire

n°2296224
rufo
Pas me confondre avec Lycos!
Posté le 11-02-2017 à 23:43:37  profilanswer
 

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


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2296233
zougui1
Posté le 12-02-2017 à 12:42:57  profilanswer
 

ok merci je vais voir sa


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  pagination

 

Sujets relatifs
pagination[JQUERY/ASP/ORACLE]TABLE AJAX COLLAPSE PAGINATION
[RESOLU] EXT-JS 4 : tableau avec pagination + triquel "plugin" php utilisez-vous pour faire une pagination ?
Optimiser une pagination ?Pagination sans LIMIT
[Résolu]Bouton <Précédent> <Suivant> PaginationPB Count (Résolu) et un souci de lien de pagination
Encore une question sur la pagination dans une feuille ExcelProblème de pagination
Plus de sujets relatifs à : pagination


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR