Move_uploaded_file

bonjour mon problème la fonction ' move_uploaded_file' fonctionne très bien et je peut voir les photos dans un dossier de mon choix je suis meme arriver a les renommer mais quant je passe par une bases-de-donnees pour les voir elle son inaccessible la seul façon pour que cela fonctionne je doit les copier coller dans le meme dossier et la sa marche sinon on dirais quelle son fantôme voila j'ai un formulaire qui les copie dans le dossier les renomme et place leur adresse dans une bdd et un autre formulaire peut les afficher et tout est ok sauf que je suis obliger de les copier coller dans se mémé dossier pour les voir dans le formulaire bien sur après je supprime une des copie si sa vous parle je suis bloquer la

4 réponses

  1. resalut et voila le scripte en plusieurs morceaux


    bon voila donc je pense que le formulaire n'est pas utile mais s'y il le faut je le met donc mon ficher de photo s'appelle " photos " et il est place dans le meme fichier que le scripte
  2. <?php

    //ouverture de la bdd et recuperation des donneés formulaire
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    $nom = ($_POST['nom']);
    $prenom =($_POST['prenom']);
    $adresse =($_POST['adresse']);
    $telephone =($_POST['telephone']);
    $description=($_POST['description']);
    $monfichier =($_FILES['monfichier']);

    //recuperation id de la bdd le plus grand +1
    $reponse = $bdd->query('SELECT id FROM repertoir ORDER BY id DESC');
    $donnees = $reponse->fetch();
    $chiffre = strval($donnees[0]+1);

    // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur

    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error']== 0)
    {
    // Testons si le fichier n'est pas trop gros
    if ($_FILES['monfichier']['size'] <= 1000000)
    {
    // Testons si l'extension est autorisée
    $infosfichier = pathinfo($_FILES['monfichier']['name']);
    $extension_upload = $infosfichier['extension'];
    $extensions_autorisees = array('jpg','jpeg','gif','png');

    // ici on traite la decoupe du nom du fichier
    $split =explode(".", ($_FILES['monfichier']['name']));
    $ext = strtolower($split[1]);
    $nom_ph ="ph".''.$chiffre.'.'.$ext;
    $lieu = 'photos/photo/';
    $photo ='../photos/photo/ph'.''.$chiffre.'.'.$ext;

    if (in_array($extension_upload,$extensions_autorisees))

    {
    // On peut valider le fichier et le stocker définitivement
    move_uploaded_file($_FILES['monfichier']['tmp_name'],"$lieu $nom_ph");

    echo "L'envoi a bien été effectué !";

    }
    else
    {
    echo"l'extention n'est pas valide";

    }

    }
    else
    {
    echo"fichier trop gros ";
    }

    }
    else
    {
    $photo="vide";
    echo"le fichier est sauvegarde sans photo";
    }

    // ici on prepare la requette et on l'envoie

    $req = $bdd->prepare("INSERT INTO repertoir(nom, prenom,adresse,telephone,description,photo)
    VALUES(:nom,:prenom,:adresse,:telephone,:description,:photo)");
    $req->execute(array('nom'=>$nom,
    'prenom'=>$prenom,
    'adresse'=>$adresse,
    'telephone'=>$telephone,
    'description'=>$description,
    'photo'=>$photo ));

    ?>

    voila excuse moi je suis nouveau j’espère que sa vas comme sa s'il faut faire autre chose ?
    1. Modérateur
      Utiliser les balises de code.........
      As tu, au moins, ouvert le lien que je t'ai donné ?
  3. Modérateur
    Bon,
    Voici déjà quelques corrections apportées à ton code.
    Essaye de t'en inspirer pour tes prochains codes
    <?php 
    //Affichage des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    //connexion à la bdd
    try{
      $bdd =new PDO('mysql:host=localhost;dbname=test; charset=utf8', 'root', '');
      // 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());
    }
    
    //récupération PROPRE des variables
    // avant de les utiliser 
    $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL; 
    $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL
    $adresse = !empty($_POST['adresse']) ? $_POST['adresse'] : NULL
    $telephone = !empty($_POST['telephone']) ? $_POST['telephone'] : NULL
    $description = !empty($_POST['description']) ? $_POST['description'] : NULL
    $monfichier = !empty($_FILES['monfichier']) ? $_FILES['monfichier'] : NULL
    
    
    //recuperation id de la bdd le plus grand +1 
    $sql = 'SELECT max(id) FROM repertoir ';
    //Execution de la requete
    try{
      $requete = $bdd -> prepare($sql) ;
      $requete->execute() ;
      $donnees = $reponse->fetch(); 
      $chiffre = strval($donnees[0]+1);
    }catch(Exception $e){
      // en cas d'erreur :
       echo " Erreur ! ".$e->getMessage();
    }
     
    
    
    // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur 
    
    if ($monfichier && $monfichier['error']== 0) { 
      $fileName = $monfichier['name'];
      // Testons si le fichier n'est pas trop gros 
      if ($monfichier['size'] <= 1000000) { 
        // Testons si l'extension est autorisée 
        $infosfichier = pathinfo($fileName); 
        $extension_upload = $infosfichier['extension']; 
        $extensions_autorisees = array('jpg','jpeg','gif','png'); 
    
        // ici on traite la decoupe du nom du fichier 
        $split = explode(".", ($fileName)); 
        $ext = strtolower($split[1]); 
        $nom_ph ="ph".''.$chiffre.'.'.$ext; 
        $lieu = 'photos/photo/'; 
        $photo =$lieu . $nom_ph;
    
        if (in_array($extension_upload,$extensions_autorisees)) { 
          // On peut valider le fichier et le stocker définitivement 
          if(move_uploaded_file($_FILES['monfichier']['tmp_name'],"$lieu $nom_ph")){
            echo "L'envoi a bien été effectué !"; 
          }else{
            echo "Erreur lors de l'upload du fichier"; 
            exit();
          }
        } else { 
          echo"l'extention n'est pas valide"; 
        } 
      } else { 
        echo"fichier trop gros "; 
      } 
    } else { 
      $photo="vide"; 
      echo"le fichier est sauvegarde sans photo"; 
    } 
    
    // ici on prepare la requette et on l'envoie 
    $sql = "INSERT INTO repertoir(nom, prenom,adresse,telephone,description,photo) 
    VALUES(:nom,:prenom,:adresse,:telephone,:description,:photo)";
    
    $datas = array(':nom'=>$nom, 
                  ':prenom'=>$prenom, 
                  ':adresse'=>$adresse, 
                  ':telephone'=>$telephone, 
                  ':description'=>$description, 
                  ':photo'=>$photo ); 
    
    //Execution de la requete
    try{
      $requete = $bdd->prepare($sql) ;
      $requete->execute($datas);
      
      //id du nouvel enregistrement en bdd :
      $new_id = $bdd->lastInsertId();
      echo "Enregistrement en bdd : ".$new_id;
    }catch(Exception $e){
      // en cas d'erreur :
       echo " Erreur ! ".$e->getMessage();
       echo " Les datas : " ;
      print_r($datas);
    }
    ?>
    


    Je t'invite à lire et à appliquer le contenu de ces deux liens :

    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Si malgré cela tes soucis persistent, il faudra également nous montrer le code qui te sert à afficher tes images....

    Pense également à vidé le cache de ton navigateur (si le souci n'est qu'un problème d'affichage d'image... )

    .

    1. et bien grand merci pour tous ce code je vois que tu est tres douée et que tu connais bien le php ; moi je débute et seul c'est pas simple et j’avoue que je n'ai pas mis beaucoup de contrôle de code alors merci encore et je vais voir si je peut y arriver a+jordane