Page 1 sur 2

l'affichage d'un message

Posté : 12 août 2007, 00:15
par NiReaS
Tout d'abord rebonjour à tous !!

Voila je suis toujours sur mon livre d'or et j'aimerais afficher un message quand le livre d'or est vide. J'utilise un fichier .txt pour stocker les messages.
<?php

$consultez="comm.txt";
readfile($consultez);

?>
Je vois le principe mais je ne vois pas quoi rédiger. C'est quand le fichier est vide que j'aimerais afficher un message du genre: 'Aucun message pour le moment', parce que quand il y a rien j'ai une page blanche :? .

Voila merci d'avance

Posté : 12 août 2007, 00:26
par Ryle
Toujours regarder la documentation des fonctions que tu utilises... ce que te retourne la fonction readfile() notamment.

Il ne devrait pas être bien compliqué de mettre en place un test pour vérfier si le nombre d'octets lu est égal à zéro et dans ce cas afficher un message particulier.. hmm ? :)

Posté : 12 août 2007, 00:35
par NiReaS
J'ai mis sa :?
<?php
$consultez="comm.txt";

if ($consultez <= "0")
{
echo "Aucun message pour le moment";
}

else 
{
readfile($consultez);
}
?>
C'est toujours une page blanche :x

J'ai également essayer avec
if ($consultez <= "0 Ko")

Posté : 12 août 2007, 11:51
par @rthur
Bonjour,

En effectuant ceci:
$consultez="comm.txt";
Tu mets simplement dans la variable "$consultez", les 8 lettres du mot "comm.txt"

Donc en effectuant cela:
if ($consultez <= "0")
Tu demande à PHP de vérifier que le contenu de la variable (et pas le fichier) $consultez (donc toujours les 8 lettres "comm.txt") soit "inférieur ou égal" à la variable texte "0" (vu que tu as utilisé des guillemets)

De même, avec la condition suivante:
if ($consultez <= "0 Ko")
Tu demande à PHP de vérifier que le contenu de la variable (et pas le fichier) $consultez (donc toujours les 8 lettres "comm.txt") soit "inférieur ou égal" à la variable texte (c'est à dire les 4 caractères) "0 Ko"


C'est exactement la même chose que si tu demandait à PHP: "Est-ce que l'avion est inférieur ou égal à du chocolat?"
C'est incompréhensible comme question car on n'a indiqué nulle part la valeur des termes "avion" et "chocolat" pour pouvoir les comparer (le prix? la taille? le poids? ...)


=> Pour pouvoir comparer 2 éléments avec un opérateur de comparaison, il faut que les 2 éléments soient des valeurs chiffrées.
Prix de l'avion = 8190000;
Prix du chocolat = 2.99;
Est-ce que le prix de l'avion est inférieur ou égal au prix du chocolat?
Pour connaître la taille d'un fichier en octet, PHP a une fonction toute faite: http://fr.php.net/filesize

Posté : 12 août 2007, 17:56
par NiReaS
Donc il faut que je mette ça alors ????
<?php
$consultez="comm.txt";
if (filesize($consultez) <= "0")
{
echo "Aucun message pour le moment";
}

else 
{
readfile($consultez);
}
?>

Posté : 12 août 2007, 18:12
par jojolapine
ce n'est pas encore sa, sur le manuel, on peut voir ceci:
int filesize ( string filename )
ce qui signifie que la fonction retourne un entier...
donc si tu compares des carottes et des olives, tu vas t'etouffer avec les noyaux....
Il faut donc comparer deux entier... (ce que je te laisse le soin de faire)

Posté : 12 août 2007, 18:33
par NiReaS
le 'int' devant filesize c'est quoi ?? je dois le mettre ??
et 'string' devant filename ?? :?:

Posté : 12 août 2007, 18:39
par @rthur
Donc il faut que je mette ça alors ????
ça ne coûte pas plus cher de tester pour voir ce que ça donne, plutôt que de poser la question ;)

Posté : 12 août 2007, 18:40
par NiReaS
C'est ce que je vien de faire :wink:

Sauf qui me dit que j'ai une erreur dans ma ligne qui contient
if (int filesize(string $consultez) <= "0")

Posté : 12 août 2007, 18:49
par @rthur
bah essaye le code que tu a donné précédemment...

Posté : 12 août 2007, 19:33
par NiReaS
tous ce qui sont sur le forum c'est ce que j'ai deja utilisé :(

Posté : 13 août 2007, 01:08
par @rthur
tous ce qui sont sur le forum c'est ce que j'ai deja utilisé :(
Et bah donne nous les messages d'erreur si tu veux un coup de main pour débuguer...

Posté : 13 août 2007, 10:56
par led
int filesize ( string filename )
Ceci est le prototype de la fonction filesize.
Le int est le type d'element qu'elle renvoie, le string est le type d'element qu'elle prend en argument.
Ainsi filesize prend en argument le nom d'un fichier et renvoie un entier. Il ne faut jamais le mettre quand tu utilise une fonction.

Si tu as d'autres problèmes n'hesite pas

Posté : 13 août 2007, 11:28
par Genova
Bonjour, essaie avec
if (filesize($consultez) == 0) 
plutôt.

Posté : 13 août 2007, 12:07
par Ryle
Et pourquoi vous ne voulez pas qu'il récupère tout simplement la valeur retournée par la fonction readfile() qu'il a utilisé au début de ce post :?: y avait juste un test à ajouter...
<?php 

$consultez="comm.txt"; 
$size = readfile($consultez); 
if ($size == 0) {
  ...
}
?>