livre d'or

livre d'or - PHP - Programmation

Marsh Posté le 30-06-2005 à 20:42:35    

Citation :

<html>
<head>
<title>Livre d'or</title>
</head>
 
<body>
<form method="post" action="livreor.php">
<p>
Si mon site te plait laisse moi un message
</p>
<p>
pseudo :
<input type="text" name="nom">
</p>
<p>
Laisse ton message ^^ :
</p>
<p>
<textarea name="message" rows="5" cols="45">
</textarea>
</p>
<p>
<input type="submit" value="Envoyer">
</p>
</body>
</html>
 
 
 
<?
 mysql_connect ('localhost', 'root', '');
 mysql_select_db ('projet');
 
 
 if (isset ($_POST['nom']) && isset ($_POST['message']))
  {
   $name = htmlentities ( addslashes ( $_POST['nom'] ));
   $mess = nl2br ( htmlentities ( addslashes ($_POST['message'])));
   mysql_query ("INSERT INTO livredor VALUES ('', '$name', '$mess')" ) or die ("Echec de l'enregistrement" );
  }
 
 $reponse = mysql_query ('SELECT * FROM livredor ORDER BY id DESC LIMIT 0, 3');
 while ( $donnees = mysql_fetch_array ($reponse))
  {
   echo $donnees['pseudo']. " : ".$donnees['message']."<br />";
  }
   
  $entrees = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM livredor" );
   $nombredemessageposter = mysql_fetch_array($entrees);
    echo 'il y a eu '.$nombredemessageposter['nbre_entrees'].'message poster <br />';
   $nombredepage = ceil ( $nombredemessageposter['nbre_entrees'] / 3 );
    echo ' nous aurons donc besoin de '.$nombredepage.' pages: ';
 
 for ($nombre_de_lignes = 1; $nombre_de_lignes <= $nombredepage; $nombre_de_lignes++)
   {
    $lien = $nombre_de_lignes;
      echo '<a href="livreor.php?page='.$lien.'">'.$nombre_de_lignes.', </a>';
 }
 
   if ( isset ($_GET['page']))
  {
    $page = $_GET['page'];
    echo "<br />Vous etre a la page n°".$page;
  }
   
  else  
   {
    $page = 1;
    echo "<br />Vous etre a la page n°".$page;
   }
   
?>
 
 
<?
 mysql_close();
?>


 
voila j'ai fais ce code pour cree un livre d'or tout marche sauf que je ne peux affiche que les dernieres news que j'ai poster. lorsque je clique sur un lien pour changer de page le lien dans la barre d'adresse change bien mais ca affiche toujorus les memes messages  :heink: . SI quelqu'un pourrai me dire ce qui ne va pas ... merci d'avance

Reply

Marsh Posté le 30-06-2005 à 20:42:35   

Reply

Marsh Posté le 30-06-2005 à 20:47:03    

bonsoir à toi aussi  :o  
 
va faire un tour sur la fonction rechercher. c'est une question qui reviens sans cesse...

Reply

Marsh Posté le 30-06-2005 à 20:48:31    

euh ... d'accord merci beaucoup :)
bonsoir :)

Reply

Marsh Posté le 30-06-2005 à 21:05:30    

Citation :


$reponse = mysql_query ('SELECT * FROM livredor ORDER BY id DESC LIMIT 0, 3');  
 while ( $donnees = mysql_fetch_array ($reponse))  
  {  
   echo $donnees['pseudo']. " : ".$donnees['message']."<br />";  
  }  


 
Forcément là ça risque d'afficher les 3 premières à chaque fois...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 30-06-2005 à 21:07:31    

oui c'est ce que je veu fait afficher les trois premieres sur chaque page. Mais la mes 8 page affiches toujours les 3 message poster identique :(

Reply

Marsh Posté le 30-06-2005 à 21:21:56    

Il faut jouer avec le LIMIT dans ta requête. Là ça te sort les 3 news les plus récentes dans la base. Sur la seconde page, tu veux que ça t'affiche les news de 4 à 6, donc ton LIMIT devra être 3, 3 (je crois, je me rappelle jamais comment marche LIMIT exactement). Puis 6, 3 sur la troisième, etc.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 30-06-2005 à 21:27:35    

a d'accord j'ai compris merci beaucoup ... je sais ce qu'il faut faire faut que je trouve le calcul maitenant XD

Reply

Marsh Posté le 30-06-2005 à 21:47:39    

et avec ca ca ne marche pas :( :
LIMIT 3*$_GET['page'], 3*($_GET['page']+1)

Reply

Marsh Posté le 30-06-2005 à 22:06:22    

"Ca marche pas", t'as pas plus vague ? -_-
 
Le deuxième paramètre de ton LIMIT est fixe a priori, c'est le nombre de messages par page en gros.
 
Le premier me semble bon si ton $_GET['page'] vaut 0 sur la page 1 et ainsi de suite.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 30-06-2005 à 22:13:23    

Code :
  1. include('./includes/sql.php');
  2. $numNews = 5; // "Variable a mettre dans config" - Nombre de news a afficher
  3. $requete = mysql_unbuffered_query("SELECT COUNT(id_article) FROM Articles" ) or die('Echec lorsque de l\envoi de $requete');
  4. $numRows = mysql_fetch_row($requete); // Calcul du nombre de news total sous forme de tableau
  5. $numPages = ceil($numRows[0] / $numNews); // Calcul du nombre de pages total
  6. if($num == "" )
  7. {
  8. $page = 1;
  9. $position = 0;
  10. }
  11. else
  12. {
  13. $page = $num + 1;
  14. $position = $numNews * ($page - 1);
  15. }
  16. if($numPages > 1) // Si il y a plusieurs pages on affiche la barre de pagination
  17. {
  18. $pagination = '<a href="pagination.php?num='.($page - 2).'">Précedent</a> <a href="pagination.php?num='.$page.'">Suivant</a>';
  19. }
  20. else // Si il n'y a qu'une page, on affiche rien
  21. {
  22. $pagination = '';
  23. }
  24. if($page > 1)
  25. {
  26. $next = '';
  27. $prec = '<a href="pagination.php?num='.($page - 2).'">Précedent</a>';
  28. }
  29. else
  30. {
  31. $next = '<a href="pagination.php?num='.$page.'">Suivant</a>';
  32. $prec = '';
  33. }
  34. echo 'Les resultats tiennent sur :' , $numPages , ' pages.<br />Vous êtes actuellement sur la page ' , $page , '.<br />' , $position , '<br />';
  35. $requete_article = mysql_query("SELECT title_article FROM Articles ORDER BY time_article AND date_article DESC LIMIT $position, $numNews" ) or die("echec de la requ&ecirc;te MYSQL" );
  36. while($article = mysql_fetch_array($requete_article))
  37. {
  38. //Affichage des articles du jour
  39. echo'<h2>',$article['title_article'],'</h2>';
  40. }
  41. echo $pagination;
  42. ?>


 
c'est pas encore fini mais c'est deja un debut, ça permet d'afficher les news suivantes et precédentes, mais je n'ai pas encore mis de limites ce qui fait qu'une fois la derniere page dépassée on peut encore aller tres loin :p
 
au passage, si quelqu'un voit des choses a améliorer je suis prenneur :jap:

Reply

Marsh Posté le 30-06-2005 à 22:13:23   

Reply

Marsh Posté le 30-06-2005 à 22:28:24    

ca fati koi ici ???

Reply

Marsh Posté le 30-06-2005 à 22:29:23    

en fait ce qui deconne c'est que lorsque je lance la page des le debut il manque ca : ?page=. donc ca 'na aucune valeur

Reply

Marsh Posté le 30-06-2005 à 22:44:02    

si ton ?page=0 alors c'est que tu te trouve en premiere page
 
ton ?page correspond a mon  ?num

Code :
  1. # if($num == "" )
  2. #     {
  3. #     $page = 1;
  4. #     $position = 0;
  5. #     }
  6. # else
  7. #     {
  8. #     $page = $num + 1;
  9. #     $position = $numNews * ($page - 1);
  10. #     }

Reply

Marsh Posté le 01-07-2005 à 01:50:30    

Code :
  1. # if( !isset($_GET["num"]) or !is_numeric($_GET["num"]) )
  2. #     {
  3. #     $page = 1;
  4. #     $position = 0;
  5. #     }
  6. # else
  7. #     {
  8. #     $page = $_GET["num"] + 1;
  9. #     $position = $numNews * ($page - 1);
  10. #     }


 
Mieux à mon avis.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 01-07-2005 à 08:08:34    

kirua_sama a écrit :

et avec ca ca ne marche pas :( :
LIMIT 3*$_GET['page'], 3*($_GET['page']+1)


 
Meilleur moyen de se faire peter la base de donnée grace aux sql injections
 

dwogsi a écrit :

Code :
  1. # if( !isset($_GET["num"]) or !is_numeric($_GET["num"]) )
  2. #     {
  3. #     $page = 1;
  4. #     $position = 0;
  5. #     }
  6. # else
  7. #     {
  8. #     $page = $_GET["num"] + 1;
  9. #     $position = $numNews * ($page - 1);
  10. #     }


 
Mieux à mon avis.


 
Mieux


Message édité par esox_ch le 01-07-2005 à 08:08:51

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 01-07-2005 à 11:08:53    

Merci beaucoup tout le monde ca marche maitenant :)... je pense qu'il fallais surtout le is_numeric :) parce que sinon meme si il y avait une valeur null le if etait accompli merci tout le monde.

Reply

Marsh Posté le 01-07-2005 à 16:46:18    

merci :jap:

Reply

Marsh Posté le 03-07-2005 à 14:00:35    

Bonjours a tous  
 
moi je cherche un moyen de remplacer les numeros de page par des petits points si jamais yavais plus de 5 pages par exemples.
Merci :jap:

Reply

Marsh Posté le 03-07-2005 à 14:04:01    

Bah tu peux faire un while (avec un break; à 5) pour afficher la liste des page ou même un for.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 03-07-2005 à 14:15:20    

et comment je pourrais proceder?

Reply

Marsh Posté le 03-07-2005 à 14:17:29    

Code :
  1. <?
  2. $i = 0;
  3. while ( $i < $_GET["num"] )
  4. {
  5.   // affichage du liens vers la page n° $i
  6.   if ( $i > 5 )
  7.   {
  8.      // affichage des ...
  9.      break; // Quitte la boucle while
  10.   }
  11.   $i++;
  12. }
  13. ?>

Message cité 1 fois
Message édité par dwogsi le 03-07-2005 à 14:27:57

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 03-07-2005 à 14:18:10    

ok je vais voir ca merci  
:jap:

Reply

Marsh Posté le 03-07-2005 à 14:32:28    

Code :
  1. $i = 0;
  2. while ( $i < $_GET["num"] )
  3. {
  4.   echo "<a href=\"?num=".$i.">".$i."</a> ";
  5.   if ( $i > 5 )
  6.   {
  7.     echo echo "...";
  8.     break;
  9.   }
  10. }


 
Par exemple, ensuite faut juste améliorer ca pour que, lorsque le visiteur va plus loin dans les pages du livre d'or, ce soit le numéros de pages suivant qui soient affichés.


Message édité par dwogsi le 03-07-2005 à 14:32:38

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 03-07-2005 à 14:43:07    

oué justement c'est ca que je n'arrive pas a faire :/
 
Edit :  Mais quand je clique sur la derniere page avant les petits points et que je clique sur suivant la page ne s'affiche pas et j'ai un message d'erreur qui apparais : "Fatal error: Maximum execution time of 30 seconds exceeded"


Message édité par richou_ le 03-07-2005 à 14:47:37
Reply

Marsh Posté le 03-07-2005 à 14:57:27    

lol, t'as fais un truc qui va dans une boucle un peut longue? non?
 
Sinon pour le système des pages je pensais peut être qqu chose comme ca:
 

Code :
  1. if ( $_GET["num"] > 5 )
  2. {
  3.   $i = $_GET["num"] - 3; // Affichage des 3 pages avant
  4.   $max = $_GET["num"] + 2; // Définie jusqu'ou on va
  5. }else{
  6.   $i = 0; // Ou du début si on est au début
  7.   $max = 5;
  8. }
  9. while ( $i < $_GET["num"] )
  10. {
  11.   echo "<a href=\"?num=".$i.">".$i."</a> ";
  12.   if ( $i > $max )
  13.   {
  14.    echo "<a href=\"?num=".$i+1.">...</a> ";
  15.    break;
  16.   }
  17. }


 
Je réflechi sur un script la et dès que j'ai un truc qui marche bien je te donne un lien ca m'amuse et sa m'occupe de faire ca...


Message édité par dwogsi le 03-07-2005 à 15:04:14

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 03-07-2005 à 15:07:57    

dwogsi a écrit :

lol, t'as fais un truc qui va dans une boucle un peut longue? non?
 


 
lol bah en fait javais mis un while et un for c'est pour ca que ca marchais pas mais c'est bon la ca marche :D
 

dwogsi a écrit :


Code :
  1. * if ( $_GET["num"] > 5 )
  2.      {
  3.        $i = $_GET["num"] - 3; // Affichage des 3 pages avant
  4.        $max = $_GET["num"] + 2; // Définie jusqu'ou on va
  5.      }else{
  6.        $i = 0; // Ou du début si on est au début
  7.        $max = 5;
  8.      }
  9.    
  10.      while ( $i < $_GET["num"] )
  11.      {
  12.        echo "<a href=\"?num=".$i.">".$i."</a> ";
  13.        if ( $i > $max )
  14.        {
  15.         echo "<a href=\"?num=".$i+1.">...</a> ";
  16.         break;
  17.        }
  18.      }




Super ca marche Merci beaucoup depuis le temps que je voulais faire ca...
:D
:jap:

Reply

Marsh Posté le 03-07-2005 à 15:45:51    

Maintenant je cherche a virer les numero de page qui sont avant pour avoir un truc du genre :  
"page : << ... 3 4 5 ... >>"
 
J'ai pensé a ca :
 

Code :
  1. if ( $_GET["num"] > 5 )
  2.     {
  3.        $i = $_GET["num"] - 3; // Affichage des 3 pages avant
  4.        $max = $_GET["num"] + 2; // Définie jusqu'ou on va
  5.      }else{
  6.        $i = 0; // Ou du début si on est au début
  7.        $max = 5;
  8.      }
  9.    
  10.      while ( $i < $_GET["num"] )
  11.      {
  12.        echo "<a href=\"?num=".$i.">".$i."</a> ";
  13.        if ( $i > $max )
  14.        {
  15.         echo "<a href=\"?num=".$i+1.">...</a> ";
  16.         break;
  17.        }
  18.        $min = $_GET["num"] - 3;
  19.        if ($i < $min )
  20.        {
  21.        echo  ' ... ';
  22.        }
  23.      }
  24.      }


 
Les trois petit points apparraissent bien quand je veux mais les i ne disparraissent pas :/

Reply

Marsh Posté le 03-07-2005 à 18:17:11    

Un truc de ce genre là ?
http://www.softsharing.net/perso/forums/sys_pages.php


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 03-07-2005 à 19:23:15    

oui exactement  
pourrais tu poster le code stp :D

Reply

Marsh Posté le 03-07-2005 à 19:26:31    

Bon alors ca fera 100€, lol
tiens voilà ta source lol et tu regardera quand même l'adresse du script et l'adresse de la source, lol fallait chercher un peu!!!
http://www.softsharing.net/perso/forums/sys_pages.txt


Message édité par dwogsi le 03-07-2005 à 19:26:51

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 03-07-2005 à 20:15:30    

Merci :)
 
C'est vrai mais il fallais y penser lol :D

Reply

Marsh Posté le 02-09-2005 à 11:47:11    

Merci pour tout ca

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed