Seb65 Posté 28 Mai 2006 Posté 28 Mai 2006 (modifié) 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// SINONecho "$a"; // Affiche le fichier a.htm si la ligne une est vide?> Ou je me trompe ? Merci Modifié 28 Mai 2006 par Seb65
xorax Posté 29 Mai 2006 Posté 29 Mai 2006 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...
captain_torche Posté 29 Mai 2006 Posté 29 Mai 2006 On pourrait plutôt, dans ce cas précis, utiliser la fonction readfile().
Seb65 Posté 29 Mai 2006 Auteur Posté 29 Mai 2006 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 Une solution ? Merci
Anonymus Posté 29 Mai 2006 Posté 29 Mai 2006 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 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.
Seb65 Posté 29 Mai 2006 Auteur Posté 29 Mai 2006 Oui le fichier a.htm est bien localisé Que se soit /var/www/a.htm ou http://adresseip/a.htm cela reste la même chose Je ne comprend vraiment pas !
Seb65 Posté 29 Mai 2006 Auteur Posté 29 Mai 2006 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
Xav_ Posté 30 Mai 2006 Posté 30 Mai 2006 (modifié) 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é 30 Mai 2006 par Xav_
Ryo Posté 30 Mai 2006 Posté 30 Mai 2006 <?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 ...
Seb65 Posté 30 Mai 2006 Auteur Posté 30 Mai 2006 (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 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 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é 30 Mai 2006 par Seb65
Xav_ Posté 30 Mai 2006 Posté 30 Mai 2006 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
Seb65 Posté 31 Mai 2006 Auteur Posté 31 Mai 2006 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
captain_torche Posté 31 Mai 2006 Posté 31 Mai 2006 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.
Seb65 Posté 31 Mai 2006 Auteur Posté 31 Mai 2006 Non cela ne change toujours rien :!: Je n'ai aucun retour de toto ou de mon fichier htm.
captain_torche Posté 31 Mai 2006 Posté 31 Mai 2006 Vu ton code, en l'état, tu devrais juste avoir un retour 'toto', ou 'première ligne de ip_list.txt'. Tu ne fais mention nulle part à ton fichier $file.
Seb65 Posté 31 Mai 2006 Auteur Posté 31 Mai 2006 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 ?
Ryo Posté 31 Mai 2006 Posté 31 Mai 2006 (modifié) <?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é 31 Mai 2006 par Ryo
Seb65 Posté 31 Mai 2006 Auteur Posté 31 Mai 2006 Rien non plus La je suis vraiment out ! Et je ne vois pas une autre solution...
Ryo Posté 31 Mai 2006 Posté 31 Mai 2006 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
Seb65 Posté 31 Mai 2006 Auteur Posté 31 Mai 2006 HaaaAAAaaaa 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant