Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP Transmettre données avec un formulaire

pas de traitement de l'envoi en php

    30 mars 2020 à 12:53:01

    Bonjour

    Je suis sur le cours  "concevez votre site en php et mYSQL" d'openclassroom

    je n'arrive pas à obtenir le traitement de l'envoi en php

    J'ai crée fichier formulaire.php et fichier cible.php.

    <!DOCTYPE html>
    <html>
    
    
        <form action="cible_envoi.php" method="post" enctype="multipart/form-data">
            <p>
            Formulaire d'envoi de fichier :<br />
                    <input type="file" name="monfichier" /><br />
                    <input type="submit" value="Envoyer le fichier" />
            </p>
    </form>
    
    </html>
        

    fichier cible.php

    <?php
    // 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)
    {
     
    }
    ?>

    Ces 2 fichiers sont enregistrés au bon endroit puisque jusqu'ici les exos précédents ont pu fonctionner.

    C'est à dire que ce 2 fichiers sont enregistrés C:\wamp64\www\tests

    Quand je lance l'url http://localhost/tests/formulaire.php   tout se passe bien cf image 1 où je suis prêt à envoyer

    un petit fichier .txt

    Par contre une fois que j'envoie le formulaire , voici ce que j'obtiens, image 2

    Merci d'avance pour votre aide, j'ai bien essayé différents type de fichiers à envoyer mais ça ne marche pas non plus.

    Bonne journée à vous

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2020 à 12:54:30

      Bonjour

      Tu dis avoir crée un fichier "cible.php" mais toi le formulaire envoi sur "cible_envoi.php"

      • Partager sur Facebook
      • Partager sur Twitter
        30 mars 2020 à 14:57:35

        Bonjour

        Merci pour ta réponse. J'ai donc renommé le fichier cible.php  par cible_envoi.php.

        Du coup lorsque je clique sur envoyer , j'ai une page blanche qui s'affiche.Normal j'imagine

        Ensuite j'ai mis le code plus complet avec

        <?php
        // 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)
            {
                // On peut valider le fichier et le stocker définitivement
                move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
                echo "L'envoi a bien été effectué !";
            }
        
        ?>

        et je vois bien noté "l'envoi a bien été effectué" mais j'ai un message d'erreur cf image 3

        Dois je créer un dossier move uploaded file pour recevoir les fichiers envoyés au même endroit que mes fichiers php?

        Merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2020 à 17:07:36

          Il serait bien de tester le retour de la fonction move_upload car la quoi qu'il arrive, tu affiches le message de succès
          • Partager sur Facebook
          • Partager sur Twitter
            31 mars 2020 à 3:20:18

            Bonjour,

            Merci beaucoup encore pour ton aide, (parfois je me sens perdu). J'avais oublié l'image 3 donc la voici.

            Le message est bien envoyé mais voici le message d'erreur. 

            Ensuite j'ai rajouté le fichier move_upload dont tu m'as parlé dans mon fichier cible_envoi.php , là ça affiche toujours que le fichier a été bien envoyé mais j'ai encore plus de message d'erreur (image 4)

            <?php
            // 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)
            {
                // On peut valider le fichier et le stocker définitivement
                move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
                echo "L'envoi a bien été effectué !";
            }
            $uploads_dir = '/uploads';
            foreach ($_FILES["pictures"]["error"] as $key => $error) {
                if ($error == UPLOAD_ERR_OK) {
                    $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
                    $name = $_FILES["pictures"]["name"][$key];
                    move_uploaded_file($tmp_name, "$uploads_dir/$name");
                }
            }
            ?>
             

            Merci de ton aide et de ta patience.
            Bonne journée à toi

            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2020 à 4:30:02

              Bonsoir.

              move_uploaded_file, n'est pas un fichier, mais une fonction.

              Comme te l'a dit Aurélien.C, il te faut vérifier le retour de la fonction, ce n'est pas parce que tu vois le message que tu affiches juste en dessous, que l'upload s'effectue bien, la preuve se trouve dans les message d'erreurs:

              • Avertissement! move_uploaded_file(): Impossible de déplacer 'C:\wamp64\tmp\php843E.tmp' vers 'uploads/salutjuju.txt' dans C:\wamp64\www\tests\cible_envoi.php sur la ligne 6

              Ce que tu as à la ligne 6, c'est justement le premier move_uploaded_file avec le message juste en dessous, qui s'affiche quand même.

              • Partager sur Facebook
              • Partager sur Twitter

              Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

              PHP Transmettre données avec un formulaire

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown