Upload dans un formaulaire

stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012 - 9 sept. 2012 à 23:06
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012 - 7 oct. 2012 à 19:25
Bonjour,

Je souhaiterai intégrer un upload de fichier dans un formulaire.
Le souci est que je n'arrive pas à obliger les gens à mettre leur fichier.

J'ai fait un formulaire en SPry. Si ils se plantent dans les données ça bloque mais pas pour le fichier. Qu'ils l'intègrent ou pas, le formulaire est validé.

Je souhaiterai que l'inscription ne se fasse pas si je n'ai pas le fichier.
La vérification du fichier uniquement les pdf et jpeg ne fonctionne pas non plus.

<?php
$uploaddir = 'uploads/2012';
$uploadfile = $uploaddir . basename($_FILES['certificat']['name']);
$uploaddate = date(HisdmY).".txt";
$_FILES['certificat']['type'];
echo '';
if (move_uploaded_file($_FILES['certificat']['tmp_name'], $uploadfile.$uploaddate))


?>
<?php
//On fait un tableau contenant les extensions autorisées.
//Comme il s'agit d'un avatar pour l'exemple, on ne prend que des extensions d'images.
$extensions = array('.jpg', '.jpeg', '.pdf');
// récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
$extension = strrchr($_FILES['certificat']['name'], '.');
//Ensuite on teste
if( in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type jpg, jpeg ou pdf...';
}
?>

Merci par avance.

4 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
16 sept. 2012 à 11:27
BONJOUR


<?php 
isset($_POST['nom']) && !empty ($_POST['nom']) ? $nom = $_POST['nom'] : $nom  = '';
isset($_POST['prenom']) && !empty ($_POST['prenom']) ?  $prenom = $_POST['prenom'] : $prenom = '';

$form='<form method="post" action="" enctype="multipart/form-data">
Nom : 

Prenom : 


Fichier : 


';

/*le repertoire existe , sinon creation*/

 $uploaddir1 = 'uploads/2012/';
 if(is_dir($uploaddir1)){
 }else{
 mkdir($uploaddir1,0705);
 }

/*erreur vide au depart*/ 
$erreur=''; 
  

/******************************************************************************/
    
/*le file est soumis*/
if(isset($_FILES['certificat']) && !empty($_FILES['certificat']['name'])){ 
   
    $uploaddir1 = 'uploads/2012/';   
    $uploadfile = $uploaddir1 . basename($_FILES['certificat']['name']); 
    
    /*recuperaton de l extension*/
    $extension = strtolower(end(explode('.',$_FILES['certificat']['name']))); 
    $extension_aut = array('jpg','jpeg','pdf'); /* //sans le point !!!! */
    if(!in_array($extension,$extension_aut,true)){ 
    $erreur .= 'UNIQUEMENT DU JPG, JPEG OU PDF ... 
'; 
    }else{
        
        move_uploaded_file($_FILES['certificat']['tmp_name'], $uploadfile); 
        
        /*debug affiche du resultat*/
        echo '';
        print_r($_POST);
        print_r($_FILES);
        echo '

';
    
        echo '<hr>Lien au fichier : [ ['.$uploadfile.' Voir le fichier] ]<hr>';
        
        /*un traitement genre mail ...*/
    
    }


} else {

    $erreur .= 'VOUS DEVEZ UPLOADER UN FICHIER OBLIGATOIRE DE TYPE JPG, JPEG OU PDF ... 
'; 
   
} 


echo isset($erreur) ? $erreur : '';
echo $form;

?>  


LA BASE ...


Bonne programmation !
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
5 oct. 2012 à 21:23
Bonjour,

Merci cod57 et vraiment désolé pour ces compliments tardifs.
Je reviens vers toi car je viens de tester ton code qui fonctionne impécable. Malheureusement, il n'est pas compatible avec ma page.
J'ai une page formulaire qui envoi les données à une page de traitement.
Cette page de traitement indique bien que le fichier n'a pas été ulpoader mais il indique aussi que les données ont bien été traité.
En fait il n'y a pas de vérif des données sur ma page de traitement car je me fiais au formulaire en spry.
Le mieux serait que je remettes le tout sur une seule page?
Que peux tu me conseiller?


Page de formulaire en html:




inscription en ligne

body {
background-image: url(../images/feuille_verte.jpg);
}
#entete {
text-align: center;
height: 250px;
width: 550px;
margin-right: auto;
margin-left: auto;
color: #FFF;
border: medium solid #FF0;
font-size: 20px;
line-height: 35px;
}
#espace {
height: 20px;
width: 550px;
margin-right: auto;
margin-left: auto;
}
#line {
margin-right: auto;
margin-left: auto;
text-align: center;
}
#paypal {
height: 50px;
width: 750px;
margin-right: auto;
margin-left: auto;
text-align: center;
font-weight: bold;
text-decoration: underline;
}
#espace2 {
height: 20px;
width: 550px;
margin-right: auto;
margin-left: auto;
}
#boutton_menu {
height: 30px;
width: 1000px;
margin-right: auto;
margin-left: auto;
background-color: #333;
text-align: center;
}
.espace {
margin-right: 25px;
}
#boutton_menu ul {
list-style-type: none;
margin: 0px;
padding-top: 5px;
padding-left: 0px;
}
#boutton_menu ul a {
color: #FFF;
text-decoration: none;
}
#boutton_menu ul a:hover {
color: #09F;
}
#boutton_menu ul li {
display: inline;
color: #FFF;
}
#espacesousmenu {
height: 30px;
width: 500px;
margin-right: auto;
margin-left: auto;
}
#listesponsors {
height: 800px;
width: 800px;
text-align: center;
margin-right: auto;
margin-left: auto;
}
.certificat {
text-align: right;
}
#listesponsors #form1 p a {
color: #F00;
}














Organiser par

9 Septembre 2012

à 8H30

13 et 25Km












[../index.html Accueil]
[../acces.html Accès]
[../inscription.html Inscription]
[../infoscourse.html Infos Course]
[../plancourse.html Plan Course]
[../engagements.html Engagements]
[../sponsors.html Sponsors]
[../resultats.html Résultats]
[../livrorseul/index.php Livre d'Or]
Infos
[mailto:stephane@.fr Contact]








Attention le formulaire n'est valable Que pour un paiement par Paypal









Monsieur




Madame




Mademoiselle


Effectuez une sélection.



Nom :

Une valeur est requise.



Prenom :

Une valeur est requise.



Date de Naissance :

Une valeur est requise.Format non valide. Exemple 00/00/0000



Adresse :

Une valeur est requise.



Code Postal:

Une valeur est requise.Format non valide.



Ville:

Une valeur est requise.



Pays

France
Angleterre
Belgique
Allemagne
Suisse
Espagne

Sélectionnez un élément.



Téléphone:

Une valeur est requise.Format non valide.



Email:

Une valeur est requise.Format non valide.



Club:




Ville du club:




Certificat


:


3,5Mo Max


Parcours Choisi:


25Km


13Km


Effectuez une sélection.


[../Fichier/engagement.pdf Engagement du coureur]




J'ai lu et j'accepte "l'engagement du coureur"
Vous devez validez.


























var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "date", {format:"dd/mm/yyyy"});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5", "zip_code", {format:"zip_custom", pattern:"00000"});
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7", "phone_number", {format:"phone_custom", pattern:"00 00 00 00 00", useCharacterMasking:true});
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield8", "email");
var sprytextfield9 = new Spry.Widget.ValidationTextField("sprytextfield9", "none", {isRequired:false});
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10", "none", {isRequired:false});
var spryradio1 = new Spry.Widget.ValidationRadio("spryradio1");
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1");
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
var spryradio2 = new Spry.Widget.ValidationRadio("spryradio2");




Ma page de traitement en php:







Traitement de votre dossier

.centrer {
text-align: center;
}
.centrerbontonpaypal {
text-align: center;
}
.paypal {
text-align: center;
margin-right: auto;
margin-left: auto;
}
.centrer {
text-align: center;
}





0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
6 oct. 2012 à 11:02
bonjour

oui tu devrais refaire ... en effet, comme je le constate tu veux faire une écriture dans une table !
tu pourrais simplement mettre une variable
session à true si tout est ok est permettre

<?php
session_start();
$_SESSION['check']=false;

/*ici des checks des posts ...*/


if(isset($_SESSION['check']) && $_SESSION['check']===true){

//ON INSERE

echo 'Merci ...!';

unset($_SESSION['check']);
}else{
}
/*fin de page*/
?>


l'insertion dans la bdd puis la détruire juste après le traitement du mysql_query ou exec() si tu utilises pdo



Bonne programmation !
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
7 oct. 2012 à 19:25
Olala, il va falloir que je m'y remette!!!
J'ai une erreur à cause de session start.
Je m'y pencherai cette semaine.
Par contre bizzare tout s'affiche.

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homepages/31/d264748446/htdocs/Rev7trail/inscription/traitement2.php:8) in /homepages/31/.../traitement2.php on line 31

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/31.../traitement2.php:8) in /homepages/31/.../traitement2.php on line 31

Array
(
[civil] => mr
[nom] => qq
[prenom] => qq
[naissance] => 22/12/2012
[adresse] => qq
[cp] => 22222
[ville] => qq
[pays] => fr
[tel] => 22 22 22 22 22
[mail] => qq@qq.qq
[club] =>
[villeclub] =>
[MAX_FILE_SIZE] => 3600000
[parcours] => 25Km
[condition] => on
[button] => Envoyer
)
Array
(
[certificat] => Array
(
[name] => 17AA4CD0.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpKHtnlZ
[error] => 0
[size] => 112544
)

)

Lien au fichier : [ Voir le fichier ]
0
Rejoignez-nous