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

  • Votes
  • Date
  • Date décroissante
  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+!
    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+!
      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;
        }
        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!!
          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
            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+!
              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
                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+!
                  1. Bon bah ça fonctionne...
                    Voyez vous des irrégularités dans mon code tout de même?:p
                    Merci