5568 sujets

Sémantique web et HTML

Bonjour,
je viens de rencontrer un probleme dans mon upload qui pourtant avant marchait tres bien.
Jai fait un upload d'images, les images se transferent tres bien dans mon dossier mais leur nom ne s'affiche pas dans ma base de donnees.
Voici mon code :

<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=basedd', 'root', 'root');
 
if(isset($_SESSION['Id'])) {
   $requser = $bdd->pCT * FROM noms WHERE Id = ?");
   $requser->execute(array($_SESSION['Id']));
   $user = $requser->fetch();
   
   if(isset($nom
      $recus = htmlspecialchars($nomDestination);
      $insertrecus = $
 }}



   <form enctype="multipart/form-data" action="#" method="post">
      <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
      Transfère le fichier <input type="file" name="monfichier" />
      <input type="submit" />
    </form>


    <?php
$nomOrigine = $_FILES['monfichier']['name'];
$elementsChemin = pathinfo($nomOrigine);
$extensionFichier = $elementsChemin['extension'];
$extensionsAutorisees = array("jpeg", "jpg", "gif", "png", "
    // Copie dans le repertoire du script avec un nom
    // incluant l'heure a la seconde pres 
    $repertoireDestination = dirname(__FILE__)."/";
    $nomDestination = "fichier_du_".date("YmdHis").".".$extensionFichier;

        echo "Le fichier n'a pas été uploadé (trop gros ?) ou ".
                "Le déplacement du fichier temporaire a échoué".
                " vérifiez l'existence du répertoire ".$repertoireDestination;
    }
}
?>

Je ne trouve pas ou se situe le probleme merci d'avance...
Modifié par voila (20 Oct 2020 - 12:32)
Modérateur
Bonjour,

Et tout ça est dans le même fichier ou dans des fichiers différents ? (parce là, je dois dire que j'ai dû mal à voir comment tout ça s'enchaine).

Amicalement,
Dans le meme fichier, mais ça a bien marché avant. J'ai laissé le fichier quelques jours et quand je l'ai reouvert ça ne marchait pas (j'ai peut etre modifié quelque chose sans faire expres ou pas enregistré ).
Modérateur
Bonjour,

J'ai donc fait une page avec ton code.

1) J'ai dû remplacer 127.0.0.1 par localhost chez moi (mais bon, ça dépend sans doute de ma configuration serveur, j'utilise toujours localhost quand je teste en local)
2) J'ai mis <?php session_start();?> tout seul en début de page (1re ligne du script).
3) J'ai déplacé la partie qui suit session_start(); en fin de page. Cette partie utilise la variable php $nomDestination qui est définie dans l'autre partie de script que tu as posté et qui commence par $nomOrigine = $_FILES['monfichier']['name']; Il faut donc bien faire attention dans quel ordre sont placées ces parties.
4) J'ai mis un Id égal à 1 dans $_SESSION['Id'] via une ligne de script php $_SESSION['Id']="1"; (je ne sais pas comment tu remplis le $_SESSION['Id']. Y-a-t-il une phase de connexion avant d'afficher la page ? Vérifie que ton $_SESSION['Id'] contient bien un Id qui va bien).
5) J'ai créé une base "basedd" avec une table "noms" et une ligne qui contient "Id=1" et "recus" non rempli (ta page ne créée pas cette ligne, il faut qu'elle existe déjà, est-ce bien le cas pour l'Id que tu utilises ?).
6) J'ai affiché la page, j'ai cliqué sur le bouton"Choisir un fichier", j'ai sélectionné une image png, puis j'ai cliqué sur le bouton "Envoyer".

Et ça marche très bien. Mon fichier image se retrouve bien dans le même dossier que le script de la page, et la ligne pour l'Id=1 dans la base de données contient dans le champ "recus" le nom du fichier image qui vient d'être transféré.

Amicalement,
Merci à vous, j'ai tout fait comme vous avez dit ça marche tres bien.
Bonne continuation à vous