daftfunk Posted December 21, 2010 Share Posted December 21, 2010 Bonjour à tous,N'auriez vous pas une bonne adresse pour comprendre les méthodes php de traitements des données comme c'est utilisé sous Prestashop?Ou si une âme charitable pouvais me décortiquer ceci:> je veux ouvrir une base et en récuperer les informations.> si une variable $g existe (donne via un input quelconque) alors verifier si elle existe dans la base> si oui sauver une information en la sauvegardant dans un champ de la base> si non afficher un message d'erreurCa me semble si facile, je vois les "if" "else", mais je me sens tout bete car je n'arrive pas a comprendre la base.D'ailleurs c'est ca que je veux pour Noel !! comprendre Serais ce vous le Père Noël cette année? Link to comment Share on other sites More sharing options...
jeckyl Posted December 21, 2010 Share Posted December 21, 2010 Bonjour,Pour comprendre le code de Prestashop des notion en PHP5 et programmation orientée objet suffit. Link to comment Share on other sites More sharing options...
daftfunk Posted December 22, 2010 Author Share Posted December 22, 2010 Ok, néanmoins n'aurais tu pas une adresse éclairée ou ces notions sont abordées de façon pedagogique et complete?Ou bien le top du top: un exemple!! Merci pour ta patience Link to comment Share on other sites More sharing options...
jeckyl Posted December 22, 2010 Share Posted December 22, 2010 Si tu cherches sur Google et tu trouveras plein de site il existe aussi des centaines de livre abordant tout cela.Et pour le pédagogique il existe aussi l'éducation nationale.Apprendre le PHP et la POO c'est comme apprendre une nouvelle langue rien de moins donc cela ne se fera pas en un week-end ce vous prendra un peut plus de temps que cela si vous n'avez aucune notion de développement informatique. Link to comment Share on other sites More sharing options...
jplesire Posted December 22, 2010 Share Posted December 22, 2010 Bonjour daft,Pour commencer que voudrais tu comprendre en premier ?C'est vrai, c'est pas simple mais il est aussi vrai que c'est bien écrit.Dis moi ce que tu voudrais savoir, commençons par le début.Je suis vraiment prêt à t'aiderJP Link to comment Share on other sites More sharing options...
daftfunk Posted December 30, 2010 Author Share Posted December 30, 2010 Salut JP,Je te remercie pour ta proposition, c'est vraiment tres urbain de ta part. Alors pour cause de "Fetes" je n'ai pas ete tres assidu ces derniers jours, mais comme le suggerer Media 87 je me suis plongé dans la POO qui n'est pas facile a comprendre soit dit en passant.SI j'essaye de comprendre, c'est que je souhaiterai arriver a un résultat, en l'occurrence je voudrai faire un petit formulaire ou un code pourra etre saisie s'il correspond a celui existant dans la base ( la base groupe) l'utilisateur pourra s'inscrire en appartenant a ce groupe.Mon soucis c'est que je m'enmele les pinceaux entre les classes qui existe deja celles que je peux utiliser et celle que je doit creer sans parler des moyens d'acces aux bases.alors si on prend mon soucis a la base:j'ai crée sur la base de authentification.phpcode.phpcode.tpl Moncode.tpl <form action="{$base_dir_ssl}code.php" method="post"> {l s='Code'} <input type="text" name="groupe_code"/></span> <input type="submit" name="SubmitCode" class="button" value="{l s='ok'}" /></span> </form> code.php (quelque part dans authentification.php) if (Tools::isSubmit('SubmitCode')) // Methode pour soumettre les valeurs du formulaire { xxxxxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxxxxxx } Je n'arrive pas a obtenir de résultats probant dans le code que je mets dans xxxxxx :/ c'est a partir de la qu'il serait interressant de m'expliquer comment tu construits les requetes etc.. mais est il utile de crée une class spéciale alors que apparemment c'est un méthode déjà éprouvé avec l'authentification? Link to comment Share on other sites More sharing options...
daftfunk Posted December 30, 2010 Author Share Posted December 30, 2010 Première prise de conscience ... si rien ne fonctionne c'est que comme j'ai pas fait de class spécifique ... ma variable n'est pas définie? non? Link to comment Share on other sites More sharing options...
ciocciu Posted December 30, 2010 Share Posted December 30, 2010 salutperso j'ai commencé à me pencher sur le code de presta y'a environ 1 mois j'ai utilisé http://www.siteduzero.com/tutoriel-3-147182-introduction-a-la-poo.htmlqui est un excellent site du tuto pour plein de chosesalors ça m'a pas permis de tout comprendre en 2h mais il est vrai que ce tuto dégage quand mm bien les basesensuite c'est à grand coup d'essai que j'ai réussi à changer le code pour obtenir ce que je voulais exemple pour inserer ou modifier dans ta base c'est Db::getInstance()->Execute('ici ton update ou insert') où que tu soit dans le code...bonne chance lolo Link to comment Share on other sites More sharing options...
daftfunk Posted December 30, 2010 Author Share Posted December 30, 2010 Ecoute Merci, je vais de ce pas le lire. Mais je pense maintenant c'est d'avoir une bonne vision de comment est pensé prestashop parce que le tuto n'empreinte pas forcement la même sémantique ce qui perturbe un peu.au pire au debut je vous poserai mes bout de code pour validation ... mais c'est chaud quand meme.Tu t'y es mis quand au php poo pour arriver a faire ce que tu veux? Link to comment Share on other sites More sharing options...
Vincent Decaux Posted December 30, 2010 Share Posted December 30, 2010 Prestashop est facile à comprendre, après, il ne faut pas se faire d'illusions, il a été écrit par des passionnés qui développent depuis des années et des années.Il faut avoir une certaine expérience en PHP pour pouvoir le modifier facilement, la POO reste secondaire car une fois qu'on a compris le principe d'instanciation d'une classe et des appels à leurs méthodes, on a tout fait.Tout ce qui va t'intéresser se trouve dans le dossier /classes, et pour les requêtes, il faut voir MySQL.php et Db.php qui gèrent toutes les fonctions de requêtes.Un truc du genre va permettre de savoir si le code est existant : $is_ = Db::getInstance()->getValue('SELECT COUNT(*) FROM _PREFIX_.customer_group WHERE code = '.pSQL(Tools:getValue('code'))); Ensuite, on teste le groupe : if ($is_ > 0) { Après, on insère le customer dans le bon groupe : $row = array('id_customer' => $id_customer, 'id_group' => $id_group); Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); Enfin voila une idée générale parmi tant d'autres ... Ceci tout court ne marchera pas d'ailleurs, il faut récupérer l'id du groupe entre autres. Link to comment Share on other sites More sharing options...
ciocciu Posted December 31, 2010 Share Posted December 31, 2010 salutvincent a remarquablement bien expliqué .....la POO va te donner qq bases pour comprendre (les $this par exemple) mais le principal est de se familiariser avec les classes et les instanciations (c'est effectivement un peu une gymnastique d'esprit)perso j'ai commencé à vouloir crée un module pour affecter un transporteur à des tranches de quantité dans le panier ( et non pas de poids ou de prix) au mois d'octobre je viens de terminer mais j'ai modifié finalement beaucoup des fichiers coeurs de presta voilàbonne chance Link to comment Share on other sites More sharing options...
daftfunk Posted December 31, 2010 Author Share Posted December 31, 2010 Le tuto du site du zero est assez explicite! merci pour le tuyau. Mais il me reste encore pas mal de chemin avant de respirer le php5 Poo. En attendant j'ecris et teste pleins de truc tout en sachant que forcement je vais oublier des trucs ou ecrire des doublons car je ne saurais pas ou la fct se trouve!J'en connais un qui va pas s'emmerder en ce debut d'année... Bonne St Sylvestre a tous! Link to comment Share on other sites More sharing options...
Vincent Decaux Posted December 31, 2010 Share Posted December 31, 2010 Oui mais encore une fois, ne te fixe pas sur la POO !Même si Prestashop est propre, la POO est plus utilisée dans des Frameworks PHP poussés. Ici, comprends juste que tu as des classes, contenues dans le dossier classes ... (logique ! ^^) Et dans chaque classe, des fonctions associées.Pour appeler une fonction d'une classe, il faut utiliser : TaClasse::TaFonction(param)C'est tout ! Les classes de Prestashop sont vraiment complètes, voir un peu trop, du coup utilise juste les classes déjà écrites.Le mieux est de modifier les requêtes SQL faites dans les classes, ou de rajouter des fonctions en copiant / collant depuis une autre. Et comme dans mon post précédent, jette un énorme coup d'oeil aux classes MySQL.php et Db.php qui contiennent des fonctions intéressantes pour tes requêtes SQL. Link to comment Share on other sites More sharing options...
daftfunk Posted January 3, 2011 Author Share Posted January 3, 2011 Pour le moment j'arrive un résultat mais sans passer par les classes (j'ai encore du mal a utiliser les objets)m'enfin pour faire simplej'ai fait comme tu m'as dit Vincent a savoir ... if (Tools::isSubmit('SubmitCode')) //methode de validation du form { $code = trim(Tools::getValue('code'));//methode de recuperation du form if (empty($code)) { $errors[] = Tools::displayError('entrez un code'); } else { $result = Db::getInstance()->getValue(' SELECT COUNT(*) FROM `'._DB_PREFIX_.'group` WHERE `code_group` = \''.pSQL($code).'\''); //echo $result; if ($result > 0) { // Set la valeur de o $o = 1; $smarty->assign('o',$o); // Recuperation id du group $comit = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_.'group` WHERE `code_group` = \''.pSQL($code).'\''); // Je stocke le groupe $row = array('id' => intval(id), 'custgroup' => intval($comit['id_group'])); Db::getInstance()->AutoExecute(_DB_PREFIX_.'data', $row, 'INSERT'); // Recuperation du nom du group $comitname = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_.'group_lang` WHERE `id_group` = \''.pSQL($comit['id_group']).'\''); $comitname=$comitname['name']; echo $comitname; // Recuperation id du dernier customer dans la la table groupe $idfinal = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_.'customer_group` ORDER BY `id_customer` DESC'); $idfinal= intval($idfinal['id_customer']); // Update de la valeur id groupe au dernier inscrit return Db::getInstance()->ExecuteS(' UPDATE `'._DB_PREFIX_.'customer_group` SET `id_group` = `$lastcustom` WHERE `id_customer` = `$idfinal`'); } else { $errors[] = Tools::displayError('Mauvais code'); } } Bien entendu C'est tres laid... et ca marche pas. enfin jusqu'a l'update que j'arrive pas a faire fonctionner (mauvaise semantique je pense)Neanmoins ca colle avec ce que souhaite faire (surtout je le comprends) !! si quelqu'un pouvait me donner la semantique pour l'update voir le meme resultat en utilisant un objet (j'ai essayé mais trop de sources d'erreurs et pas de correction)Merci de votre patience (une fois de plus) et Bonne Année 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