Aller au contenu

Condition Include avec IF & ELSE


Seb65

Sujets conseillés

Bonsoir,

Je voudrais lire un fichier texte sous forme de tableau et lorsque par exemple je veux lire la ligne 1 du fichier alors qu'elle n'existe pas je voudrais que la condition m'affiche un include d'une page (a.htm), par contre si la ligne existe on ignore l'include et on affiche la ligne trouvé du fichier texte.

Voici mon code mais je n'arrive pas a faire mon include. Lorsque j'appelle mon include rien ne s'affiche :

<?php
$file = 'a.htm'; // Fichier htm appelé par IF
$tableau=file("liste.txt"); // Lecture du fichier sous forme de tableau
$ligne_1=$tableau[0];
if (empty ($ligne_1)) { // Si ligne 1 vide
$a = include ($file); // Affichage de a.htm
} else {
$result = $ligne_1; // Affichage de la ligne 1
}

echo "$result"; // Affiche la ligne 1 du fichier liste si elle existe
// SINON
echo "$a"; // Affiche le fichier a.htm si la ligne une est vide

?>

Ou je me trompe ? :blush:

Merci

Modifié par Seb65
Lien vers le commentaire
Partager sur d’autres sites

tu te trompe :)

tu ne peux pas mettre un fichier dans une variable avec include() !!

include ça copie/colle tout se qu'il y a dans ton fichier sur ta page php

autrement dit :

$a = include('a.html');

ça va te donné en vrai :

$a = <html> blablablablablablablablablabla </html>

enfin bref tout le contenu de ton fichier sera copier/coller dans le code php et ça te donera pas:

$a = '<html> blablablablablablablablablabla </html>'; //(par exemple)

pour ça tu peux mettre $a = file_get_contents($file) mais je te conseil de regardez d'autre scripts ainsi que de matter des cours pour comprendre mieux comment ça marche...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci pour les réponses.

J'avais essayé avec redfile et file_get_contents ainsi qu'avec fopen :

$file = 'a.htm';

$handle = fopen ($file, "r");

$contents = fread ($handle, filesize ($file));

fclose ($handle);

Mais cela ne me retourne toujours pas la page a.htm :nonono:

Une solution ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci pour les réponses.

J'avais essayé avec redfile et file_get_contents ainsi qu'avec fopen :

$file = 'a.htm';

$handle = fopen ($file, "r");

$contents = fread ($handle, filesize ($file));

fclose ($handle);

Mais cela ne me retourne toujours pas la page a.htm :nonono:

Une solution ?

Merci

Est-elle bien placée, localisée ?

Tu devrais mettre le chemin absolu vers ton fichier, histoire d'etre sûr qu'il soit bien à la place que tu dis. Parce qu'il se peut qu'il ne le lise pas justement parce qu'il ne le trouve pas. ;)

Lien vers le commentaire
Partager sur d’autres sites

Existe-t-il une autre façon de faire pour atteindre ce que je cherche ?

Si ligne 1 du fichier texte existe Affichage de la ligne

Si la ligne 1 du fichier est vide Affichage dune page htm

La je bloque vraiement :(

Lien vers le commentaire
Partager sur d’autres sites

c'est quoi qui ne fonctionne pas ?

ton fopen qui ne trouve pas le fichier, ou ton fread qui ne lit rien ???

parce que sinon c'est jouable ce que tu veux faire:

- après ton fread tu fait un strlen pour savoir si le fichier contenait effectivement quelquechose, et dans ce cas tu affiche, sinon tu inclus la page html que tu veux...

essai de détailler un peu mieux ce qui ne marche pas, parce que là je galere déjà pour comprendre le problème ;)

PS: au risque de dire une grosse connerie, le code que tu a montrer plus haut, il ouvre le fichier, lit le contenu, le stock dans une variable, et referme le handle. J'ose espérer que tu as quand meme pensé à un:

"echo $contents;"

après pour afficher le contenu de la fameuse page a.htm....

Modifié par Xav_
Lien vers le commentaire
Partager sur d’autres sites

<?php
$file = 'a.htm'; // Fichier htm appelé par IF
$tableau=file("liste.txt"); // Lecture du fichier sous forme de tableau
$ligne_1=$tableau[0];
if (empty ($ligne_1)) { // Si ligne 1 vide
include ($file); // Affichage de a.htm
} else {
echo $ligne_1; // Affichage de la ligne 1
}

est comme ça ? je sais pas trop je débute un peu ... :wacko:

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Bonjour,

c'est quoi qui ne fonctionne pas ?

Comme dis plus haut, l'affichage du fichier HTM que se soit avec un include/redfile/ file_get_contents/fopen ne fonctionne pas. En quelque mot, je n'ai pas d'affichage du fichier htm. Même si je remplace tout ceci par un $a = 'toto';

Et en faisaint appel a la variable echo $a; je n'ai pas d'affichage de celle ci :nonono:

J'ai l'impression qu'il passe le IF et oubli de valider et de traiter la variable $a, car j'ai une notice :

Notice: Undefined variable: a in test.php on line 13

:unsure:

ton fopen qui ne trouve pas le fichier, ou ton fread qui ne lit rien ???

Si comme dis aussi plus haut, il n'y a pas de problème de chemin ;)

PS: au risque de dire une grosse connerie, le code que tu a montrer plus haut, il ouvre le fichier, lit le contenu, le stock dans une variable, et referme le handle. J'ose espérer que tu as quand meme pensé à un:

"echo $contents;"

après pour afficher le contenu de la fameuse page a.htm....

Non pas de soucis :) J'ai bien un appel de $contents par echo ou print....

_AT_Ryo : Non cela ne me charge toujours pas mon fichier.

Modifié par Seb65
Lien vers le commentaire
Partager sur d’autres sites

meme un echo d'une variable que tu viens de déclarer ne passe pas...

tu peux nous mettre la derniere version de ton code, contenant toute la partie concernée (lecture fichier, la condition en IF, les echos qu'il en résultent) ?

histoire d'avoir une vision d'ensemble du truc ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Oui un echo ne passe pas... Donc j'ai essayé plusieurs façons qui me même a un résultat similaire, donc je reviens sur le code le plus simple :

<?php
$file = '/var/www/beta/a.htm';
$tableau=file("liste.txt");
$ligne_1=$tableau[0];
if (empty ($ligne_1)) {
$a = include ($file);
} else {
$result = $ligne_1;
}
echo "$result";
echo "$a";

?>

<?php
$file = '/var/www/beta/a.htm';
$tableau=file("ip_list.txt");
$ligne_1=$tableau[0];
if (empty ($ligne_1)) {
$a = 'toto';
} else {
$result = $ligne_1;
}
echo "$result";
echo "$a";

?>

Voila :hypocrite:

Lien vers le commentaire
Partager sur d’autres sites

C'est tout simplement parce que, dans le cas où ton fichier n'est pas vide, tu ne déclares pas la variable $a (et réciproquement s'il est vide, avec la variable $result).

Pourquoi ne pas nommer les variables identiquement, dans ton process ?

<?php
$file = '/var/www/beta/a.htm';
$tableau=file("ip_list.txt");
$ligne_1=$tableau[0];
if (empty ($ligne_1)) {
$result = 'toto';
} else {
$result = $ligne_1;
}
echo $result;
?>

D'autre part, il est inutile de mettre des guillemets lors de l'echo d'une variable.

Lien vers le commentaire
Partager sur d’autres sites

J'ai juste le retour de la $ligne_1 quand elle existe. Si elle est vide je n'ai pas d'include ou d'affichage de toto :(

Tu ne fais mention nulle part à ton fichier $file.

Si quand je fais include ($file); pour le premier code.

Sur le second je ne fais pas appel car je veux afficher toto donc pas d'importance a se niveau la.

Une idée ?

Lien vers le commentaire
Partager sur d’autres sites

<?php

$tableau=file("liste.txt");
$ligne_1=$tableau[0];
if (empty ($ligne_1))
{
include ('a.htm');
}
else
{
echo $ligne_1;
}
?>

et comme ça, ca donne quoi ?

Modifié par Ryo
Lien vers le commentaire
Partager sur d’autres sites

coucou, voila comme ca, chez moi, ca marche trés bien :

<?php

$tableau=file("liste.txt");
$ligne_1=rtrim($tableau[0]);
if (empty ($ligne_1))
{
include ('a.php');
}
else
{
echo $ligne_1;
}

?>

bonne journée :)

Lien vers le commentaire
Partager sur d’autres sites

HaaaAAAaaaa :thumbsup:

Enfin ça marche, je n'avais pas pensé a utiliser "rtrim" pour le traitement de mon tableau.

Merci beaucoup et a bientôt j'espère ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...