IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Conserver la valeur de mon input de type FILE


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Par défaut Conserver la valeur de mon input de type FILE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    <?php
    session_start();
    require 'data.php';
     
    $nompl=$prenompl=$telephonepl=$codesec=$cnipl='';
    $erreurnom=$erreurprenom=$erreursection=$erreurcnipl=$erreurimage=$erreurtelephone='';
     
    if (isset($_POST['enregistrer'])) {
     
     
    	$nompl=checkinput($_POST['nompl']);
    	$prenompl=checkinput($_POST['prenompl']);
    	$codesec=checkinput($_POST['section']);
    	$telephonepl=checkinput($_POST['telephonepl']);
    	$cnipl=checkinput($_FILES['cnipl']['name']);
     
    	$pathinfo='image/'.basename($cnipl);
    	$extension=pathinfo($pathinfo,PATHINFO_EXTENSION);
    	$issuccess=true;
    	$isuplod=false;
     
     
    	$requete=$db->prepare('SELECT * FROM planteur where telephonepl=?');
    	$requete->execute(array($telephonepl));
    	$afficharge=$requete->fetch();
     
     
    	$requete1=$db->prepare('SELECT * FROM section where codesec=? ');
    	$requete1->execute(array($codesec));
    	$afficharge1=$requete1->fetch();
     
     
    if (empty($nompl) or !preg_match('#^[0-9A-Za-z]+$#', $nompl)) {
    	$erreurnom="Le champ nom ne peut ëtre vide et doit être alphanumerique";
    	$issuccess=false;
    }
     
    if (empty($prenompl)  or !preg_match('#^[0-9A-Za-z]+$#', $prenompl)) {
     
    	$erreurprenom="Le champ prénom ne peut ëtre vide et doit être alphanumerique";
    	$issuccess=false;
    }
    if (empty($telephonepl)  or !preg_match('#^[0-9]+$#', $telephonepl) ) {
    	$erreurtelephone="Le champ téléphone ne peut être vide et doit être un nombre";
    	$issuccess=false;
    }
    if(!empty($afficharge)) {
    	$erreurtelephone="Ce numéro existe dejà";
    	$issuccess=false;
    }
     
    if (empty($codesec) or empty($afficharge1)) {
    	$erreursection="le champ section ne peut être vide";
    	$issuccess=false;
    }
    if (empty($cnipl)) {
    	$erreurcnipl=" le champ image ne peut être vide";
    	$issuccess=false;
    }
    else{
     
    	$isuplod=true;
    			if ($extension!="jpeg" and $extension!="gif" and  $extension!="png" and $extension!="jpg") {
    				$erreurcnipl='l\' extension du fichier doit être un .jpeg .jpg .png .jpg';
    				$isuplod=false;
     
    			}
    			if (file_exists($pathinfo)) {
    				$erreurcnipl='ce fichier exite dejà';
    				$isuplod=false;
     
     
    			}
    			if ($_FILES['cnipl']['size']>500000) {
    				$erreurcnipl='fichier doit etre maximum 500kb';
    				$isuplod=false;
     
    			}
     
    			if ($isuplod and $issuccess) {
    				if (!move_uploaded_file($_FILES["cnipl"]["tmp_name"],$pathinfo)) {
    					$erreurcnipl="il y' a eu une erreur lors de l' upload";
    					$isuplod=false;
    				}
    			}
     
    }
     
    if ($issuccess and $isuplod ) {
    			$requete=$db->prepare("INSERT INTO planteur(nompl,prenompl,telephonepl,codesec,cnipl) values(?,?,?,?,?)");
    			$requete->execute(array($nompl,$prenompl,$telephonepl,$codesec,$cnipl));
    			header('location:planteur.php');
     
    			var_dump(file_exists($cnipl));
     
    		}
     
     
    }
     
     
     
    	function checkinput($data){
    		$data=trim($data);
    		$data=stripcslashes($data);
    		$data=htmlspecialchars($data);
    		return $data;
     
    	}
     
    ?>
     
    <?php require 'headers.php'; ?>
     
    <h1>Ajouter un planteur</h1>
     
    <?php
    if (isset($erreurs)) {
     
    	echo '<p>'.$erreurs.'</p>';
     
    }
     
    ?>
     
    <form action="planteurinsert.php" method="POST" enctype="multipart/form-data">
     
     
      <div class="row mb-3">
        <label for="nompl" class="col-sm-2 col-form-label">Nom</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" id="nompl" name="nompl" value="<?php echo $nompl; ?>">
          <span><?php  echo $erreurnom;?></span>
        </div>
      </div>
     
      <div class="row mb-3">
        <label for="prenompl" class="col-sm-2 col-form-label">Prénom</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" id="prenompl" name="prenompl" value="<?php echo $prenompl; ?>">
          <span><?php  echo $erreurprenom;?></span>
        </div>
      </div>
     
    <div class="row mb-3">
        <label for="telephonepl" class="col-sm-2 col-form-label">Téléphone</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" id="telephonepl" name="telephonepl" value="<?php echo $telephonepl; ?>">
          <span><?php  echo $erreurtelephone;?></span>
        </div>
      </div>
     
     
      <div class="row mb-3">
        <label for="section" class="col-sm-2 col-form-label">Section du planteur</label>
        <div class="col-sm-10">
    						<select class="form-control" id="section" name="section">
    							<option>--Selectionnez une section-- </option>
    							<?php
    							foreach ($db->query('SELECT * FROM section') as $row) {
     
    								if($row['codesec']==$codesec)
    								echo'<option selected="selected" value="'.$row['codesec'].'">'.$row['nomsec'].'</option>';
    							else
    									echo'<option value="'.$row['codesec'].'">'.$row['nomsec'].'</option>';
     
    							}
    							  ?>
     
     
    						</select>
    						<span><?php  echo $erreursection;?></span>
        </div>
      </div>
     
      <div class="row mb-3">
        <label for="cnipl" class="col-sm-2 col-form-label">Carte d' identité</label>
        <div class="col-sm-10">
          <input type="FILE" class="form-control" id="cnipl" name="cnipl">
          <span><?php  echo $erreurcnipl;?></span>
        </div>
      </div>
     
     
     
     	<a href="planteur.php" class="btn btn-success">Retour</a>
      <button type="submit" class="btn btn-primary" name="enregistrer">Enregistrer</button>
     
    </form>
     
    <?php require'footer.php'; ?>
    1)Mon but c' est de pouvoir conserver la valeur de mon input de type file lorsque je soumet mon formulaire plus d' une (1) fois

    2)Lorsque j' utilise les variables de session j' arrive à conserver la valeur de mon fichier même si je soumet mon formulaire plusieurs fois.
    le problème avec les sessions lorsque je rafraîchi la page la valeur de mon fichier ne l'ai pas aussi ou d' un alller retour sur une autre page alors j' ai abandonné cette méthode.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    le code html (ou javascript) ne peux pas préremplir le chemin d'un fichier car ça serait un souci de sécurité qui permettrai au sites d'accéder aux fichiers de votre ordinateur sans votre accord.

    donc si vous voulez garder l'information du fichier qui a été sélectionné, vous devez enregistrer le fichier sur le serveur dès que l'utilisateur l'a sélectionné.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Par défaut
    Enregistrer le fichier sur le serveur dès que l'utilisateur l'a sélectionné sera problématique car si la personne a omise un champ autre que celui du fichier on aura un enregistrement incomplet dans la bd tandis que les autres champs seront vide et en plus la valeur du FILE sera perdu et il sera obliger de ressaisir

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Enregistrer le fichier sur le serveur dès que l'utilisateur l'a sélectionné sera problématique car si la personne a omise un champ autre que celui du fichier on aura un enregistrement incomplet dans la bd
    Rien ne t'empêche de refuser le formulaire s'il est incomplet, et en parallèle de mettre le fichier uploadé de côté.

    Le nom temporaire du fichier uploadé pourrait être placé en variable de session $_SESSION['uploaded-file-name'] par exemple.

    Dans le formulaire pour avertir l'utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php if (isset($_SESSION['uploaded-file-name'])): ?>
        <p>Un fichier a déjà été uploadé, vous pouvez en uploader un autre en remplacement.</p>
    <?php endif ?>
    <input type="file" name="datafile">
    Lorsque le formulaire est validé tu utilises $_SESSION['uploded-file-name'] ou $_FILES['datafile'] selon la situation.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Par défaut
    Est -il possible lorsque je rafraichie la page $_session puisse être vide ou lorsque je change de page elle soit aussi vide.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Affouda Voir le message
    Est -il possible lorsque je rafraichie la page $_session puisse être vide ou lorsque je change de page elle soit aussi vide.
    Le but des sessions est de maintenir des valeurs / un état d'une page à l'autre.

    La session est perdue à la fermeture du navigateur ou après une longue période d'inactivité.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Par défaut
    Merci beaucoup

Discussions similaires

  1. Avoir 2 valeurs dans un input de type radio
    Par jpguiche dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/06/2014, 14h51
  2. [AJAX] effacer des valeurs dans mon input ajax
    Par fano97one dans le forum AJAX
    Réponses: 5
    Dernier message: 26/06/2012, 13h08
  3. Dupliquer mon input de type text
    Par angelusflm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/02/2009, 15h01
  4. Concatenation et Prendre la valeur d'un input de type Text
    Par pidu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 16h58
  5. chemin d'un input de type file
    Par sbbn1 dans le forum ASP
    Réponses: 2
    Dernier message: 05/04/2004, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo