Downloader un fichier photo dans formulaire

Résolu/Fermé
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 - 23 janv. 2006 à 18:34
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 6 févr. 2006 à 09:49
Bonsoir à tous!
Je viens d'envoyer un précédent appel à l'aide, mais j'ai oublié de lui mettre un titre, alors me revoilà...
Je n'y connais rien en php, mais grace à vous je peux l'utiliser en trouvant de ci delà des bribes de programmation...

Je suis en train d'établir un formulaire, envoyé ensuite par php sous forme d'email que je reçois sur mon pc, et ça fonctionne bien.
C'est pour le site d'une association de skieurs et je suis en train de lui ajouter un espace 'petites annonces' pour le matériel à vendre, à échanger etc...

J'ai trois questions, si vous pouvez m'aider, ce serait fantastique...!

1. je voudrais que ceux qui passent une annonce puissent ajouter 1 ou plrs photos, j'ai mis un bouton 'parcourir', du type :
<input type="file" name="photo1" >
mais à l'arrivée je n'obtiens que le chemin jusqu'à l'emplacement de la photo, et non la photo elle-même. Quelqu'un a-t-il une idée ???

2. Y a-t-il un moyen de remplacer le bouton 'soumettre le formulaire' par une image ? J'ai cherché mais je n'ai pas trouvé...

3. comment fait-on pour qu'il n'y ait qu'une case à cocher ou un seul bouton radio sélectionné (la sélection de l'un désélectionne les autres) et pour récupérer le résultat ? Chez moi, chaque case ou bouton apparaît comme indépendant l'un de l'autre, avec un nom différent etc., et non pas comme une série de choix alternatifs. Quid ???

Merci d'avance de votre aide!
A voir également:

11 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
24 janv. 2006 à 12:34
Salut, alors :

1. je voudrais que ceux qui passent une annonce puissent ajouter 1 ou plrs photos, j'ai mis un bouton 'parcourir', du type :
<input type="file" name="photo1" >
mais à l'arrivée je n'obtiens que le chemin jusqu'à l'emplacement de la photo, et non la photo elle-même. Quelqu'un a-t-il une idée ???

Pour ça, ici tu trouveras un des mes scripts t'assurant l'upload de ton image.
http://www.commentcamarche.net/forum/affich-2042781-%5BPhP-UpLoad%5D-retrouv%E9-le-doc


2. Y a-t-il un moyen de remplacer le bouton 'soumettre le formulaire' par une image ? J'ai cherché mais je n'ai pas trouvé...
Oui, avec -->
<input type="image" src="./ton_dossier_image/ton_image.jpg" onClick="javascript:nom_de_ton_formulaire.submit()">


3. comment fait-on pour qu'il n'y ait qu'une case à cocher ou un seul bouton radio sélectionné (la sélection de l'un désélectionne les autres) et pour récupérer le résultat ? Chez moi, chaque case ou bouton apparaît comme indépendant l'un de l'autre, avec un nom différent etc., et non pas comme une série de choix alternatifs. Quid ???
Bin en html t'as 2 type de truc à cocher en gros :
- la checkbox qui sert au choix multiple (petite case à cocher)
- le boutton radio qui sert au choix unique d'une réponse (petit rond à déplacer)

je pense que dans ton cas (quid) tu veux des boutton radio donc un exemple:
<html><body>
<form name="exemple" method="POST" action="test.php">
super <input type="radio" name="choix" value="super" /><br/>
bof <input type="radio" name="choix" value="Bof" /><br/>
nul <input type="radio" name="choix" value="Nul" /><br/>
</form>
</body></html>


Pour ce qui est de la lecture des valeurs après ,c'est selon le si tu utilise Php ou pas... si tu fais toujours avec le PhP, bin pour lire
tu fais un
echo "On a pris comme valeur : ".$_POST['choix']

dans ta page qui recoit le formulaire (ici test.php en méthode POST)

Voilà,voilà, j'espère que ca t'aidera bien :)

Bon courage, n'hésite pas à demander au forum..

Zep3k!GnO
0
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
24 janv. 2006 à 14:44
Salut, et merci pour tes réponses !
J'ai tout compris au 2) et au 3), génial, ça marche !!! SUPER !

Par contre pour le 1), je suis... hyper larguée... :(( bouh !
ok, reprenons :
j'ai 2 documents :

membres.htm
et
do_sendform.php

primo, je n'arrive pas à mettre l'instruction enctype=\"multipart/form-data\" dans <form>
sans doute parce que je ne sais pas où la mettre !
Je l'avais placée au début de mon formulaire dans membres.htm sous la forme :
<FORM method="POST" enctype=\"multipart/form-data\" action="do_sendform.php" name="form1">
suivie du tableau avec toutes mes rubriques et fermé par </form>.
Seulement, dès que je change la définition de FORM qui au départ était
<FORM method="POST" action="do_sendform.php" name="form1" > sans enctype, eh bin le serveur il aime pas du tout !!! et tout beugue (Internal server error) et je ne reçois plus rien....

En fait, c'est un peu plus compliqué que ça, car au milieu du <FORM> il y a un script qui se balade pour un menu déroulant qui renvoie sur une page différente selon le choix, ça donne :

dans <head>
<!-- DEBUT DU SCRIPT -->
<script language="JavaScript">
//
function ChangeUrl1(formulaire)
{
if (formulaire.ListeUrl1.selectedIndex != 0)
{
location.href = formulaire.ListeUrl1.options[formulaire.ListeUrl1.selectedIndex].value;
}
else
{
alert('Veuillez indiquer votre statut associatif.');
}
}
</script>
<!-- FIN DU SCRIPT -->

et dans <body>
mon en-tête puis

<!-- DEBUT DU SCRIPT -->
<!--
-->
<FORM method="POST" action="do_sendform.php" name="form1">
<table width="750" align="center" border="0">
<tr>
<td colspan="7">
<p align="center"><SELECT NAME="ListeUrl1" SIZE=1 onChange="ChangeUrl1(this.form)" style="font-family:Verdana; color:rgb(88,168,35);">
<OPTION>-Selectionnez votre statut associatif-
</option>
<OPTION VALUE="membre.htm" selected>Vous êtes déjà membre du CSA
</option>
<OPTION VALUE="nouveau.htm">Vous souhaitez adhérer au CSA
</option>
</SELECT>
<br> </p>
<!-- FIN DU SCRIPT --> </td></tr>

etc...

Est-ce que le fait d'avoir le script 'à cheval' sur le tableau est embêtant ? ou c'est tout autre chose ?


Toujours est-il que lorsque dans ton script du parle de Form.php et de upload.php avec des répertoires temporaires, je ne comprends pas bien... est-ce qu'il s'agit de nouveau documents que je devrais créer ? et comment les relier à mes 2 docs (membres.htm et do_sendform.php) ? Dois-je créer un dossier pour le répertoire temporaire et où ? et comment récupérer tout ça après ?

Pardon pour ces questions de néophyte...

J'espère que tu pourras me répondre.
En tous cas, merci déjà de l'aide que tu m'as apportée !
@+
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
24 janv. 2006 à 17:27

Pardon pour ces questions de néophyte...

Y a pas de problèmes, si tu savais tout tu ne serais pas la en ce moment à demandé de l'aide...

Bon, la je suis un peu short sur mon timming, je dois y aller mais s ça ne fonctionne toujours pas demain, on revoit ca si tu veux dans la journée...

essaye juste pour le enctype : enctype="multipart/form-data"
(sans les '\', je les avais mis car j'étais dans une fonction 'echo' en php qui utilise les double quote (") pour définir la pharse a écrire :
Exmple:
echo"Coucou ca va ?"; // ecris : coucou ca va
echo"Coucou c'est moi"; //ecris: Coucou c'est moi
echo"Oulala l"impressionnant!"; // ecris rien car erreur on ferme les " trop top, donc il faut utiliser un caractès d'échappement qui est \ en PHP
echo "Oulala l\"impressionnant!"; // ecris Oulala l"impressionnant!

Voilà, maintenant tu sais ce qui ne va pas et surtout pourquoi...

J'espère que ca t'aidera.
P'tet a demain, bonne soirée :D

Zep3k!GnO
0
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
25 janv. 2006 à 15:28
Bonjour !
ça marche tjs pas, avec le signe / ou le signe \ ni même sans !

Pour la novice que je suis : est-ce que l'instruction

enctype="multipart/form-data"

se met bien dans la page.html , placée au début du formulaire dans
<FORM method="POST" action="do_sendform.php" name="form1" enctype="multipart/form-data">

c'est ça ??? ou pas du tout ???!!!

J'ai quand même réussi un truc bien, je charge la photo sur la page html du formulaire (javascript), ça permet de la visualiser avant d'envoyer le formulaire, mais ensuite... plus rien !!!
Dès que je rajoute -> enctype="multipart/form-data" dans <FORM>, le formulaire n'est pas envoyé, le serveur rame et j'ai le message suivant :

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, php4-m@invalid and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log


En plus, comme je dois traiter 2 fichiers différents (membre.htm et do_sendform.php), je ne sais pas d'où vient le pb... pas très clair pour moi !

Une idée ?
Salut, et merci !
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
25 janv. 2006 à 16:00
<FORM method="POST" action="do_sendform.php" name="form1" enctype="multipart/form-data">

c'est ça ??? ou pas du tout ???!!!


Oui oui oui je confirme c'est bien ça..il faut le placer ici, tout à fait thierry.

Alors la ca m'a l'air bien bizar le

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, php4-m@invalid and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log

T'es chez quel hébergeur ? ! car d'après c'te belle phrase en anglais, c'est un problème interne au serveur...


Mais je te conseil vivement une chose :
-1- Vas sur http://www.commentcamarche.net/forum/affich-2042781-%5BPhP-UpLoad%5D-retrouv%E9-le-doc

-2- Lit bien tout ce qu'on a mis avec ZIG1.

-3- Copie / colle mes 2 scripts.

-4- Effectue les 2, 3 modifs à faire (c'est décrit dans la suite de la discussion, j'avais zappé de remettre un truc ou 2 au moment de poster le topic )

-5- Enregistre les sous ton serv'.

-6- Test.

Car la ca devrait fonctionner nickel, y aura pas de problème de scripts, donc si y a un soucis ca viendra du serv' et non du script ce qui est indépendent de ta volontée..

voilà.

EnJoY :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
25 janv. 2006 à 17:23
Merci !
seulement je n'y arrive toujours pas...

je suis en train de penser (et oui, ça m'arrive) que peut-être je me suis mal exprimée, qu'il ne s'agit pas de 'upload' dans la mesure où je n'ai pas de base de données sur le serveur qui m'héberge, que je veux jusque faire un renvoi (en pièce jointe ou autrement) des photos par email du formulaire sur mon PC...

Ca change-t-y quekchose ?
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
26 janv. 2006 à 14:19
que je veux jusque faire un renvoi (en pièce jointe ou autrement) des photos par email du formulaire sur mon PC...

La je viens de relire 5,6 fois c'te phrase et c'est toujours super flou ..
tu veux quoi ? !
Récupérer les photos que l'on passe à ton formulaire sur ton propre PC et non le serveur ?
ou bien Envoyer des photos que tu as saisie avec un formulaire par mail ...?

Bref, soit + précise car la je nage dans le floO...
0
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
27 janv. 2006 à 11:19
Salut !
Pardon pour le flou (et le retard de réponse, pb de connexion...) !

Bon, alors, je récupère actuellement mes réponses au formulaire directement sur mon pc, je les reçois sous forme d'emails (avec les rubriques listées) qui m'arrivent directement lorsque je fais envoyer/recevoir, bref, comme tous les emails sous Outlook..

En tous cas, je ne vais pas récupérer les formulaires sur le serveur, ça m'arrive tout cuit direct chez moi !

or je ne sais pas si tes scripts font ça...? en tous cas je crois que l'instruction qui permet ce genre de truc ressemble à
$mgs....
???
Merci encore de ton aide !!!
à+
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
27 janv. 2006 à 11:30
Salut ,
Tu veux dire donc si j'ai bien compris, tu veux un script qui prends le résultat de la saisie d'un formulaire par un utilisateur et qui tes l'envoi (le résultat de la saise) par mail c'est bien ca ? !

si oui, bien tout ça se fait avec PhP et la fonction mail()..(reste à vérifier si ton hébergeur ne l'a pas bridé si tu veux t'en servir..)
Et si c'est bien ça, tu veux en + que la personne qui saisie le formulaire puisse aussi y mettre une photo que tu recois ensuite dans ta boite mail avec accompagné du résultat du reste de la saisie au formulaire..
Est-ce bien ça ?! :D

On va y arrivé, je n'en doute pas ;)
0
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
27 janv. 2006 à 16:59
yes, formidable, toi y en avoir compris mon pauvre charabia !!! c'est exactement ça !

en fait, aucun pb sur le retour email de tout mon formulaire, ça fonctionne bien avce un script php du type :

<?php

$msg .= "Demande de parution d'une petite annonce\n";
$msg .= "Nom:\t\t$nom\n";
$msg .= "Prenom:\t$prenom\n";
$msg .= "Email:\t$email\n";


$recipient = "email@monsite.com";
$subject = "demande parution";

$mailheaders = "From: Mon Site<> \n";
$mailheaders .= "Reply-To: $email\n\n";

mail($recipient, $subject, $msg, $mailheaders);


echo "<HTML><HEAD>";
echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci, $prenom $nom</H1>";
echo "<P align=center>";
echo "Votre demande a bien été envoyée. Nous nous mettrons très prochainement en contact avec vous !</P>";
echo "</BODY></HTML>";

?>


et youpi,

mais en revanche [:(( j'y arrive pas pour downloader l'image ajoutée au formulaire (je ne récupère que son "chemin"...)!!!

Idée toi avoir pour download réussir ?
Que l'idée soit avec toi !

Merci,
@, +
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
30 janv. 2006 à 10:02

Idée toi avoir pour download réussir ?
Que l'idée soit avec toi !


L'idée est la...
Pour que ton mail soit accompagné d'une photo, il faut soit que celle ci soit en pièce jointe, soit que le mail soit rédigé en html, ce qui implique que la photo doit être disponible via une URL donc sur le net.
Moi ce que je te propose car c'est ce que j'ai déjà sous la main :) , c'est que tu download l'image de la personne sur ton serveur, et que tu ailles soit toi la voir avec un lien que tu rajoutes dans le contenu de ton mail, soit directement en html dans le mail avec <img src="tattaa.jpg">.

Dans les 2 cas tu dois uploader ton image sur tons erveur et voilà comment faire :
http://www.commentcamarche.net/forum/affich-2042781-%5BPhP-UpLoad%5D-retrouv%E9-le-doc#3

La partie à inserrer dans ton formulaire (en adaptant une peu car il faut que tu ne supprime surtout pas le enctype.) c'est FORM.php dans la zone de code, et pour le chargement de l'image c'est ce qui est mis dans upload.php dans le code...

voilà, je pense que t'es bien armée...
CouRage Codons :D
0
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
5 févr. 2006 à 19:58
Finalement, je suis encore là...! Ah la la !

Navrée de te déranger encore !... Figure-toi que j'ai un problème de téléchargement d'image lorsque l'image est trop lourde... tout se bloque ! (erreur serveur, ce qui est normal je crois).

Y aurait-il un moyen de vérifier la taille du fichier téléchargé (fichier image) AVANT l'envoi afin d'envoyer un message d'erreur et proposer à la personne de réviser le poids de son image ?

Parce qu'en plus, l'erreur serveur ne délivre pas les messages d'erreur que tu m'avais donnés... donc la personne ne sait pas que c'est pour ça que ça ne marche pas !

Je te rappelle ce que c'était :

<?php

$repertoireDestination = "./images/album_annonceurs/";
$nomDestination = $_FILES["photo1"]["name"];;

if (is_uploaded_file($_FILES["photo1"]["tmp_name"]))
{
if (rename($_FILES["photo1"]["tmp_name"],
$repertoireDestination.$nomDestination))
{

//echo"<center>La premiere photo a été correctement téléchargée !</center>"

chmod ("$repertoireDestination.$nomDestination", 644);
}

else
{
echo "Le téléchargement de votre première photo a échoué...";
}
}
else
{
echo "<center>Votre première photo n'a pas été téléchargée (fichier trop gros ?)";
}

?>

et idem à la suite pour la 2ème photo

A propos, j'ai modifié dans chmod le O644 par 644, c'est ça ?

Et tant qu'on y est, si je peux télécharger le nom du fichier dans mon formulaire...

Si tu peux...
@ +
0
vero06 Messages postés 42 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 4
5 févr. 2006 à 20:36
et pi y'a un aut' truc...

Si je laisse

else
{
echo "<center>Votre première photo n'a pas été téléchargée (fichier trop gros ?)";
}


des lignes précédentes, ça s'affiche si la personne n'envoie pas de photo...

Ne pourrait-on pas détecter si c'est vide (pas d'envoi de photo, donc pas d'erreur affichée) ?
C'est jusqtement là j'imagine que je pourrais récupérer ou pas le nom du fichier si ce n'est pas vide... non ?

Bon, j'espère que m'as comprise...! ;))

@ +
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
6 févr. 2006 à 09:49
Ne pourrait-on pas détecter si c'est vide
Si avec un
if(isset($monfichier)) //test si la variable monfichier existe


je pense que tu peux laisser tomber le chmod()..amoins que t'es des soucis après avec tes droits sur les photos, sinon t'embettes pas.

Pour ce qui est de l taille max du fichier elle est fixée ici dans ton formulaire :
 <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\" />


Voilà ;)
@+
0