Ouvrir un fichier avec fopen [Résolu]

ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 1 févr. 2009 à 22:05 - Dernière réponse : ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 3 févr. 2009 à 21:57
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; " /></td>
/>
</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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 3 févr. 2009 à 21:57
3
Merci
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.

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

Merci ecolom 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de ecolom
kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 2 févr. 2009 à 07:44
0
Merci
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 :



Cordialement,

Kohntark -
Commenter la réponse de kohntark
ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 2 févr. 2009 à 21:37
0
Merci
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 "";
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 "Demande d'intervention IT
";
echo " Fiche Intervention IT - Ticket N°[".$_REQUEST['numticket']."]

";$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">

" />
<table width="886">
<tr>

<tr>
<td>Nom du fichier attaché :</td>
<td>&nbsp; " />



</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
Commenter la réponse de ecolom
kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 3 févr. 2009 à 08:10
0
Merci
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 JSif (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 "";
=>
echo '
<html>
<head>
<title> Demande intervention</title>
</head>
';

$_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 -
Commenter la réponse de kohntark
ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 3 févr. 2009 à 14:42
0
Merci
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>
';
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 "Demande d'intervention SG 
";
echo " Fiche Intervention IT - Ticket N°[".$_REQUEST['numticket']."]

";$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 JSif (false $file file_get_contents('c:\test.txt')) {
  $file = 'Unable to open file !';
}
?>
function showFile() {
  document.getElementById('fileContent').innerHTML = '<?php echo $file; ?>';
}
</script>



" />
<table width="886">
<tr>
<td>Nom du fichier attaché :</td>
<td>&nbsp; " /></td>
</tr>








As-tu une autre idée kohntark ?

Merci
Commenter la réponse de ecolom
kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 3 févr. 2009 à 19:14
0
Merci
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().'
'.$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>

<?php
echo "Demande d'intervention SG

Fiche Intervention IT - Ticket N°[".$_POST['numticket']."]

";
?>

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

<form action="ticket_edite.php" method="post">

" />
Nom du fichier attaché :,
&nbsp; " />,


</form>



... ??

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 -
Commenter la réponse de kohntark

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.