l'affichage d'un message

Eléphanteau du PHP | 14 Messages

12 août 2007, 00:15

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 août 2007, 00:26

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 ? :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 14 Messages

12 août 2007, 00:35

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")

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 août 2007, 11:51

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 14 Messages

12 août 2007, 17:56

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);
}
?>

ViPHP
ViPHP | 3607 Messages

12 août 2007, 18:12

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)

Eléphanteau du PHP | 14 Messages

12 août 2007, 18:33

le 'int' devant filesize c'est quoi ?? je dois le mettre ??
et 'string' devant filename ?? :?:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 août 2007, 18:39

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 ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 14 Messages

12 août 2007, 18:40

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")

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 août 2007, 18:49

bah essaye le code que tu a donné précédemment...
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 14 Messages

12 août 2007, 19:33

tous ce qui sont sur le forum c'est ce que j'ai deja utilisé :(

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

13 août 2007, 01:08

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...
Quand tout le reste a échoué, lisez le mode d'emploi...

led
Invité n'ayant pas de compte PHPfrance

13 août 2007, 10:56

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

ViPHP
ViPHP | 928 Messages

13 août 2007, 11:28

Bonjour, essaie avec
if (filesize($consultez) == 0) 
plutôt.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 août 2007, 12:07

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) {
  ...
}
?>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...