Fonction PHP

Résolu
kyoku59 Messages postés 54 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 21 septembre 2018 - 16 déc. 2009 à 17:50
kyoku59 Messages postés 54 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 21 septembre 2018 - 17 déc. 2009 à 16:29
Bonjour.

Voilà je détient un formulaire HTML ou j'envoie plusieurs fichier .doc

J'ai créé un fonction avec en paramétre :
$nameFile le nom de mon ,
$data pour moi reprendre un élément de la table de ma base de données
$varTable qui sera ma variable qui sera enregistré dans ma table.

mais sans résultat. Voici mon code :

					
function uploadDossier($nameFile, $data, $varTable)
{
//dossier où sont placé lES FICHIERS
$repertoire = '../Dossiers_inscriptions/'; 

$test = $_FILES['$nameFile']['tmp_name'];

if ($test != null) 
{
if (is_uploaded_file($_FILES["$nameFile"]["tmp_name"])) {
// recupération de l'extension du fichier (aprés le dernier point
$nomFichier = $_FILES["$nameFile"]["name"];
$extension = substr($nomFichier, strrpos($nomFichier, "."));
// Contrôle de l'extension du fichier
if (eregi("^ph", $extension)) {
die("Les fichiers en .ph* ne sont pas autorisés.");
}
$cheminFichier = $nomFichier ;
move_uploaded_file ($_FILES["$nameFile"]["tmp_name"], $repertoire.$cheminFichier);
}
$varTable = $repertoire.$cheminFichier;
}
else
{
//récupération du chemin déjà existant dans la table
$varTable = $data['$data'];
}

return $varTable;
}



J'appel ensuite cette fonction ainsi :

	$nameFile = 'wCheminPage1';
$data = 'cheminP1';
uploadDossier($nameFile, $data, $mD1);


Merci pour votre aide

3 réponses

kyoku59 Messages postés 54 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 21 septembre 2018
17 déc. 2009 à 16:29
Voilà pour ce qui veulent la réponse avec la reprise du code du dessus :


function uploadDossier($nameFile, $data, $varTable) {
    print_r(func_get_args());
    //dossier où sont placé lES FICHIERS
    $repertoire = '../Dossiers_inscriptions/'; 
    
    $test = $_FILES[$nameFile]['tmp_name'];
    echo 'valeur de $test => '.$test.'
';
    
    
    if ($test != null) {
        echo 'si ce message s\'affiche c\'est que test n\'est pas null
';
        if (is_uploaded_file($_FILES[$nameFile]["tmp_name"])) {
            echo 'yes, c\'est bien un fichier uploadé !!
';
            // recupération de l'extension du fichier (aprés le dernier point
            $nomFichier = $_FILES[$nameFile]["name"];
            $extension = substr($nomFichier, strrpos($nomFichier, "."));
            
            echo 'le nom de fichier est : '.$nomFichier.'
son extension est : '.$extension.'
';
            
            // Contrôle de l'extension du fichier
            if (eregi("^ph", $extension)) { // attention, c'est déprécier, utilise preg_match désormais !!
                die("Les fichiers en .ph* ne sont pas autorisés.");
            }
            $cheminFichier = $nomFichier ;
            if (false === move_uploaded_file ($_FILES[$nameFile]["tmp_name"], $repertoire.$cheminFichier)) echo 'echec ds la fonction move_uploaded_file
'; else echo 'move_uploaded_file OK
';
        } else echo 'ce n\'est pas un fichier uploadé
';
        
        $varTable = $repertoire.$cheminFichier;
    } else {
    //récupération du chemin déjà existant dans la table
        $varTable = $data['$data'];
        echo 'gaffe : test est null !!!
';
    }
    
    echo 'valeur retournée par la fonction : '.$varTable;
    return $varTable;
}


Avec l'appel de la fonction

		$nameFile = 'wCheminPage1';
$data = 'cheminP1';
$mD1 = '';
$mD1 = uploadDossier($nameFile, $data, $mD1);


Bonne continuation a tous
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 déc. 2009 à 21:43
Salut,

Il y a pas mal d'erreurs dans ton code.
Lorsque tu es confronté à ce genre de problème il faut "blinder" d'echo, print_r, var_dump, ... et activer l'affichage des erreurs :
<?php
ini_set('display_errors', 1);
error_reporting(-1);
?>

(au début du fichier et UNIQUEMENT pour le debug)

Par exemple en faisant ça :
$test = $_FILES['$nameFile']['tmp_name'];
die('valeur de $test => '.$test); //debug uniquement

Tu t'apercevrai qu'il y a plusieurs soucis :
Déjà $test = $_FILES['$nameFile']['tmp_name'];
s'écrit $test = $_FILES[$nameFile]['tmp_name'];

Sachant que $nameFile contient la chaîne wCheminPage1 ça te donnera :
$_FILES['wCheminPage1']['tmp_name'] ... ce qui ne correspond à rien.

Il faut que tu passes le nom temporaire du fichier posté à ta fonction :
$nameFile = $_FILES['nameFile']['tmp_name'];

Voici un exemple de choses que tu pourrais faire pour débugger :
<?php
function uploadDossier($nameFile, $data, $varTable) {
    print_r(func_get_args());
    //dossier où sont placé lES FICHIERS
    $repertoire = '../Dossiers_inscriptions/'; 
    
    $test = $_FILES['$nameFile']['tmp_name'];
    echo 'valeur de $test => '.$test.'
';
    
    
    if ($test != null) {
        echo 'si ce message s\'affiche c\'est que test n\'est pas null
';
        if (is_uploaded_file($_FILES["$nameFile"]["tmp_name"])) {
            echo 'yes, c\'est bien un fichier uploadé !!
';
            // recupération de l'extension du fichier (aprés le dernier point
            $nomFichier = $_FILES["$nameFile"]["name"];
            $extension = substr($nomFichier, strrpos($nomFichier, "."));
            
            echo 'le nom de fichier est : '.$nomFichier.'
son extension est : '.$extension.'
';
            
            // Contrôle de l'extension du fichier
            if (eregi("^ph", $extension)) { // attention, c'est déprécier, utilise preg_match désormais !!
                die("Les fichiers en .ph* ne sont pas autorisés.");
            }
            $cheminFichier = $nomFichier ;
            if (false === move_uploaded_file ($_FILES["$nameFile"]["tmp_name"], $repertoire.$cheminFichier)) echo 'echec ds la fonction move_uploaded_file
'; else echo 'move_uploaded_file OK
';
        } else echo 'ce n\'est pas un fichier uploadé
';
        
        $varTable = $repertoire.$cheminFichier;
    } else {
    //récupération du chemin déjà existant dans la table
        $varTable = $data['$data'];
        echo 'gaffe : test est null !!!
';
    }
    
    echo 'valeur retournée par la fonction : '.$varTable;
    return $varTable;
}
?>


Ce n'est qu'un exemple qui est là pour attirer ton attention sur la nécessité de connaitre ce qu'il se passe réellement dans ton script.

Cordialement,



Kohntark -
0
kyoku59 Messages postés 54 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 21 septembre 2018
16 déc. 2009 à 22:57
Je te remercie beaucoup de m'avoir répondu et de m'avoir mis sur une piste.
0
Rejoignez-nous