A voir également:
- Ecrire dans un fichier .txt avec un form
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - 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.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
12 févr. 2011 à 13:43
12 févr. 2011 à 13:43
Et quel est le problème?
Tu peux regarder par ici: https://openclassrooms.com/fr/courses
Tu peux regarder par ici: https://openclassrooms.com/fr/courses
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.
minalud
Messages postés
91
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
4 janvier 2013
8
Modifié par minalud le 12/02/2011 à 13:54
Modifié par minalud le 12/02/2011 à 13:54
Bonjour,
si tu ouvres en W, tu écrases ton fichier... essaies en R+, tu lis et tu écris.
si tu ouvres en W, tu écrases ton fichier... essaies en R+, tu lis et tu écris.
minalud
Messages postés
91
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
4 janvier 2013
8
12 févr. 2011 à 13:51
12 févr. 2011 à 13:51
r+, en minuscule...
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".
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
12 févr. 2011 à 16:25
12 févr. 2011 à 16:25
Et si tu nous mettais le code complet du formulaire et du traitement?
Question bête: pourquoi ne pas utiliser une base de donnée?
Question bête: pourquoi ne pas utiliser une base de donnée?
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.
minalud
Messages postés
91
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
4 janvier 2013
8
13 févr. 2011 à 12:50
13 févr. 2011 à 12:50
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!
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
14 févr. 2011 à 00:36
14 févr. 2011 à 00:36
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é."; } } } ?>
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
15 févr. 2011 à 12:35
15 févr. 2011 à 12:35
Dans la config du serveur, tu est normalement limité par défaut à une taille maximum de fichier à 2Mo. Il est possible de modifier ce paramètre dans le php.ini du serveur.
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 ...
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
16 févr. 2011 à 21:06
16 févr. 2011 à 21:06
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".
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
17 févr. 2011 à 21:02
17 févr. 2011 à 21:02
Pourquoi ne pas renommer le fichier au moment de l'envoi plutôt que de le faire après?
move_uploaded_file($_FILES['affiche']['tmp_name'], 'images/affiche.png');
12 févr. 2011 à 17:45
Littéralement: si le champ email est vide...
Alors que toi au veux au contraire qu'il ne le soit pas.
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.