Problème fonction...

Bonjour à tous , me revoilà!
J'ai un problème avec une fonction , c'est simple ça fonctionne pas o_O

Je ne suis pas très doué si vous voulez bien m'aider merci!
Voilà le code:

<?php function enregistrer_fichier($endroit)
{
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'files/uploads/' .$endroit. '/' . basename($_FILES['monfichier']['name']));
$reponse = mysql_query("SELECT id FROM exos_uploads ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
$last_id = $donnees['id']+1;
$_FILES['monfichier']['name'] = $titre.$last_id;
$nom_fichier = $_FILES['monfichier']['name'];
mysql_query("INSERT INTO exos_uploads VALUES('','" .$pseudo. "','" .$commentaires. "','" .$matiere. "','" .$nom_fichier. "','" .time(). "')") or die(mysql_error());
}

if($matiere == 'physique')
{
enregistrer_fichier('physique');
echo 'Fichier enregistré dans physique';
}?>



...Comme j'ai pas mal de conditions après j'ai donc créer cette fonction,mais voilà ça ne m'enregistre pas à l'endroit voulu en paramètre...alors que sinon le script en lui même pour enregistrer des fichier fonctionne!

PS:je suis bien connecté à ma BDD

Merci d'avance et a+!
Configuration: Windows XP
Firefox 3.0.1

15 réponses

  1. Personne?
    hummm...

    SVP!
    0
    1. REBonjour à tous , me RErevoilà!
      J'ai un problème avec une fonction , c'est simple ça fonctionne pas o_O

      Je ne suis pas très doué si vous voulez bien m'aider merci!
      Voilà le code:

      <?php function enregistrer_fichier($endroit)
      {
      move_uploaded_file($_FILES['monfichier']['tmp_name']­, 'files/uploads/' .$endroit. '/' . basename($_FILES['monfichier']['name']));
      $reponse = mysql_query("SELECT id FROM exos_uploads ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
      $donnees = mysql_fetch_array($reponse);
      $last_id = $donnees['id']+1;
      $_FILES['monfichier']['name'] = $titre.$last_id;
      $nom_fichier = $_FILES['monfichier']['name'];
      mysql_query("INSERT INTO exos_uploads VALUES('','" .$pseudo. "','" .$commentaires. "','" .$matiere. "','" .$nom_fichier. "','" .time(). "')") or die(mysql_error());
      }

      if($matiere == 'physique')
      {
      enregistrer_fichier('physique');
      echo 'Fichier enregistré dans physique';
      }?>

      ...Comme j'ai pas mal de conditions après j'ai donc créer cette fonction,mais voilà ça ne m'enregistre pas à l'endroit voulu en paramètre...alors que sinon le script en lui même pour enregistrer des fichier fonctionne!

      PS:je suis bien connecté à ma BDD

      Merci d'avance et a+!
      0
      1. Bon j'ai rien dit ma fonction fonctionne...
        Mais là j'ai un autre problème :):

        function enregistrer_fichier($endroit)
        {
        move_uploaded_file($_FILES['monfichier']['tmp_name'], 'files/uploads/' .$endroit. '/' . basename($_FILES['monfichier']['name']));
        $reponse = mysql_query("SELECT id FROM exos_uploads ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
        $donnees = mysql_fetch_array($reponse);
        $last_id = $donnees['id']+1;
        $_FILES['monfichier']['name'] = $titre.$last_id;
        $nom_fichier = $_FILES['monfichier']['name'];
        mysql_query("INSERT INTO exos_uploads VALUES('','" .$pseudo. "','" .$commentaires. "','" .$matiere. "','" .$nom_fichier. "','" .time(). "')") or die(mysql_error());
        }

        if($matiere == 'physique')
        {
        enregistrer_fichier('physique');
        echo 'Fichier enregistré dans physique';
        echo $pseudo.$commentaires.$matiere.$nom_fichier;
        }


        Impossible d'enregistrer les variables pseudo,matiere,commentaires, dans ma bdd(je ne vois pas dans ma BDD) mais pourtant avec le echo je les vois...
        Mais que le nom_fichier s'enregistre dans la BDD...enfin que l'id pas l'id.titre...

        Merci de bien vouloir m'aider et a+!
        0
        1. Salut,

          Essaie ceci :

          function enregistrer_fichier($endroit, $pseudo, $commentaires, $matiere, $nom_fichier)
          {
          move_uploaded_file($_FILES['monfichier']['tmp_name']­, 'files/uploads/' .$endroit. '/' . basename($_FILES['monfichier']['name']));
          $reponse = mysql_query("SELECT id FROM exos_uploads ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
          $donnees = mysql_fetch_array($reponse);
          $last_id = $donnees['id']+1;
          $_FILES['monfichier']['name'] = $titre.$last_id;
          $nom_fichier = $_FILES['monfichier']['name'];
          mysql_query("INSERT INTO exos_uploads VALUES('','" .$pseudo. "','" .$commentaires. "','" .$matiere. "','" .$nom_fichier. "','" .time(). "')") or die(mysql_error());
          }

          if($matiere == 'physique')
          {
          enregistrer_fichier('physique', $pseudo, $commentaires, $matiere, $nom_fichier);
          echo 'Fichier enregistré dans physique';
          echo $pseudo.$commentaires.$matiere.$nom_fichier;
          }
          0
          1. Bon bah MERCI ça fonctionne :p!

            Quelle est la cause de ce problème?

            C'est pas parceque à l'intérieur des fonctions les variables sont définis que pour elles?

            Merci!!
            0
            1. Salut,

              Oui. Dans une fonction, chaque variable appartient à la fonction et la fonction seule uniquement. Tu peux créer 50 fois la variables $Query dans 50 fonctions sans quelle se touche une fois. Il suffit d'inclure les variables entre les fonction($var1, $var2) et lors de l'appel : salut('salut', 'ca va').

              Je t'invite à regarder ceci : https://openclassrooms.com/fr/courses#ss_part_1

              Cordialement, David.

              Signature non conforme ==> Supprimée
              Modération CCM
              0
              1. Merci beaucoup pour ta rapidité et tes explications , je cherchais à résoudre ce ***** de problème depuis hier et voilà que c'est résolu ça fait du bien :p

                Merci a+!
                0
                1. Salut,

                  Pas de problème. Si tu as d'autres problèmes, n'hésite pas =)

                  @+
                  Signature non conforme ==> Supprimée
                  Modération CCM
                  0
                  1. Bon me revoilà déjà lol!

                    J'ai rajouté un paramètre à ma fonction :p mais fonctionne pas en fait j'ai rajouté des conditions pour des sous-dossiers encore et encore!!

                    function enregistrer_fichier($endroit_1,$endroit_2, $pseudo, $commentaires, $matiere, $nom_fichier,$classe,$titre)
                    {
                    move_uploaded_file($_FILES['monfichier']['tmp_name'], 'files/uploads/' .$endroit_1. '/' .$endroit_2. '/' . basename($_FILES['monfichier']['name']));
                    $reponse = mysql_query("SELECT id FROM exos_uploads ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
                    $donnees = mysql_fetch_array($reponse);
                    $last_id = $donnees['id']+1;
                    $_FILES['monfichier']['name'] = $titre.$last_id;
                    $nom_fichier = $_FILES['monfichier']['name'];
                    mysql_query("INSERT INTO exos_uploads VALUES('','" .$pseudo. "','" .$commentaires. "','" .$matiere. "','" .$nom_fichier. "','" .time(). "','" .$classe. "')") or die(mysql_error());
                    }
                    //Pour les variables extérieurs à la fonction car RAPPEL:les variables sont UNIQUES pour les fonctions :p
                    if($matiere == 'physique')
                    {
                    if($classe == 'seconde')
                    {
                    enregistrer_fichier('physique','seconde', $pseudo, $commentaires, $matiere, $nom_fichier,$classe,$titre);
                    echo 'Fichier enregistré dans physique';
                    echo $pseudo.$commentaires.$matiere.$nom_fichier.$classe;
                    }
                    .........................etc...........


                    Merci d'avance et a+!
                    0
                    1. Bon bah ça fonctionne...
                      Voyez vous des irrégularités dans mon code tout de même?:p
                      Merci
                      0