Ecrire dans un fichier .txt avec un form
Pascal-Jr
-
Pascal-Jr -
Pascal-Jr -
Bonjour,
J'ai un problème :
je voudrais afficher un n° de téléphone et le changer si je veux.
Le n° est placé dans un fichier que j'ai nommé "tel.txt".
J'affiche le n° avec ce code :
PHP
Jusque là, aucun problème le problème survient quand je rentre la valeur dans mon formulaire qui est :
HTML
et le code qui récupère les valeurs pour les écrire dans le fichier "tel.txt" :
PHP
J'ai un problème :
je voudrais afficher un n° de téléphone et le changer si je veux.
Le n° est placé dans un fichier que j'ai nommé "tel.txt".
J'affiche le n° avec ce code :
PHP
<?php
$fichier = fopen('tel.txt', 'r');
$numero = fgets($fichier);
fclose($fichier);
echo "$numero";
?>
Jusque là, aucun problème le problème survient quand je rentre la valeur dans mon formulaire qui est :
HTML
<label for="tel">Modifier le n° de téléphone :<input type="text" name="tel" id="tel" />
et le code qui récupère les valeurs pour les écrire dans le fichier "tel.txt" :
PHP
<?php
if (isset($_POST['tel']))
{
$fichier = fopen('tel.txt', "w");
$tel = $_POST['tel'];
fseek($fichier, 0);
fputs($fichier, $tel);
fclose($fichier);
echo "Changement du n° de téléphone effectué.";
}
?>
A voir également:
- Ecrire dans un fichier .txt avec un form
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Fichier rar - Guide
- Creer un fichier .bat - Guide
16 réponses
Désolé pour le double-post mais j'avais essayais avec isset et ça marchais pas non plus, que je le voulais ou non ça me modifier le fichier : le traitement n'analyse pas le champ vide comme NULL. Et ça me perturbe grandement.
C'est certain : j'ai fait une erreur mais ça me semble illogique.
C'est certain : j'ai fait une erreur mais ça me semble illogique.
J'en viens.
Le problème c'est que le fichier s'actualise, jusque là ça me convient.
Mais il efface tout le contenu et n'affiche rien.
Le problème c'est que le fichier s'actualise, jusque là ça me convient.
Mais il efface tout le contenu et n'affiche rien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Résolu :
En fait quand j'essayais j'actualisais une ancienne page ou la valeur était fausse car j'ai mis deux name="tel" dans mon formulaire et vu que le deuxième était vide ça m'actualisais deux fois le fichier :
- une fois où ça me mettais le n° comme il fallait
- la deuxième m'effacer le contenu parce que le deuxième était vide
En tout cas merci pour votre participation je me suis senti moins seul a réfléchir ;).
En fait quand j'essayais j'actualisais une ancienne page ou la valeur était fausse car j'ai mis deux name="tel" dans mon formulaire et vu que le deuxième était vide ça m'actualisais deux fois le fichier :
- une fois où ça me mettais le n° comme il fallait
- la deuxième m'effacer le contenu parce que le deuxième était vide
En tout cas merci pour votre participation je me suis senti moins seul a réfléchir ;).
... ou pas maintenant quand je ne mets qu'une valeur par exemple le ['tel']
ça m'efface le fax et l'e-mail.
Le formulaire ['fax'] et ['email'] sont exactement les mêmes que ['tel'] et sont sur la même page.
Le script qui récupère les valeurs pour les réécrire dans leur fichier respectif est sur une autre page que j'ai nommé "valid_contact.php".
ça m'efface le fax et l'e-mail.
Le formulaire ['fax'] et ['email'] sont exactement les mêmes que ['tel'] et sont sur la même page.
Le script qui récupère les valeurs pour les réécrire dans leur fichier respectif est sur une autre page que j'ai nommé "valid_contact.php".
Formulaire
<form method="post" action="valid_contact.php" id="modif_contact">
<fieldset>
<legend>Contact</legend>
<table>
<tr><td><label for="tel">Modifier le n° de téléphone : </td><td><input type="text" name="tel" id="tel" /></td></tr>
<tr><td><label for="fax">Modifier le n° de fax : </td><td><input type="text" name="fax" id="fax" /></td></tr>
<tr><td><label for="email">Modifier l'adresse e-mail : </td><td><input type="text" name="email" id="email" /></td></tr>
</table>
<input type="submit" value="Valider" />
<p id="avertissement">En cas de modification, veillez à changer les 3 valeurs (téléphone, fax et email).</p>
</fieldset>
</form>
Traitement - PHP
Honnêtement la base de données pour des données aussi courtes, je ne penses pas que ce soit nécessaire et je n'ai pas encore les compétences pour tripatouiller du MySQL ...
<form method="post" action="valid_contact.php" id="modif_contact">
<fieldset>
<legend>Contact</legend>
<table>
<tr><td><label for="tel">Modifier le n° de téléphone : </td><td><input type="text" name="tel" id="tel" /></td></tr>
<tr><td><label for="fax">Modifier le n° de fax : </td><td><input type="text" name="fax" id="fax" /></td></tr>
<tr><td><label for="email">Modifier l'adresse e-mail : </td><td><input type="text" name="email" id="email" /></td></tr>
</table>
<input type="submit" value="Valider" />
<p id="avertissement">En cas de modification, veillez à changer les 3 valeurs (téléphone, fax et email).</p>
</fieldset>
</form>
Traitement - PHP
<!-- N° TEL -->
<?php
if (empty($_POST['tel']))
{
$fichier = fopen('tel.txt', "w");
$tel = $_POST['tel'];
fseek($fichier, 0);
fputs($fichier, $tel);
fclose($fichier);
{
?>
<p>
Le changement du n° de téléphone a bien été effectué.<br />
Votre nouveau n° de téléphone est <?php echo $tel ?>.
</p>
<?php
}
}
else
{
echo "Le n° de téléphone n'a pas été changé.";
}
?>
<!-- N° FAX -->
<?php
if (empty($_POST['fax']))
{
$fichier = fopen('fax.txt', "w");
$fax = $_POST['fax'];
fseek($fichier, 0);
fputs($fichier, $fax);
fclose($fichier);
{
?>
<p>
Le changement du n° de fax a bien été effectué.<br />
Votre nouveau n° de fax est <?php echo $fax ?>.
</p>
<?php
}
}
else
{
echo "Le n° de fax n'a pas été changé.";
}
?>
<!-- EMAIL -->
<?php
if (empty($_POST['email']))
{
$fichier = fopen('email.txt', "w");
$adresse = $_POST['email'];
fseek($fichier, 0);
fputs($fichier, $adresse);
fclose($fichier);
{
?>
<p>
Le changement d'adresse e-mail a bien été effectué.<br />
Votre nouvelle adresse e-mail est <?php echo $adresse ?>.
</p>
<?php
}
}
else
{
echo "L'adresse e-mail n'a pas été modifié.";
}
?>
Honnêtement la base de données pour des données aussi courtes, je ne penses pas que ce soit nécessaire et je n'ai pas encore les compétences pour tripatouiller du MySQL ...
Je te remercie pour ton implication.
Je vais essayer le code que tu m'a fourni.
Je te tiens au courant.
Je vais essayer le code que tu m'a fourni.
Je te tiens au courant.
Parfait !
C'est le mot.
Je te remercie Arthezius, pour ton implication et ta perspicacité.
Encore merci.
C'est le mot.
Je te remercie Arthezius, pour ton implication et ta perspicacité.
Encore merci.
Erf ... nouveau problème. Je ne sais pas si je devrais ouvrir un autre topic pour ça.
Je me permets de t'expliquer si ce n'est pas trop abuser de ta gentillesse.
J'aimerais envoyer une image sur le serveur avec un formulaire en écrasant la précédente en renommant automatiquement l'image sous "affiche" en conservant l'extension du fichier.
Mon problème maintenant, c'est que même avec toutes les autorisations CHMOD, l'image n'est pas envoyée sur le serveur.
Je me permets de t'expliquer si ce n'est pas trop abuser de ta gentillesse.
J'aimerais envoyer une image sur le serveur avec un formulaire en écrasant la précédente en renommant automatiquement l'image sous "affiche" en conservant l'extension du fichier.
Mon problème maintenant, c'est que même avec toutes les autorisations CHMOD, l'image n'est pas envoyée sur le serveur.
je me permets...
à condition que ton form soit sur le bon encodage, soit:
<form ... enctype="multipart/form-data">
...
</form>
ton fichier est transféré en POST dans un repertoire temporaire. Il faut donc spécifier ce répertoire dans la configuration de PHP avec les droits d'écriture.
Ensuite, tu peux utiliser la variable $_FILE et faire des déplacements et renommage comme tu le souhaites.
Désolé si j'écris comme à un débutant (que tu n'es pas) mais je préfère tout mettre ;)
j'éspère que ça t'aidera...
bonne journée!
à condition que ton form soit sur le bon encodage, soit:
<form ... enctype="multipart/form-data">
...
</form>
ton fichier est transféré en POST dans un repertoire temporaire. Il faut donc spécifier ce répertoire dans la configuration de PHP avec les droits d'écriture.
Ensuite, tu peux utiliser la variable $_FILE et faire des déplacements et renommage comme tu le souhaites.
Désolé si j'écris comme à un débutant (que tu n'es pas) mais je préfère tout mettre ;)
j'éspère que ça t'aidera...
bonne journée!
Pas grand chose à rajouter.
Pour récupérer le fichier ça se fait avec la variable $_FILES['fichier']['tmp_name'] (fichier étant à remplacer par la valeur du name="").
Tu peux récupérer les infos de l'image avec la fonction getimagesize().
Le nom du fichier peux être récupéré avec $_FILES['fichier']['name'] et le poid avec $_FILES['fichier']['size'].
As toi de faire un script de contrôle et upload.
Dernière chose: pour copier le fichier dans un répertoire, utilises la fonction move_uploaded_file().
Pour récupérer le fichier ça se fait avec la variable $_FILES['fichier']['tmp_name'] (fichier étant à remplacer par la valeur du name="").
Tu peux récupérer les infos de l'image avec la fonction getimagesize().
Le nom du fichier peux être récupéré avec $_FILES['fichier']['name'] et le poid avec $_FILES['fichier']['size'].
As toi de faire un script de contrôle et upload.
Dernière chose: pour copier le fichier dans un répertoire, utilises la fonction move_uploaded_file().
Je vais vous mettre mon code, si vous voulez ... et puis minalud je penses que tu n'as pas tord je viens a peine de commencer en PHP donc mes compétences sont très modestes ...
Voici mon code de traitement :
Voici mon code de traitement :
<?php
if (isset($_FILES['affiche']) AND $_FILES['affiche']['error'] == 0)
{
if ($_FILES['affiche']['size'] <= 10000000)
{
$infosfichier = pathinfo($_FILES['affiche']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_atorisees))
{
move_upload_files($_FILES['affiche']['tmp_name'], 'images/' . basename($_FILES['affiche']['name']));
echo "L'envoie de l'affiche a bien était effectué.";
}
}
}
?>
Erf j'arrive a rien ça me rend fou.
Mon code à l'air bon, j'ai changé la taille d'upload max mais ça ne marche toujours pas ...
Mon code à l'air bon, j'ai changé la taille d'upload max mais ça ne marche toujours pas ...
Tu peux tester la variable $_FILES['affiche']['error'] .
Voir ici: http://phpcodeur.net/articles/php/upload
UPLOAD_ERR_OK
Valeur : 0; Aucune erreur, le fichier a bien été uploadé
UPLOAD_ERR_INI_SIZE
Valeur : 1; Le fichier excède le poids autorisé par la directive upload_max_filesize de php.ini
UPLOAD_ERR_FORM_SIZE
Valeur : 2; Le fichier excède le poids autorisé par le champ MAX_FILE_SIZE s'il a été donné
UPLOAD_ERR_PARTIAL
Valeur : 3; Le fichier n'a été uploadé que partiellement
UPLOAD_ERR_NO_FILE
Valeur : 4; Aucun fichier n'a été uploadé
Voir ici: http://phpcodeur.net/articles/php/upload
En fait c'était une erreur toute bête :
move_upload_files alors qu'il fallait mettre move_uploaded_file
move_upload_files alors qu'il fallait mettre move_uploaded_file
Bon ... maintenant, je me penche sur un autre problème.
Ce problème est que je voudrais renommer mon fichier automatiquement (avec le script de traitement) sous "affiche" et l'afficher quelque soit son extension.
Par exemple, si j'ai <img src=" /... /... /images.png" />, je ne pourrais pas afficher une jpeg et c'est très embêtant.
Je demande donc votre aide ... encore une fois.
Et encore une fois je vous remercie de m'aider et pour votre patience.
Ce problème est que je voudrais renommer mon fichier automatiquement (avec le script de traitement) sous "affiche" et l'afficher quelque soit son extension.
Par exemple, si j'ai <img src=" /... /... /images.png" />, je ne pourrais pas afficher une jpeg et c'est très embêtant.
Je demande donc votre aide ... encore une fois.
Et encore une fois je vous remercie de m'aider et pour votre patience.
Voici donc mon code :
Mais une erreur s'affiche au test :
[function.rename]: Le fichier spécifié est introuvable.
J'ai un doute mais il me semble que je devrais mettre le chemin du fichier que je voudrais renommer dans mon cas "images/affiche.png".
<?php
if (isset($_FILES['affiche']) AND $_FILES['affiche']['error'] == 0)
{
if ($_FILES['affiche']['size'] <= 5000000)
{
$infosfichier = pathinfo($_FILES['affiche']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
move_uploaded_file($_FILES['affiche']['tmp_name'], 'images/' . basename($_FILES['affiche']['name']));
// a partir de la j'essaye de renommer
$name = $_FILES['affiche']['name'];
$rename = "affiche.png";
rename($name,$rename);
echo "L'envoie de l'affiche a bien était effectué.";
}
}
}
?>
Mais une erreur s'affiche au test :
[function.rename]: Le fichier spécifié est introuvable.
J'ai un doute mais il me semble que je devrais mettre le chemin du fichier que je voudrais renommer dans mon cas "images/affiche.png".
if(empty($_POST['email'])) {Littéralement: si le champ email est vide...
Alors que toi au veux au contraire qu'il ne le soit pas.
<?php if(isset($_POST['email']) && !empty($_POST['email'])) { $fichier = fopen('email.txt', "w"); $adresse = $_POST['email']; fseek($fichier, 0); fputs($fichier, $adresse); fclose($fichier); echo'<p>Le changement d'adresse e-mail a bien été effectué.<br /> Votre nouvelle adresse e-mail est '.$adresse.'</p>'; } elseif(isset($_POST['email']) && empty($_POST['email'])) { echo'<p>Le champ email est vide.</p>'; } ?>Je me suis permis quelques modifications.
Tout d'abord, je vérifie si la variable $_POST['email'] est déclaré et si elle n'est pas vide.
Si c'est le cas, on écrit le fichier et on affiche la valeur.
Dans le cas contraire, on vérifie si la valeur est vide (et toujours déclaré) et on affiche un avertissement: la valeur est vide.
A toi de l'adapter pour les autres mais ça devrait être mieux.