RckadM Posted June 23, 2008 Share Posted June 23, 2008 Bonjour,Je souhaiterai pouvoir ajouter des produits de maniéres dynamique. Exemple : mon client remplit un formulaire pour faire un devis, une fois le devis généré ce même client pourrait ajouter le devis qu'il vient de réaliser dans son panier ( en backoffice le devis généré se transformerai en article).Est-ce possible ? Comment vous y prendriez vous ?Merci pour vos réponses Link to comment Share on other sites More sharing options...
RckadM Posted June 23, 2008 Author Share Posted June 23, 2008 Bon, finalement j'ai trouvé...Je poste surtout pour les débutants (comme moi), alors au cas où certains souhaiterait faire de même voici comment j'ai procédé :- Ajout d'un formulaire dans la page categories.php.- Ajout d'une requete sql vers la bdd prestashop (double requete en réalité puisqu'il y a ps_product et ps_product_lang à renseigner) avec les valeurs de mon formulaire.- Ajout d'un bouton "add to cart" avec l'Id du nouveau produit récupéré sur la bdd.++ Link to comment Share on other sites More sharing options...
Julien Breux Posted June 23, 2008 Share Posted June 23, 2008 Très bonne idée, pouvez-vous mettre à disposition votre/vos fichier/s ? Pour la communauté, merci par avance Link to comment Share on other sites More sharing options...
RckadM Posted June 23, 2008 Author Share Posted June 23, 2008 Oui pourquoi pas, mon php est tellement mauvais que j'ai un peu honte de poster mais bon...La structure est la suivante : - Ajout d'un formulaire (ici un formulaire de devis pour l'impression d'un livre)- calcul du devis- Transformation du devis en produit et insertion du produit dans la bdd (une seule est même commande)- Lorsque le client clique sur "ajouter au panier" le devis est alors créditer dans le panierA noter que je ne souhaitais pas afficher ce produit dans mon catalogue j'ai donc mis aucune liaison.Voici le code à inclure à la fin du fichier : category.php (fichier complet en pièce jointe)CODE :echo '<form name="form1" method="post" action=""> Format : - - - - - - - - - - - - - - - - - - - -A4 (21x29.7cm)A5 (14.8x21cm)Livre de poche (11x18cm)Autre (16x24cm) Grammage : - - - - - - - - - - - - - - - - - - - -80g90g120g Reliure : - - - - - - - - - - - - - - - - - - - -Dos carré colléWire-0 Couverture : - - - - - - - - - - - - - - - - - - - -Pelliculage MatPelliculage BrillantSans pelliculage Nombre de pages : <input name="nbepage" type="text" id="nbepage" value="" size="30"> Nombre de pages en couleur : <input name="nbepagecouleur" type="text" id="nbepagecouleur" value="" size="30"> Couleur de la typo intérieur : - - - - - - - - - - - - - - - - - - - -NoirCouleurCouleur + noir Nombre d exemplaires : <input name="nbeexemplaire" type="text" id="nbeexemplaire" value="" size="30"> <input type="submit" name="Submit" value="Calculer le devis"></form>';?><?php if(isset($_POST['Submit'])){ $nombre1=0; $nombre2=0; $nombre3=0; $nombre4=0; $nombre5=0; $nombre6=0; $nombre7=0; $nombre8=5; $total=0; $format=$_POST['format']; $format1=$_POST['format1']; $reliure=$_POST['reliure']; $couverture=$_POST['couverture']; $nbepage=$_POST['nbepage']; $nbepagecouleur=$_POST['nbepagecouleur']; $typo=$_POST['typo']; $nbeexemplaire=$_POST['nbeexemplaire']; switch($format){case 1:$nombre1=0.024;break;case 2:$nombre1=0.012;break;case 3:$nombre1=0.012;break;case 4:$nombre1=0.018;break;} switch($format1){case 1:$nombre2=0.024;break;case 2:$nombre2=0.012;break;case 3:$nombre2=0.012;break;case 4:$nombre2=0.018;break;} switch($reliure){case 1:$nombre3=1;break;case 2:$nombre3=0.5;break;} switch($couverture){case 1:$nombre4=1;break;case 2:$nombre4=1;break;case 3:$nombre4=0.5;break;} $nombre5=$nbepage*($nombre1+$nombre2); $nombre7=$nbeexemplaire; if($nbepagecouleur==0){$nombre6=0;}{$nombre6=$nbepagecouleur*0.60;} $total=($nombre3+$nombre5+$nombre4+$nombre6)*$nombre7;mysql_connect("localhost", "root", "");mysql_select_db("prestashop");mysql_query("INSERT INTO ps_product VALUES('','0', '0', '2', '0', '0', '0', '1','$total','0','','0','0','1','0','2','0','1','0')") or die('Erreur SQL !'.$sql.''.mysql_error()); $reponse = mysql_query("SELECT * FROM ps_product WHERE price='$total'");$donnees = mysql_fetch_array($reponse);$iddevis=$donnees['id_product'];mysql_query("INSERT INTO ps_product_lang VALUES('$iddevis','2', '0', '0', '0', '0', '0', '0','livres','0')") or die('Erreur SQL !'.$sql.''.mysql_error()); echo 'Prix du devis : '.$total.' euros TTC ';echo ' Ajouter au panier '; include(dirname(__FILE__).'/footer.php'); mysql_close();}?><?php include(dirname(__FILE__).'/footer.php'); ?> ---> trés importante cette derniere ligne qui permet de conserver la colonne de droite aprés soumission du formulaire.Il n'y a pas d'annotation dans le code, si quelqu'un ne comprend pas une ligne je reste à disposition. Link to comment Share on other sites More sharing options...
RckadM Posted June 23, 2008 Author Share Posted June 23, 2008 Attention, le Post de la source converti les "" en lien direct... Je n'ai pas réussi à upload le fichier. Link to comment Share on other sites More sharing options...
Julien Breux Posted June 24, 2008 Share Posted June 24, 2008 Je vais bientôt éditer un tutoriel sur l'utilisation des différents outils de Prestashop. Car...Pour récupérer les variables globales $_GET ou $_POST, vous pouvez utiliser la méthode statique "getValue" de la classe "Tools".Par exemple: echo Tools::getValue('format'); // Renverra "(string) $_POST['format']" ou "(string) $_GET['format'] ou "(bool) false". echo Tools::getValue('format', 'Autre (16x24cm)'); // Renverra "(string) $_POST['format']" ou "(string) $_GET['format'] ou "(string) Autre (16x24cm)". Pour vérifier qu'une variable a bien été envoyée, vous pouvez utiliser la méthode statique "isSubmit" de la classe "Tools" qui renverra "(bool) true" ou "(bool) false".Par exemple: var_dump(Tools::isSubmit('Submit')); // Renverra "(bool) true" ou "(bool) false" si "$_POST['Submit']" est envoyé. Link to comment Share on other sites More sharing options...
shagshag Posted June 24, 2008 Share Posted June 24, 2008 Oui en plus prestashop propose plein d'outil pour remplir la base de donnée sans se salir les mains.En plus ils évitent beaucoup de risque de sécurité.Une question : avec ce système, il n'y a pas un risque de voir sa boutique se remplir de plein de produit (ici devis) fantome ? Link to comment Share on other sites More sharing options...
Julien Breux Posted June 24, 2008 Share Posted June 24, 2008 Et bien moi, je ne conseil pas ce principe :sJ'ai fait la demande du code à RckadM dans l'unique but que la communauté en profite.Selon moi, un devis et un devis et une facture est une facture, c'est toujours plus clair comme ça pour le client final. Link to comment Share on other sites More sharing options...
RckadM Posted June 24, 2008 Author Share Posted June 24, 2008 Et bien oui il s'agit bien de produits fantomes. Néanmois, comme je le disais sur le second post, vous pouvez tout à fait générer un produit avec insertion automatique dans une catégorie de votre choix. Cette méthode doit-être améliorée certes, mais dans le même elle permets d'intégrer le panier PrestaShop et sa structure de paiement dans n'importe quel type de site.Le code plus haut est evidemment incomplet, il faut rajouter des routines de sécuritées, améliorer le code en insérant du AJax par exemple. 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