Cha63 Posted August 1, 2012 Share Posted August 1, 2012 Bonjour, Je suis en train de développer un site e-commerce prestashop durant mon stage, et depuis quelques jours je bloque sur un petit problème. Je souhaite ajouter un lecteur audio à ma fiche produit, lecteur qui sera alimenté par l'ajout d'un mp3 depuis le backoffice. Pour ce faire, je souhaite ajouter une rubrique avec un sélecteur de fichier (bouton parcourir) sur le back office afin que l'administrateur ait accès à l'arborescence de l'ordinateur et puisse sélectionner le fichier qui l'intéresse. Mon problème est que je n'arrive pas à sauvegarder le contenu de mon <input> (le chemin du fichier) dans la base de donnée et le fichier lui même dans un dossier sur le serveur. Car tout comme les différents éléments de la fiche produit, je souhaiterai que le chemin de l'extrait musical soit sauvegardé dans la base. J'ai commencer par créer le champ extrait dans la table ps_product_lang afin de pouvoir y ajouter le chemin du mp3, j'ai ensuite essayer de modifier le fichier AdminProducts.php pour y afficher le sélecteur de fichier. J'arrive à l'afficher mais aucun fichier n'est uploadé lors de l’exécution. Je ne vois pas où et comment le faire. Quelqu'un aurait-il une solution ? Je sais pas si j'ai été clair. Merci d'avance Link to comment Share on other sites More sharing options...
franckm1000 Posted August 1, 2012 Share Posted August 1, 2012 Ton raisonnement semble cohérent. L'ajout dans la base OK. Ensuite, l'affichage dans adminproducts ok. Il te reste à créer ta variable. Car l'enregistrement dans la bse ne se fera pas tout seul. Cela se passe dans la classe: classes/product.php. Il faut créer la variable: public $mavariable; Ensuite il faudra l'ajouter dans le tableau $fieldsValidate Enfin dans la fonction getFields() Bien sûr le nom de ta variable doit correspondre au name que tu auras donné dans ton input genre: <input type='text' name='mavariable' /> Link to comment Share on other sites More sharing options...
Cha63 Posted August 17, 2012 Author Share Posted August 17, 2012 Bonjour et merci pour votre réponse Pour ce qui est de mon problème, il n'est toujours pas résolu ! J'ai essayer la méthode que vous me donnez, elle fonctionne mais seulement pour un <inpu type="text"> or moi je voudrais récupérer la valeur d'un <input type="file">. Mon problème reste donc en suspend ! Link to comment Share on other sites More sharing options...
franckm1000 Posted August 17, 2012 Share Posted August 17, 2012 Un input type file, il faut faire une écriture dans un répertoire via une fonction move_uploaded_file par exemple. Le chemin du fichier peut se mettre sur la table comme je vous l'ai indiqué. Mais si vous avez des connaissances limitées en PHP et POO vous allez beaucoup trop galérer... Link to comment Share on other sites More sharing options...
Cha63 Posted August 17, 2012 Author Share Posted August 17, 2012 (edited) J'ai créer une fonction addAudioExtract en bas de la page AdminProduct.php private function addAudioExtract() { if(isset($_FILES['extrait'])) { $dossier = 'uploadAudio/'; $fichier = basename($_FILES['extrait']['name']); if(move_uploaded_file($_FILES['extrait']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Upload effectué avec succès !'; } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } } Je l'appelle dans mon input : <input size="55" type="file" name="extrait" style="width: 250px; margin-right: 44px;" '.($this->addAudioExtract()).' /> Il n'y a pas d'erreur lors de l’exécution sur le back office de prestashop, mais aucun fichier uploader non plus. Pensez-vous que ça puisse marcher comme ça ? Par contre pour ce qui est de l’écriture du chemin du fichier dans la base, je n'y arrive toujours pas. Aucune donnée n'est affiché dans la BDD après l'exécution du code. Mais lorsque je remplace le type de l'input par text et que je rentre une donnée textuelle dans le champ, celle-ci est sauvegardée. Edited August 17, 2012 by Cha63 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now