begin process at 2012 05 31 05:21:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Ouvrir un fichier avec fopen


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ouvrir un fichier avec fopen

dimanche 1 février 2009 à 22:05:38 | Ouvrir un fichier avec fopen

ecolom

Bonjour à tous,

j'ai un formulaire avec lequel on peut attacher un fichier.
Un second formulaire me permet d'afficher toutes les données encodées par le premier formulaire.
J'ai une zone qui affiche le nom du fichier que l'on a attaché.
J'aimerais à côté de cette zone placer un bouton voir afin d'éditer le fichier.
Mon exemple de code:

<tr>
<td>Nom du fichier attaché :</td>
<td>&nbsp; <input type="text" name="fichierannexe"
value="<?php echo $ticket['fichierannexe']; ?>" /></td>
<input type='submit' value='voir' <?php
if (!($f=fopen("setup.txt","r")))
exit("Unable to open file!");
?>/>
</tr>


Malheureusement, j'ai un message erreur et je ne vois pas comment je peux écrire le code afin d'ouvrir le fichier via le bouton VOIR tout en restant dans mon formulaire.
Pour l'instant, j'ai fixer le nom de fichier mais par après j'adapterai la variable ' fichierannexe'
Chaque chose en son temps.

Pouvez-vous m'aider et où me mettre sur la voie svp.

Merci à tous.

lundi 2 février 2009 à 07:44:24 | Re : Ouvrir un fichier avec fopen

kohntark

Membre Club
Salut,

Il te faudra traiter le contenu du fichier avant de l'afficher, sinon gare aux problèmes de sécurité.

if (!($f=fopen("setup.txt","r")))
exit("Unable to open file!");

=>
Tu ne fais qu'ouvrir le fichier, normal qu'il ne s'affiche pas, en plus c'est dans le value d'un bouton !

Tu peux faire un truc comme ça :
A l'arrivée sur la page, tu mets le contenu du fichier dans une variable javascript :
if (false === $file = file_get_contents('setup.txt')) {
  $file = 'Unable to open file !';
}


une tite fonction JS :
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo $file; ?>';
}



Puis le bouton et le div :
<div id="fileContent"> </div>
<input type="button" onclick="showFile();" value="Voir" />


Cordialement,

Kohntark -

lundi 2 février 2009 à 21:37:02 | Re : Ouvrir un fichier avec fopen

ecolom

Bonjour,

merci pour la réponse Kohntark, j'espèrais ne pas utiliser de JS dans ce type de demande. Le JS et moi, ça fait deux... :-)

J'ai essayé d'appliquer les codes que tu m'as transmis mais cela ne fonctionne pas. Voir tes codes en rouge dans mon prog. J'ai insérér les deux premiers codes dans une fonction <script> et le dernier dans la ligne qui correspond à l'affichage du nom de fichier.

<?php
echo "<html>";
echo "<head>";
echo "<title> Demande intervention</title>";

echo "</head>";
echo "<body>";
include('..\include\gestion_sg\param.inc.php');
       $liendb = mysql_connect($host,$user,$pws);
       mysql_select_db ($database);
    if ($_REQUEST['enregistre'] == "oui")
      {
$sql = "UPDATE ticket set status = '".$_REQUEST['Status']."',".
       "imputation = '".$_REQUEST['imputation']."',".
    "description = '".$_REQUEST['description']."',".
       "datesouhaitee = '".$_REQUEST['datesouhaitee']."',".
    "dateprevue = '".$_REQUEST['dateprevue']."',".
    "operateur = '".$_REQUEST['operateur']."',".
    "datefin = '".$_REQUEST['datefin']."'".
    "WHERE numticket = '".$_REQUEST['numticket']."'";
    mysql_query ($sql);
    }
  
echo "<h1>Demande d'intervention IT </h1>";
echo "<p align=left> Fiche Intervention IT - Ticket N°[".$_REQUEST['numticket']."]</p>";
$sql = "SELECT * FROM ticket WHERE numticket = '".$_REQUEST['numticket']."'";
$resultat = mysql_query ($sql);
$ticket = mysql_fetch_array ($resultat);
?>
<script>
if (false === $file = file_get_contents('setup.log')) {
  $file = 'Unable to open file !';
}
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo $file; ?>';
}
</script>
<form action="ticket_edite.php" method="post">
<input type="hidden" name="enregistre" value="oui" />
<input type="text" name="numticket"
    value="<?php echo $_REQUEST['numticket']; ?>" />
<table width="886">
<tr>

<tr>
<td>Nom du fichier attaché :</td>
<td>&nbsp; <input type="text" name="fichierannexe"
value="<?php echo $ticket['fichierannexe']; ?>" />
<div id="fileContent"> </div>
<input type="button" onclick="showFile();" value="Voir" /></td>

</tr>


Il y a quelque chose qui m'échappe et c'est certainement le placement de ton code dans mon programme.
J'ai déjà essayer plusieurs possibilités mais en vains.
Peux-tu me dire où je fais l'erreur ?

Merci

mardi 3 février 2009 à 08:10:50 | Re : Ouvrir un fichier avec fopen

kohntark

Membre Club
Salut,

Je n'ai regardé que très rapidement.
<script>
if (false === $file = file_get_contents('setup.log')) {
  $file = 'Unable to open file !';
}
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo $file; ?>';
}
</script>
=>
<script type="text/javascript">
<?php // c'est du php ici, pas du JS
if (false === $file = file_get_contents('setup.log')) {
  $file = 'Unable to open file !';
}
?>
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo $file; ?>';
}
</script>


Ton script est difficile à lire, par ex :
echo "<html>";
echo "<head>";
echo "<title> Demande intervention</title>"; echo "</head>";
echo "<body>";

=>
echo '
<html>
<head>
<title> Demande intervention</title>
</head>
<body>';

$_REQUEST['Status']
=> mauvaise idée, il peut y avoir des problèmes de sécurité
$status = strip_tags($_POST['status']);


$sql = "UPDATE ticket set status = '".$_REQUEST['Status']."',".
       "imputation = '".$_REQUEST['imputation']."',".
    "description = '".$_REQUEST['description']."'

=>
Après traitement sécurité des variables issues du formulaire (comme ci dessus)
$sql = "UPDATE ticket SET
status = '$Status',
imputation = 'imputation'',
description = 'description',
[etc ...]

C'est nettement plus lisible et moins lourd, non ?

Cordialement,

Kohntark -

mardi 3 février 2009 à 14:42:17 | Re : Ouvrir un fichier avec fopen

ecolom

Hello,

j'ai appliqué le code script que tu as modifié.
Mais sans résultat, j'ai tjrs en bas de l'explorer une erreur sur la page.

J'ai changé aussi la partie echo. En fait je me suis inspirer du livre PHP5 de micro application qui utilisait les code echo " <HTML>";
Ta méthode fonctionne alors je l'applique. ;-)
ça me permet aussi d'apprendre d'autres subtilités de ce langage.
Pour ce qui est des variables, je testerai plus tard car mon gros soucis c'est que ce foutu fichier ne s'ouvre pas quand j'appuie sur le bouton. C'est un fait que ce que tu écris est plus simple que tout mes ".$_REQUEST ( c'était encore un extrait que j'ai appliqué du livre PHP5 ). pfffffff.

Ma question est :
La partie script que tu as écrite ci-dessus doit-elle etre placée entre les head ou après la ligne Form de mon formulaire ?
Si c'est entre les head, c'est incorrect car les echo perturbent ton script.
Si c'est en dessous de la ligne Form, ça ne fonctionne pas.
Puis-je ajouter le chemin du fichier  C:\TEST.TXT ?
Helpppppp... J'en rêve de ce code

<?php
echo '
<html>
<head>
<title> Demande intervention</title>
</head>
<body>';
include('..\include\gestion_sg\param.inc.php');
       $liendb = mysql_connect($host,$user,$pws);
       mysql_select_db ($database);
    if ($_REQUEST['enregistre'] == "oui")
        {
$sql = "UPDATE ticket set status = '".$_REQUEST['Status']."',".
       "imputation = '".$_REQUEST['imputation']."',".
    "description = '".$_REQUEST['description']."',".
       "datesouhaitee = '".$_REQUEST['datesouhaitee']."',".
    "dateprevue = '".$_REQUEST['dateprevue']."',".
    "operateur = '".$_REQUEST['operateur']."',".
    "datefin = '".$_REQUEST['datefin']."'".
    "WHERE numticket = '".$_REQUEST['numticket']."'";
    mysql_query ($sql);
    }
  
echo "<h1>Demande d'intervention SG </h1>";
echo "<p align=left> Fiche Intervention IT - Ticket N°[".$_REQUEST['numticket']."]</p>";
$sql = "SELECT * FROM ticket WHERE numticket = '".$_REQUEST['numticket']."'";
$resultat = mysql_query ($sql);
$ticket = mysql_fetch_array ($resultat);
?>
<form action="ticket_edite.php" method="post">

<script type="text/javascript">
<?php // c'est du php ici, pas du JS
if (false === $file = file_get_contents('c:\test.txt')) {
  $file = 'Unable to open file !';
}
?>
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo $file; ?>';
}
</script>

<input type="hidden" name="enregistre" value="oui" />
<input type="text" name="numticket"
    value="<?php echo $_REQUEST['numticket']; ?>" />
<table width="886">
<tr>
<td>Nom du fichier attaché :</td>
<td>&nbsp; <input type="text" name="fichierannexe"
value="<?php echo $ticket['fichierannexe']; ?>" /></td>
</tr>

<div id="fileContent"> </div>
<input type="button" onclick="showFile();" value="Voir Le Fichier Annexe" />

As-tu une autre idée kohntark ?

Merci

mardi 3 février 2009 à 19:14:05 | Re : Ouvrir un fichier avec fopen

kohntark

Membre Club
Salut,


La partie script que tu as écrite ci-dessus doit-elle etre placée entre les head ou après la ligne Form de mon formulaire ?
En principe pas besoin. Par contre passer "<script type="text/javascript">" en dessous du code php qui le suit est une bonne idée (encore qu'il s'agisse plus d'un pb de présentation que d'autre chose)

Pour ce qui est des variables, je testerai plus tard car mon gros soucis c'est ...
C'est aussi que ton code est peu lisible et que, dans certain cas cela peut poser pb (nottament le REQUEST)
Un code bien présenté et 100 fois plus facile à débogguer !

J'ai retouché un peu le code; certaines lignes pour la lisibilité, d'autres pour le fonctionnement.

<?php
include('..\include\gestion_sg\param.inc.php');
$liendb = mysql_connect($host,$user,$pws);
mysql_select_db ($database);

if (isset($_POST['enregistre']) && $_POST['enregistre'] == 'oui') {
  $sql = "UPDATE ticket set status = '".$_REQUEST['Status']."',".
       "imputation = '".$_REQUEST['imputation']."',".
    "description = '".$_REQUEST['description']."',".
       "datesouhaitee = '".$_REQUEST['datesouhaitee']."',".
    "dateprevue = '".$_REQUEST['dateprevue']."',".
    "operateur = '".$_REQUEST['operateur']."',".
    "datefin = '".$_REQUEST['datefin']."'".
    "WHERE numticket = '".$_REQUEST['numticket']."'";
    if (false == $q = mysql_query($sql)) die(mysql_error().'<br />'.$sql);
}

$sql = "SELECT * FROM ticket WHERE numticket = '".$_POST['numticket']."'";
$resultat = mysql_query ($sql);
$ticket = mysql_fetch_array ($resultat);

if (false === $file = @file_get_contents('c:/test.txt')) {
  $file = 'Unable to open file !';
}
?>


<html>
<head>
<title>Demande intervention</title>
</head>
<body>

<?php
echo "<h1>Demande d'intervention SG </h1>
<p align=left> Fiche Intervention IT - Ticket N°[".$_POST['numticket']."]</p>";
?>


<script type="text/javascript">
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo nl2br($file); ?>';
}
</script>


<form action="ticket_edite.php" method="post">
<input type="hidden" name="enregistre" value="oui" />
<input type="text" name="numticket" value="<?php echo $_POST['numticket']; ?>" />
<table width="886">
<tr>
<td>Nom du fichier attaché :</td>
<td>&nbsp; <input type="text" name="fichierannexe" value="<?php echo $ticket['fichierannexe']; ?>" />
</td>
</tr>
</table>
</form>

<div id="fileContent"> </div>
<input type="button" onclick="showFile();" value="Voir Le Fichier Annexe" />
... ??

Il y a encore de nombreuses erreurs dans ce code, mais dans un premier temps assure toi que le bouton "voir" fonctionne.
Attention :
La lecture du fichier c:/test.txt risque d'échouer suivant comment il est écrit et dépend de la manière dont il l'a été (éditeur de texte, OS, etc ...) Si ça ne fonctionne pas écrit une simple phrase dans le fichier (sans retour à la ligne) et re teste.

Où est ton bouton de validation du formulaire ?

Bon courage,

Kohntark -

mardi 3 février 2009 à 21:57:37 | Re : Ouvrir un fichier avec fopen

ecolom

Réponse acceptée !
Re,

D'accord avec toi pour la présentation du code. Mais je me suis inspiré du livre PHP5 pour pouvoir commencer à dev. dans ce langage. Si en plus les livres se retournent contre moi...
Merci pour tes explications qui me sont très utiles et qui me permettent d' ouvrir les yeux sur le sujet.

J'ai adapté selon tes indications et il n'y a plus de message erreur. Par contre, j'ai systématiquement  ==> Unable to open file !
j'ai changé à plusieurs reprises la façon d'écrire le path. Sans résultat.
Je pense que nous sommes dans le bon....
Une question :
Pourquoi avoir ajouté ==> nl2br($file)  cela exprime un saut de ligne .
Cela ne m'intèresse pas du fait que je veux ouvrir le fichier à l'extérieur de mon formulaire.
Il faut savoir aussi que j'aurai plusieurs extensions de files.
DOC - JPG - TXT - XLS - PDF

Afin qu'il n'y ait pas confusion dans les idées, j'ai ajouté le code ci-dessous pour effectuer un parcourir sur le disque.
<input type="file" name="fichierannexe" />
Je sélectionne le fichier désiré et clique sur bouton droit pour afficher le popup windows.
A partir de là, je peux choisir delete - rename - etc.. surtout ouvrir et dans ce cas, le fichier s'ouvre comme je le désire.

Le bouton qui se trouve dans mon code doit récupérer la variable de ma zone fichierannexe et dès que l'on clique dessus il doit ouvrir le fichier extérieurement à mon formulaire. Comme j'ai fait avec <input type="file">
Afin de ne pas tout mélanger. Je ne travaille pas avec la variable pour l'instant et je fixe le fichier dans le code.

Quand tu me dis qu'il y aurait encore de nombreuses erreurs, tu m'inquiètes là

Dans le code que j'ai déposé sur le forum, tu n'as pas toutes les lignes car j'ai limité l'affichage pour ne pas avoir des pages et des pages de code.
Je n'ai pas mis les autres zones de résultats ni la fin de mon fichier car j'ai jugé qu'il ne serait pas utile pour mon prob. de Foutuuuuu Boutonnnnn. Merci pour ton message, du COURAGE, je vais en avoir besoin car je rame.

Le prog. que j'ai écrit "via le livre"  fonctionne et se met à jour avec la Db.
Reste le bouton..grrrrrrrrr
Par contre j'adapterai tes codes et conseils après cette recherche interminable.

Si t'as d'autres idées...
Merci








Cette discussion est classée dans : fichier, ouvrir, formulaire, zone, fopen


Répondre à ce message

Sujets en rapport avec ce message

ouvrir un fichier distant [ par GroSam ] Salut!J'aimerais savoir si il est possible d'ouvrir/ecrir dans un fichier texte placé dans un réseau interne. Je sais que ca marche en locale avec$fp Ouvrir fichier distant [ par donbesada ] Salut à tous!J'ai besoin de votre aide pour ouvrir un fichier distant en php. Je sais que la fonction "fopen" le permet mais je ne connais pas sa synt Comment ouvrir un fichier qui est un url sans fopen ? [ par mifinoufou ] Bonjour, j'aimerais ouvrir un fichier url mais la fonction fopen() ne fonctionne pas car sur le serveur la config allow_url_fopen doit etre à off. Exi histoire de formulaire [ par escaflone1 ] salut bon je me pose des p'tites questions et j'essaye de comprendre un peu le php.j'essaye de faire un formulaire ou on rentre un chiffre et lorsque comment ouvrir un fichier à l'aide d'un bouton dans un formulaire?? [ par betama ] salutje voudrais savoir comment ouvrir un fichier à l'aide d'un bouton "ouvrir" dans un formulaire c'est à dire lorsque je clique sur le bouton "ouvri Lecture Fichier [ par _toutfou ] Bonjour, Voila ce que j'ai besoin de faire :Ouvrir un fichier en lectureRecuperer son contenu et le placer dans un tableau    pour chaque ligne du tab Ouvrir un fichier [ par keket ] Bonjour, voila, j'ai un petit problème que je n'arrive pas a régler. Je crée un fichier .csv dans un répertoire. et je voudrai une fois mon fichier re zone membre [ par montana75013 ] bonjour a tous ,desole je suis debutant en php j'ais quelque question pour vous.en faite j'ai cree un site http://pap.underground.free.fr/</f Modification de fichier txt [ par Annadrill ] Bonjour,voila: j'ai créé un formulaire qui m'affiche dans la le fichier.txt,que l'on peut modifier puis réécrire dans le fichier.txt.mon problème est ouvrir en direct un csv généré [ par caviar ] Saluté,j'ai un petit pb à la c** ...Je génère un fichier CSV depuis un script php avec les headers qui vont bien pour lancer direct le téléchargement.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales