Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Salut a tous,
j'ai encor besoin d'aide!
Je sui entrain d'écrir un script de livre d'or qui fonctionne pour l'instant, mais mon problème c'est que les message qui s'affiche sont trier dans l'ordre dans lequel il on été posté!
moi je voudrait que le dernier message soit affiché en premier et non en dernier!!!
(ps: pour chaque message, il y a un fichier texte, et ces fichier son contenue dans le dossier "code", et le nom des fichier est calculer automatiquement avec un compteur que j'ai modifier c'est a dir : "1.txt" "2.txt" "3.txt"...etc
de cette façon, il ne risque pas de se mélanger!!)
Voici le code qui me permet de lister le répertoire et d'afficher les message :
<?php
$dossier = 'code';
if(isset($_COOKIE['affichage'])){
$cookie = $_COOKIE['affichage'];
$val=split('[;.-]',$cookie);
if(is_numeric($val[0]) && strlen($val[0]) < 5){
$max_messages = addslashes($val[0]);
}
else{
$requette = $val[0];
}
if(is_numeric($val[1]) && strlen($val[1]) < 5){
}
else{
$requette = $val[1];
}
}
else{
$max_messages = 10;
}
?>
<table width="800">
<tr><td class="tableau" width="800" valign="middle">
<form method="get" action="">
<p>
nombre de message par page : <select name="nombre" size="1" id="select1">
<option>2</option>
<option>5</option>
<option selected>10</option>
<option>20</option>
<option>50</option>
<option>100</option>
</select>
<input type="submit" value="Valider">
</p>
</form>
<?php
if(isset($_GET['nombre'])){
if(is_numeric($_GET['nombre']) && strlen($_GET['nombre']) < 5){
$max_messages = addslashes($_GET['nombre']);
}
else{
$requette = $_GET['nombre'];
}
}
if(!isset($_GET['messages'])){
$affichage = 0;
$index = $affichage/$max_messages+1;
}
else{
$affichage = addslashes($_GET['messages']);
if(is_numeric($affichage) && strlen($_GET['messages']) < 5){
$index = $affichage/$max_messages+1;
}
else{
$requette = $_GET['messages'];
}
}
if(!isset($_GET['pages'])){
}
else{
$page = addslashes($_GET['pages']);
if(is_numeric($page) && strlen($_GET['pages']) < 5){
$affichage = $page*$max_messages;
$index = $page+1;
}
else{
$requette = $_GET['pages'];
}
}
echo '
</td></tr><tr><td width="800" align="left">';
$tableau = array();
if(is_dir($dossier)) {
$dir = opendir($dossier) or die('Impossible d\'ouvrir le dossier');
while (false !== ($file = readdir($dir))) {
if ($file != '.' && $file != '..') {
$tableau[] = $file;
}
}
}
$total = count($tableau);
if($total == 0 ){
echo'AUCUN MESSAGE,PROFFITEZ-EN POUR ECRIRE LE PREMIER !';
exit();
}
closedir($dir);
if($total < $max_messages){
$unique = 1;
}
$max = $max_messages;
$suivant = $affichage+$max;
$precedent = $affichage-$max;
for ($i=$affichage; $i<$suivant; $i++){
if($i < $total){
include ("$dossier/$tableau[$i]");
}
else{
$fin = 'fin';
break;
}
}
if(!isset($fin)){
$url = $_SERVER['PHP_SELF'].'?messages=';
$pointeur = $suivant;
$suivant='<a class="lien1" href="'.$url.$pointeur.'&nombre='.$max.'"><img class="image" src="../images/suivant.jpg" alt="suivant"></a>';
}
else{
$suivant='';
$suite = $suivant;
}
if($precedent >= 0){
$url2 = $_SERVER['PHP_SELF'].'?messages=';
$pointeur2 = $precedent;
$precedent = '<a class="lien1" href="'.$url2.$pointeur2.'&nombre='.$max.'"><img class="image" src="../images/precedent.jpg" alt="precedent"></a>';
}
else{
$precedent = '';
}
if(!isset($unique)){
$retour = $precedent;
$suite = $suivant;
echo '<tr><td class="tableau" align="center" valign="middle"><p>'.$retour;
}
$pages = ceil($total/$max);
$index2 = $index-4;
if($index2 < 0){
$index2 = 0;
}
$index3 = $index+4;
if($index3 > $pages){
$index3 = $pages;
}
for ($j=$index2; $j<$index3; $j++){
$url3 = $_SERVER['PHP_SELF'].'?pages=';
$pointeur3 = $j;
$numero = $j+1;
$numero1 = ereg_replace(''.$index.'','<b><font size="5">'.$index.'</font></b>',$numero);
$pagination = '<a href="'.$url3.$pointeur3.'&nombre='.$max.'&taille='.$miniatures.'">'.$numero1.'|</a>';
if(!isset($unique)){
echo $pagination; //
}
}
echo $suite;
?>
que doi je modifier pour afficher le résultat dans le sens inverse?
merci de votre aide
Hors ligne
Personne pour m'aider?
Hors ligne
hello,
visiblement, c'est cette partie là du code qui affiche les fichiers
for ($i=$affichage; $i<$suivant; $i++){
if($i < $total){
include ("$dossier/$tableau[$i]");
}je te suggère d'afficher les fichiers en partant de la fin de ton tableau :
for ($i=$affichage; $i<$suivant; $i++){
if($i < $total){
include ("$dossier/$tableau[$total-1 - $i]");
}mais sinon, une base de données, c'est plus pratique !!
une remarque en passant, je ne suis pas sûr que ça contunue de fonctioner à partir de 10 messages, puisque 1.txt > 11.txt quand on veut trier par nom de fichier. peut être qu'en mettant l'heure dans tes noms de fichier, tu pourrais ensuite les trier comme tu veux avec les fonctions de php
++
Hors ligne
Merci pour ta reponse,
Pour la bdd c vrait, j'y ai pensé mais je m'y connait encors mois que en php!
Je préfère apprendre d'abord ce langage et ensuite je m'interresserai au sql!
Pour le trie, je pence avoire résolue le problème, maintenant le nom des fichier est comme ceci :
"2-jj-mm-aa-pseudo.txt","3-jj-mm-aa-pseudo.txt"etc...
et pour les réponse, c'est "2.2-jj-mm-aa-pseudo.txt","3.3-jj-mm-aa-pseudo.txt"etc...
Je commence a compter a partire de 2!
C'est un peut plus casse tête mais sa fonctionne!
Encors une petit question, si je créer un fichier par message, au bout de 200 ou 1000 ou même 10000 message, sa risque pas de bugger?
C'est peut être mieu de tout mêtre dans un seul fichier texte?
A oui au faite, pour ton code, je l'ai placer comme tu m'a dis et j'ais un message d'erreur :
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ']' in d:\www\************************\teste.php on line 103
La ligne 103 correspond a ceci :
include ("$dossier/$tableau[$total-1 - $i]");
Merci encors pour ton aide
Hors ligne
je te conseille vraiment de te mettre au SQL, tu vas passer de pas mal de ligne de code à en gros 4... en faisant tous les tris que tu veux. Il y a déjà des tutos très bien faits sur ce site : cf http://www.phportail.net/articles/
effectivement, petite boulette !
include ("$dossier/$tableau[". ($total-1 - $i) ."]");vu les formats de nom de tes fichiers, la date n'est pas très utile (il faudrait plutôt aaaa-mm-jj, et en tête de fichier pour le tri par date sur les messages soit effectif, mais à ce moment là, tu perds le tri par thread de message) et tu n'as pas vraiment réglé le pb du nombre de message > 10 (enfin bon, ça tient jusqu'à 19 maintenant
)
Hors ligne
g essayé comme tu mas dis, et sa ne fonctionné pas, il y avait encors un message d'erreur a cause des "" donc je les modifier comme ceci :
closedir($dir);
$bidule = ($total-1 - $i);
if($total < $max_messages){
$unique = 1;
}
$max = $max_messages;
$suivant = $affichage+$max;
$precedent = $affichage-$max;
for ($i=$affichage; $i<$suivant; $i++){
if($i < $total){
include ("$dossier/$tableau[$bidule]");
}
Le problème maintenant, c'est que sa m'affiche le dernier message fois le nombre de message présent dans le livre!
On va y arrivé mrd!
encors merci de ton aide
Je vais jeter un coup d'oeil sur les bdd mais bon sa voudrait dir que je devrait tout recommencer du début, car mon projet serait de fait un script de site complet qui proposerais divers fonction comme livre d'or, télécargement de musique, visionnage de clip, page partenaire... le tout administrable et la g presque tout finis et sa m'emmerde un peut de tout recommencer!
enfin on verra je vais déjea finire sans bdd et après je le referais peut être!
On aprend toujours, c'est sa qui est cool!
en tout cas tout se que je sait, c'est grace a des forum comme celui-ci, continuez, c'est cool
Hors ligne
Plus rien? snif
Hors ligne
Je vous remerci pour toutes les réponse!
Dzl de ne pas avoire répondu plus tot mais vu que tu ma parlé des bdd, je me sui mis a lire les cours du site du zéro qui sont très interressant, et la c bon g compris, tu avait réson, les bdd c moin de ligne a écrire, et c beaucoup plus simple que les fichier texte!
Je recommence tout mon script en bdd!!
merci et dzl de t'avoir fait perdre ton temps, se sujet a été écrit pour rien vue que je repar sur une nouvelle base!
encors dzl et merci!
Lien pour ce qui veulent progresser comme moi :
http://www.siteduzero.com/
Hors ligne