Upload une image

Résolu/Fermé
daryle - 17 août 2021 à 17:00
 daryle - 18 août 2021 à 20:15
Bonjour,
j'ai un formulaire avec plusieurs donnees a enregistrer dans la base de donnee donc une image en fait j' ai bel et bien suivi les procedure mais mon probleme que je ne trouve pas l'image dans mon dossier ( qui a pour nom uploads)
pourtant jai le nom dans la base de donnee
voici le coe pour le formulaire je vais vous envoye juste la ligne de 'image
<div class="md-form mb-5">
<label for="text">image illustatif</label>
<input name="g" value="100000" style=" border: 2px solid skyblue;" type="file" id="form3" class="form-control validate"required >
</div>


et voici le php
pour soumetre mon formulaire
<?php
$bd=new PDO('mysql:host=localhost;dbname=afrijob','root','manuella2001');
$request="SELECT * FROM emploie";
$resultat=$bd->query($request);
$a=isset($_POST["a"])?$_POST["a"]:"";
$b=isset($_POST["b"])?$_POST["b"]:"";
$c=isset($_POST["c"])?$_POST["c"]:"";
$z=isset($_POST["z"])?$_POST["z"]:"";
$d=isset($_POST["d"])?$_POST["d"]:"";
$e=isset($_POST["e"])?$_POST["e"]:"";
$f=isset($_POST["f"])?$_POST["f"]:"";
$g=isset($_FILES["g"]["name"])?$_FILES["g"]["name"]:"";
$h=isset($_POST["h"])?$_POST["h"]:"";
$i=isset($_POST["i"])?$_POST["i"]:"";
$j=isset($_POST["j"])?$_POST["j"]:"";
$k=isset($_POST["k"])?$_POST["k"]:"";
$l=isset($_POST["l"])?$_POST["l"]:"";
move_uploaded_file($g,'uploads/'.$g);
$requete= "INSERT INTO emploie(nom_entr, poste, ville, type_contrat,nbre,img_emploi,date_limite,cmt_post,email_emploi,site,whatsapp,sms,appel) VALUES ('".$a."','".$b."','".$c."','".$z."','".$d."','".$g."','".$e."','".$f."'
,'".$h."','".$i."','".$j."','".$k."','".$l."')";
$params=array($a,$b,$c,$z,$d,$g,$e,$f,$h,$i,$j,$k,$l);
$resultat=$bd->prepare($requete);
$resultat->execute($params);
header( 'location:index.php?reg_err=offre_publier_avec_succes');
?>
je tiens a preciser que tous les autres elements s'enregistre parfaitement
A voir également:

8 réponses

jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
17 août 2021 à 17:09
Bonjour,

Comme je te l'ai déjà indiqué ....
Tu dois utiliser les balises de code pour poster du code sur le forum.
Explications ( à lire entièrement !! ) disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Pour ce qui est de ton souci...
Ajoute donc un IF autour de la fonction moveuploadedfile ...
$tmp_name = !empty($_FILES["g"]['tmp_name']) ? $_FILES["g"]['tmp_name']: NULL;
if (! move_uploaded_file($tmp_name, 'uploads/'.$g)) {
  echo " Error :" . $tmp_name ;
}


et met en commentaire la redirection pour voir les éventuelles erreurs.

Pense aussi à activer l'affichage des erreurs php.
Je t'invite, par ailleurs, à lire et à appliquer le contenu de ce lien https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour éviter tout souci futur (même si ce n'est pas le cas pour l'instant... ) avec tes requêtes, le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
1
j'ai essayer mais sa ne fonctionne toujours pas
1
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
18 août 2021 à 13:35
Si tu ne nous montres pas le code modifié que tu as essayé... Impossible de trouver ce qui n'est pas bon..
0
$g=isset($_FILES["g"]["tmp_name"])?$_FILES["g"]["tmp_name"]:"";if(!move_uploaded_file($g,'uploads/'.$g)){
    echo "error:".$g;
}
$requete= "INSERT INTO emploie(nom_entr, poste, ville, type_contrat,nbre,img_emploi,date_limite,cmt_post,email_emploi,site,whatsapp,sms,appel) VALUES ('".$a."','".$b."','".$c."','".$z."','".$d."','".$g."','".$e."','".$f."'
,'".$h."','".$i."','".$j."','".$k."','".$l."')";
$params=array($a,$b,$c,$z,$d,$g,$e,$f,$h,$i,$j,$k,$l);
$resultat=$bd->prepare($requete);
$resultat->execute($params);
header( 'location:index.php?reg_err=offre_publier_avec_succes');
?>
1
voici le code que j'ai tester avec vos modification
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524 > daryle
18 août 2021 à 15:04
Bonjour,

L'attribut enctype="multipart/form-data" a bien été ajouté sur la balise html form ?
https://www.php.net/manual/fr/features.file-upload.post-method.php#example-413
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > daryle
18 août 2021 à 15:15
alors bon..; c'est le code COMPLET qu'il nous faut .. pas juste quelques morceaux .. sinon on ne s'en sortira jamais.
0
voici mon formulaire
<form action="envoie.php" method="POST" enctype="multipart/form-data">
      <div class="container my-4"  style=" text-align: center; ">
        <div class="modal fade" id="modalSubscriptionForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
                aria-hidden="true">
          <div class="modal-dialog" role="document">
              <div class="modal-content" style="overflow-y:scroll;">
                <div class="modal-header text-center">
                  <h4 class="modal-title w-100 font-weight-bold">crée l'annonce</h4>
                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                  <span aria-hidden="true">×</span>
                </button>
              </div>
              <div class="modal-body mx-3">
                <div class="md-form mb-5">
                  <label for="text">nom de l'entreprise</label>
                  <input name="a" style=" border: 2px solid skyblue;" type="text" id="form3" class="form-control validate" placeholder="entrer le nom de votre entreprise" required >
                </div>

                <div class="md-form mb-5">
                  <label for="text">poste</label>
                  <input style=" border: 2px solid skyblue;" name="b" type="text" id="form3" class="form-control validate" placeholder="nom du poste"required >
                </div>

                <div class="md-form mb-5">
                  <label for="text">ville</label>
                  <input name="c" style=" border: 2px solid skyblue;" type="text" id="form3" class="form-control validate" placeholder="entrer la ville de l'offre'"required >
                </div>

                <div class="md-form mb-5">
                   <select name="z" style=" border: 2px solid skyblue; height: 50px;" id="form3" class="form-control validate"required >
                    <option > type de contrat</option>
                    <option > CDI</option>
                    <option > CDD</option>
                    <option > stage accademique</option>
                    <option> stage proffesionnel</option>
                    <option > stage pre-emploi</option>
                  </select>
                </div>

                <div class="md-form mb-5">
                  <label for="text">nombre de place</label>
                  <input name="d" style=" border: 2px solid skyblue;" type="number" id="form3" class="form-control validate" placeholder=" le nombre de place disponible"required >
                </div>
                <div class="md-form mb-5">
                  <label for="text">date limite</label>
                
                  <input name="e" style=" border: 2px solid skyblue;" type="date" id="form3" class="form-control validate" placeholder="date limite pour postuler"required >
                </div>

                <div class="md-form mb-5">
                  <label for="text">comment postulerr</label>
                  <!-- <input type="text" id="form3" class="form-control validate" placeholder=" decrivez les conditions et comment postulez "> -->
                <textarea name="f"  required  placeholder=" decrivez les conditions pour postuler et comment postulez " style="  width: 400px;height: 150px; border: 2px solid skyblue;"></textarea>
                </div>

                <div class="md-form mb-5">
                  <label for="text">image illustatif</label>
                  <input name="g" value="100000" style=" border: 2px solid skyblue;" type="file" id="form3" class="form-control validate"required >
                </div>
                <div class="md-form mb-5">
                  <label for="text">comment vous contacter</label><br><br>
                  <label for="text">email</label>
                  <input name="h" style=" border: 2px solid skyblue;" type="email" id="form2" class="form-control validate" placeholder="votre adresse email">

                  <label for="text">site internet</label>
                  <input name="i" style=" border: 2px solid skyblue;" type="url" id="form2" class="form-control validate" placeholder="le lien de votre site web">

                  <label for="text"> whatsapp</label>
                  <input name="j" style=" border: 2px solid skyblue;" type="tel" id="form2" class="form-control validate" placeholder=" votre numero whatsapp">

                  <label for="text">sms</label>
                  <input name="k" style=" border: 2px solid skyblue;" type="tel" id="form2" class="form-control validate" placeholder=" votre numero pour sms">

                  <label for="text" >appel</label>
                  <input name="l"  style=" border: 2px solid skyblue;"type="tel" id="form2" class="form-control validate" placeholder=" vottre numero pour appel">
                  
                </div>
            </div>
              <div class="modal-footer d-flex justify-content-center">
                
                <input type="submit" name="submit" value="publiez votre annonce"style=" background-color:rgb(7, 196, 48);  border-radius: 10px;   width: 200px;  height: 50px; "> 
              </div>
          </div>
        </div>
      </div>
      <div class="text-center">
        <a href="" class="btn btn-default btn-rounded mb-4" data-toggle="modal" data-target="#modalSubscriptionForm" style=" background-color: orchid; border:black; color:white; ">publiez votre offre</a>
      </div>

    </div>
</form> 
1
voici mon code php
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$bd=new PDO('mysql:host=localhost;dbname=afrijob','root','manuella2001');
$request="SELECT * FROM emploie";
$resultat=$bd->query($request);
$a=isset($_POST["a"])?$_POST["a"]:"";
$b=isset($_POST["b"])?$_POST["b"]:"";
$c=isset($_POST["c"])?$_POST["c"]:"";
$z=isset($_POST["z"])?$_POST["z"]:"";
$d=isset($_POST["d"])?$_POST["d"]:"";
$e=isset($_POST["e"])?$_POST["e"]:"";
$f=isset($_POST["f"])?$_POST["f"]:"";
$g=isset($_FILES["g"]["tmp_name"])?$_FILES["g"]["tmp_name"]:"";
$h=isset($_POST["h"])?$_POST["h"]:"";
$i=isset($_POST["i"])?$_POST["i"]:"";
$j=isset($_POST["j"])?$_POST["j"]:"";
$k=isset($_POST["k"])?$_POST["k"]:"";
$l=isset($_POST["l"])?$_POST["l"]:"";
if(!move_uploaded_file($g,'uploads/'.$g)){
    echo "error:".$g;
}
$requete= "INSERT INTO emploie(nom_entr, poste, ville, type_contrat,nbre,img_emploi,date_limite,cmt_post,email_emploi,site,whatsapp,sms,appel) VALUES ('".$a."','".$b."','".$c."','".$z."','".$d."','".$g."','".$e."','".$f."'
,'".$h."','".$i."','".$j."','".$k."','".$l."')";
$params=array($a,$b,$c,$z,$d,$g,$e,$f,$h,$i,$j,$k,$l);
$resultat=$bd->prepare($requete);
$resultat->execute($params);
header( 'location:index.php?reg_err=offre_publier_avec_succes');
?>
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > daryle
18 août 2021 à 15:24
Je vois que tu n'as pas appliqué les consignes concernant PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Et que tu n'as pas non plus désactivé la redirection à la fin de ton script ( ce qui t'empêche de voir les éventuelles erreurs... )
0
daryle > jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
18 août 2021 à 15:33
pour les erreurs j'ai fais mais pour la redirection j'ai pas compris comment faire
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > daryle
18 août 2021 à 15:58
Ben tu supprimes ou tu lets en commentaire la ligne 29
0

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

Posez votre question
je fais et voici le message que j'ai reçu


Avertissement : move_uploaded_file(uploads//tmp/phppaSu7D) : échec de l'ouverture du flux : Aucun fichier ou répertoire de ce type dans /var/www/public/afrijob/envoie.php à la ligne 21

Avertissement : move_uploaded_file() : Impossible de déplacer '/tmp /phppaSu7D' vers 'uploads//tmp/phppaSu7D' dans /var/www/public/afrijob/envoie.php à la ligne 21 erreur :/tmp/phppaSu7D


normalement l'image doit être transferer a ladresse /var/www/public/afrijob/uploads mais la c'est plutôt /var/www/public/afrijob/envoie.php
1
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 18 août 2021 à 17:22
Peux tu tester ce script

<?php

//---------------------------------//
// Affichage des erreurs PHP
//---------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//---------------------------------//
//connexion à la base avec activation des erreurs PDO
//---------------------------------//
try {
  $bdd = new PDO('mysql:host=localhost;dbname=afrijob', 'root', 'manuella2001');
// Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}

//---------------------------------//
// FONCTIONS
//---------------------------------//
function getPost($varName, $defaultValue = "") {
  return isset($_POST[$varName]) ? $_POST[$varName] : $defaultValue;
}

function getFiles($fieldFileName) {
  return !empty($_FILES[$fieldFileName]) ? $_FILES[$fieldFileName] : NULL;
}

function moveFile($fieldFileName, $uploadDir = 'upload/') {

  $maxUploadFileSize = 100000;

  $phpFileUploadErrors = array(
      0 => 'There is no error, the file uploaded with success',
      1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
      2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
      3 => 'The uploaded file was only partially uploaded',
      4 => 'No file was uploaded',
      6 => 'Missing a temporary folder',
      7 => 'Failed to write file to disk.',
      8 => 'A PHP extension stopped the file upload.',
  );

  // récupération propre des variables avant de les utiliser
  $F = getFiles($fieldFileName);
  $fileTmpPath = $F['tmp_name'];
  $fileName = $F['name'];
  $fileSize = $F['size'];
  $fileType = $F['type']; // Si tu veux vérifier le type mime du fichier..


  //on vérifie qu'il n'y a pas d'erreur dans le $_FILES
  $error = !empty($F['error']) ? $phpFileUploadErrors[$F['error']] : NULL;
  if ($error) {
    echo $error;
    return false;
  }


  if (!is_dir($uploadDir)) {
    // si le dossier de destination n'existe pas on le créé !
    mkdir($uploadDir, 0755, true);
  }

  // on vérifie que le répertoire de déstination est accessible en écriture
  if (!is_writable($uploadDir)) {
    echo "Permission denied on " . $uploadDir;
    return false;
  }


// on vérifie la taille du fichier envoyé
  if ($fileSize > $maxUploadFileSize) {
    echo "file Size Error : " . $fileSize;
    return false;
  }

  $dest_path = $uploadDir . $fileName;

//On vérifie que le fichier s'est chargé sur le serveur
  if (!is_uploaded_file($fileTmpPath)) {
    echo "upload file error ";
    return false;
  }

//On déplace le fichier dans son répertoire finale
  if (move_uploaded_file($fileTmpPath, $dest_path)) {
    return $fileName;
  } else {
    echo 'There was some error moving the file to upload directory. Please make sure the upload directory is writable by web server.';
    return false;
  }
}

//---------------------------------//
// Début du script :
//---------------------------------//
//récupération des variables POST et FILES
$a = getPost('a');
$b = getPost('b');
$c = getPost('c');
$d = getPost('d');
$e = getPost('e');
$f = getPost('f');
$h = getPost('h');
$i = getPost('i');
$j = getPost('j');
$k = getPost('k');
$l = getPost('l');
$z = getPost('z');

//on upload le fichier
$g = moveFile('g', 'uploads/');

//Si il s'est bien uploadé...
if ($g) {

  try {
    $requete = "INSERT INTO emploie(nom_entr, poste, ville, type_contrat,nbre,img_emploi,date_limite,cmt_post,email_emploi,site,whatsapp,sms,appel) 
            VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";
    $params = array($a, $b, $c, $z, $d, $g, $e, $f, $h, $i, $j, $k, $l);
  } catch (Exception $ex) {
    $resultat = $bdd->prepare($requete);
    $resultat->execute($params);
    header('location:index.php?reg_err=offre_publier_avec_succes');
  }
  
} else {
  echo "<br>Error !";
  exit;
}




Bien sûr, Si le souci persiste.. il faudra également vérifier que ton répertoire temp existe et a les droits en écriture par le user php
Ton serveur web est sous quel OS ? ( tu es en LOCAL sur ton ordi ou sur un "vrai" serveur ? )
Qu'as tu dans le php.ini au niveau de la ligne upload_tmp_dir



0
je vous remercie et m'excuse du temps que je vous fais perdre
je suis sur ubuntu 20.04 et je travail en local sur mon ordinateur
j'ai essayer ton code mais j'ai reçu cette erreur

Permission denied on uploads/
Error !
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > daryle
Modifié le 18 août 2021 à 19:29
Et bien ça veut dire que ton répertoire n'a pas les autorisations en écriture
Assure-toi qu'il ait les permissions en 7 5 5 par exemple
0
merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii beaucoup avec le message d'erreur je suis aller dans mon dossier uploads sur propriété et j'ai réglé le partage en local et j'ai ressaye et cela fonctionne normalement
en fait le pb venais de mon OS
merci pour votre aide vraiment c'etais ma première fois dans un forum et j'ai été satisfaite
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 18 août 2021 à 20:08
Pour tes prochains codes, inspires toi quand même de celui que je t'ai donné...
Bonne soirée.
0
okay merci
0