IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Livre d'or sur plusieurs pages [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Livre d'or sur plusieurs pages
    J'ai programmé un livre d'or qui contient :

    - Une page html avec le formulaire pour poster un message

    - Un fichier txt qui contient les messages

    - Une page php qui enregistre les messages dans le fichier txt

    - Une page php qui affiche les messages

    Mon problème est que les messages sont tous affichés sur la même page. J'aimerais qu'ils soient affichés sur plusieurs pages. Est-ce possible en php ? Si oui, comment faire. merci d'avance

    Si cela peut vous être utile l'adresse du site avec le livre d'or : http://dayofmidday.isuisse.com

  2. #2
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    Bonjour,

    fais une petite recherche sur ce forum avec le terme pagination. tu en trouvera beaucoup avec des resultats d'une requete mysql. A toi de l'adapter a un fichier txt
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  3. #3
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    sinon une idee serait de charger tout le fichier txt en session par exemple dans un tableau.
    Et selon la page, tu affiche les données qui correspondent.
    Tout énigme a une solution ! Tout est question de discipline !

  4. #4
    Invité
    Invité(e)
    Par défaut
    C'est ce que j'utilise pour afficher les messages. Je prends tout ce qu'il y a dans mon fichier txt et je le mets dans un tableau mais je ne sais pas comment m'y prendre pour n'afficher qu'un certain nombre de messages par page et comment créer ces pages. Qqun pourais me donner un algorithme ?

  5. #5
    Membre éprouvé Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Points : 1 080
    Points
    1 080
    Par défaut
    Stocker tes messages dans une base de données et utiliser la clause LIMIT en SQL, serai plus intéressant et beaucoup plus pratique!

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par babastutz
    C'est ce que j'utilise pour afficher les messages. Je prends tout ce qu'il y a dans mon fichier txt et je le mets dans un tableau [...]
    code ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?
     
    				$message[10000];
    				$c=0;
     
    				$fp = fopen("messages.txt","r");
     
    				while (!feof($fp)) {
     
    					$p = fgets($fp, 50);
    					$e = fgets($fp, 50);
    					$u = fgets($fp, 100);
    					$d = fgets($fp, 30);
    					$m = fgets($fp, 10000);
    					$m=str_replace("_","<br/>",$m);
     
    					$message[$c]="<table border=0 width=600 bgcolor=#FFCC00><tr><td>";
    					$message[$c].="<font face='arial'><strong>$p</strong>&nbsp;&nbsp;&nbsp;&nbsp;posté le $d&nbsp;&nbsp;&nbsp;&nbsp;</font>";
     
    					if(strncmp ($e, "no", 2)!=0) $message[$c].="<a href=mailto:$e><img src='mail.gif' border='0' width='12' height='10'/></a>&nbsp;&nbsp;&nbsp;";
     
    					if(strncmp ($u, "no", 2)!=0) $message[$c].="<a href='$u' target='_blank'><img src='url.gif' border='0' width='12' height='12'/></a>";
     
    					$message[$c].="</td></tr></table>";
     
    					$message[$c].="<table border=0 width=600 background='tableau.jpg'><tr><td>";
    					$message[$c].="<font face='arial'>$m</font>";
    					$message[$c].="</td></tr></table><br/><br/>";
     
    					$c++;
    				}
     
    				fclose($fp);		
     
    				for ($i=$c-2;$i>=0;$i--) echo $message[$i];
     
    			?>

  8. #8
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    Citation Envoyé par babastutz
    C'est ce que j'utilise pour afficher les messages. Je prends tout ce qu'il y a dans mon fichier txt et je le mets dans un tableau mais je ne sais pas comment m'y prendre pour n'afficher qu'un certain nombre de messages par page et comment créer ces pages. Qqun pourais me donner un algorithme ?
    Je crains que tu ne rencontres très vite des problèmes avec un fichier texte...

    Imagines si tu possèdes des centaines de messages? Tu vas tout stocker en mémoire?? La lecture du fichier texte prendras du temps et énormément de mémoire...

    De plus à chaque page de ton livre d'or tu vas être obligé de relire ton fichier texte. Niveau optimisation c'est bien moyen. Pourquoi ne prends tu pas une base de données MySql? C'est gratuit et tous les hébergeurs PHP en proposent une

  9. #9
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Tu récupères une valeur par l'intermédiaire de $_GET comme:

    livre.php?debut=0&fin=10

    Imaginon tu as 100 lignes pas messages.
    Tu commences ta boucle while() à 0, mais tu executes le code intérieur si la ligne courante >= debut*100
    Puis pareil dans ton while() du mets un if (ligne_courante <= fin*100

    Peu etre qu'il y a plus simple.

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est sûr qu'une base de données MySQL serait bien plus appropriée mais je n'en ai jamais utilisé et je ne sais pas par ou commencer.

  11. #11
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    Citation Envoyé par Anduriel
    Tu récupères une valeur par l'intermédiaire de $_GET comme:

    livre.php?debut=0&fin=10

    Imaginon tu as 100 lignes pas messages.
    Tu commences ta boucle while() à 0, mais tu executes le code intérieur si la ligne courante >= debut*100
    Puis pareil dans ton while() du mets un if (ligne_courante <= fin*100

    Peu etre qu'il y a plus simple.
    Commencer sa boucle à 0 c'est pas trés optimisé...

    Autant la commencer à la valeur de début et sortir quand tu arrives à la valeur fin.

    Pourquoi faire compliqué quand on peut fairesimple...

  12. #12
    Invité
    Invité(e)
    Par défaut
    J'ai créée la base de données et j'ai mis mes informations dedans. Tout à l'air de marcher sauf que quand je veux afficher le message il est affiché sur une ligne. J'ai regardé avec PHPMyAdmin et dans ma base de données les à la ligne sont bien visible. Je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <?php
     
    		// Connexion au serveur
     
    		mysql_connect('localhost', 'pseudo','password') or die("erreur de connexion au serveur");
     
    		mysql_select_db('nom_de_la_base') or die("erreur de connexion a la base de donnees");
     
    		// Creation et envoi de la requete
     
    		$query = "SELECT nom_guest, date_guest, mail_guest, url_guest, mes_guest FROM tb_guestbook ORDER BY date_guest";
     
    		$result = mysql_query($query);
     
    		// Recuperation des resultats
     
    		while($row = mysql_fetch_row($result)){
     
    		$p = $row[0];
     
    		$d = $row[1];
     
    		$e = $row[2];
     
    		$u = $row[3];
     
    		$m = $row[4];
     
     
     
    		echo "<table border='0' width='600' bgcolor='#FFCC00'><tr><td>";
    		echo "<font face='arial'><strong>$p</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posté le : $d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>";
     
    		if($e!="") echo "<a href='mailto:$e' target='_blank'><img src='mail.gif' border='0'></a>&nbsp;&nbsp;&nbsp;";
     
    		if($u!="") echo "<a href='$u' target='_blank'><img src='url.gif' border='0'></a>";
     
    		echo "</tr></td></table><table border='0' width='600' background='tableau.jpg'><tr><td>";
    		echo "$m";
    		echo "</tr></td></table><br/>";
     
    		}
     
    		// Deconnexion de la base de donnees
     
    		mysql_close();
     
    		?>

  13. #13
    Membre habitué Avatar de Orionmel
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 174
    Points : 185
    Points
    185
    Par défaut
    Dans ta base de données les retours à la ligne sont stockés sous la forme de \n, il faut les transformer en <br> avant d'afficher ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace("\n","<br>",$ton_message);

  14. #14
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    ou nl2br

  15. #15
    Invité
    Invité(e)
    Par défaut
    C'est bon mon livre d'or fonctionne comme je le veux. Merci de m'avoir aidé c'est super sympa.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR] probleme de somme sur plusieurs pages
    Par d@rthwing dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 26/08/2005, 14h31
  2. [Struts]Affiche d'une liste sur plusieurs pages
    Par guillaume_85 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2005, 20h23
  3. [CR?] Tableaux sur plusieurs pages
    Par Nout dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 18/05/2005, 14h58
  4. [JSP] affichage de resultat sur plusieurs pages
    Par de LANFRANCHI dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 10/02/2005, 10h00
  5. [CR8] Problème tableau sur plusieurs pages???
    Par christophe28 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/11/2004, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo