Jump to content

Ajout d'un bouton parcourir sur le BO de la fiche client


Cha63

Recommended Posts

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

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

  • 3 weeks later...

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

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

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 by Cha63 (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...