Partage
  • Partager sur Facebook
  • Partager sur Twitter

besoin d'orientation pour creer un site web

notions pratiques pour realiser mon projet.

    26 juillet 2016 à 22:21:47

    bonjour tous le monde

    mon projet est de creer un site web qui a pour le but de gerer  des petites bibliotheques en ligne, j'explique un peux:

    soit n bibliotheques qui sont toutes relier a un seul compte principal qui les gère.

    chaque bibliotheque a son propre compte.(nécessite une authentification)

    une bibliotheque contient un tableau qui permet:

    d'ajouter des nouveau livres.(editer,supprimer...les operations basiques).

    faire des tries (selon l'auteur,titre,qtt....).

    et a chaque foi qu'une mise a jours est faite au niveau des bibliotheques elle sera indiquée dans le compte principal ou bien( la bibliotheque principale ) qui contient les détails de chaque une d'elle. (le nombre totale des livres, les infos entre date01 et date 02....).

    ma question est : je vous demande pas de me realiser mon projet, mais ce que j'ai besoin juste une bonne orientation. c-a-d un chemin de route pour le suivre sachant que je suis debutant en html,css et php (mon niveau a ce moment la, ne me permet pas de realiser un tel projet), j'essayé de chercher sur le net a gauche et a droite, mais a chaque fois je me trouve perdu....donc ce que je vous demande juste une orientation. par exemple qlq un me dis:

    juste un exemple!!:

    tu doit maitrisrer le flexbox css pour realiser ton projet en responsive. 

    tu doit maitriser la librairie bootstrap pour......

    tu doit maitrser les regexp en php et mysql pour faire des recherches dans ta base de donnees.

    ton projet nécessite la connassance des longuages suivants: html,css,php,mysql...etc.

     le php nécessite de connaitre : notion01 notion02....etc.

    pour le mysql :notionX,notionY...etc.

    j'espere que ma question est claire et qu'elle est dans le bon endoit. et merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2016 à 23:37:00

      Ce qui semble évident c'est la présence d'une base de données. Si tu comptes utiliser PHP le duo qui va bien c'est MySQL ^^. Qui dit base de données dit importance de bien réfléchir avant sur l'architecture de la base de données.

      Si j'ai bien compris comment la base de donnée pourrait s'organiser sur ton projet, tu vas avoir besoin :

      * d'une table recensant tous les livres (id (automatiquement donné par SQL), nom, auteur, catégorie, etc)

      * d'une table recensant tous les utilisateurs (id (automatiquement donné par SQL), pseudo, mot de passe (encrypté bien sûr, ne pas stocker de mots de passe en clair !), etc)

      * d'une table recensant toutes les bibliothèques (id, nom, utilisateur qui l'a créé)

      * d'une table "associative" recensant les liens entre bibliothèques et livres (id, livre, bibliothèque)

      Je vais éviter de plus détailler puisque tu as l'air de vouloir un truc assez vague.

      J'ai pas bien compris ce que tu voulais dire par date01 et date02, j'espère que toi tu vois maintenant comment gérer ça ^^.

      Comme dans tout service incluant des données rentrées par l'utilisateur, n'oublie pas "don't trust user input" : vérifie "toujours" (notamment quand il s'agira d'informations qui influenceront plus que l'utilisateur seul) les données qu'il te fournit (après si c'est juste un petit service pour t'entraîner à programmer et te donner un objectif, alors pas besoin ^^).

      Pour la recherche de livres, normalement MySQL te permet de base d'en faire des efficaces (après pour prendre en compte les recherches approximatifs du type fautes d'orthographe, titre incomplet, etc, je pense qu'il vaut mieux faire appel à une librairie spécialisée / API, mais je sais pas laquelle n'ayant pas fait de recherches sur le sujet).

      En PHP tu auras besoin a priori de connaître comment faire des requêtes sur une base de données (a priori via MySQL).

      Eventuellement un truc utile sera un peu de javascript, notamment les XHR (XML Http Request) pour lancer des recherches et autres accès à la base de données sans devoir recharger la page où l'utilisateur est.

      Voici mes conseils, je tiens à préciser que moi-même je suis amateur donc je ne prétend pas fournir une liste exhaustive, mais c'est comme ça que j'envisagerai ce projet ^^.

      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2016 à 1:49:21

        Bonjour! J'ai vu ton projet et ça à l'air pas mal tout ça!

        Attention Pavé!!!!:D

        Je suis actuellement en stage de dev web (PHP/ Html...) dans une entreprise et ça m'as permis de connaitre des techniques plus professionnelles donc je vais te donner des conseils de ce que j'ai appris. 

        Pour commencer d'un point de vue technique tu en es ou (en php, html et surtout sql) ?

        Pour rebondir sur ce qu'as dit mon vdd dans un premier temps il faut voir la basse de données. Ca va être ton corps principale qui va donner toute l'architecture de ton site. Et pour que la modélisation soit bien il faut se poser pas mal de questions, mais le découpage de Jadoremario me parait bien. Il faut tout de même se poser quelques questions, par exemple un utilisateur qui créée un compte, il s'inscrit pour une seule bibliothèques ou à partir de son compte il à accès à toutes.  

        Partie SQL:

        Comme je l'ai dit ca me semble bon, peut-être une colonne avec un lien vers la photo avec la couverture du livre, une colonne pour dire quel genre c'est avec un code (1 science fiction, 2 roman d'amour, 3 ...) ca peut être utile si un utilisateur veux faire des recherches par type.

        Mon tuteur de stage à l'habitude d'ajouter comme colonnes BE_ACTIVE et BE_DELETE.

        BE_ACTIVE peut être à 1 ou 0 et ca correspond à une sorte de disponibilité, par exemple 0 si le livre n'es pas empruntable. C'est pas vraiment une disponibilité dans le sens plus de stock mais plus à un droit d'emprunt (je pense par exemple aux journaux dans les bibliothèques qui ne sont pas empruntables pendant un mois). Donc j'ajouterais bien ca à la table associative Livre - Bibliothèque.

        BE_DELTE pareil du 1 ou 0, en gros au lieu de supprimer avec un delete une ligne tu fait un update en passant à BE_DELETE à 1. C'est une suppression 'virtuelle' car toi en base tu y a toujours accès la ligne est pas perdu (car il y a facilement des erreurs de manips, et même pour toi c'est plus simple de changer une valeur dans un tableau que de tout réécrire) et l'admin système peut facilement rectifier l'erreur.

        Et après dans tes SELECT tu ne prend que ceux qui sont actifs et non supprimés. donc du WHERE BE_ACTIVE = 1 AND BE_DELETE = 0;

        Sinon n'hésite pas à mettre pleins de collones pour des dates (genre date de création, date de dernière modification, date de dernière consultation, ca peut toujours être intéressant. 

        Pour la partie code en PHP:

        Dans mon stage in à un fichier ini.php qui contient toutes les déclarations coté serveur (les différents timeOut de session, les cookies, les identifiants de connexion à la base de données), et ce fichier appelle 2 fichiers genlib.php et datalib.php. Et il appelle ce fichier avec un include_once(). Cela dans le but d'éviter d'avoir des appelles à la base de données partout.

        Genlib:

        -Contient des fonctions génériques (par exemple une fonction pour vérifier si l'utilisateur est bien un admin) que tu appellera pour la partie admin. 

        Datalib:

        -Contient toutes les fonctions sql. Je te conseil de faire des fonctions 'génériques'. Par exemple une fonction :

        function dl_set_be_delete($id, $table){
        
        $sql = "UPDATE "$. table. "SET BE_DELETE = 0 WHERE id".$table . " = ". $id;
        
        }
        function select_table_list($table){
        	$requete = "Select * From ".$table."";
        	return select($requete);
        }
        
        function select_table_id($table, $id){
        	$requete = "Select * FROM ".$table." WHERE id= ".$id."";
        	return select($requete);
        }

        Et des fonctions spécifiques: 

        function dl_update_histoires_personnages($infos){
        	$requete = "UPDATE histoire_personnages SET
        	nom_personnage = '".$infos['name']."',
        	description = '".$infos['desc']."'
        	WHERE id = ".$infos['id'];
        
        	update($requete);
        }

        Qui appellent une function  update ou insert ou select: 

        function update($requete){
        	try{ $bdd = new PDO('mysql:host=localhost;dbname=ma base;charset=utf8', 'root', ''); }
        	catch(Exception $e){ die('Erreur : '.$e->getMessage()); }
        
        	$bdd->exec($requete);
        }
        

        Et si c'est un select tu change en return $bdd->query($requete);

        Mon tuteur à l'habitude de faire un switch case au début d'une page en fonction de ce que veux faire l'utilisateur, par exemple:

        $infos étant le variable $_REQUEST ($_GET et $_POST)


        switch ($infos['action']) {
        	case 'newLignePersonnage':
        		insert_table_histoires_personnages_id($infos);
        	break;
        	case 'modifierPersonnage':
        		update_table_histoires_personnages_id($infos);
        	break;
        
        	case 'newLigneChapitre':
        		insert_table_histoires_chapitre_id($infos);
        	break;
        	case 'modifierChapitre':
        		update_table_histoires_chapitre_id($infos);
        	break;
        
        	case 'supprimerPersonnage':
        		supprimer_table_id("histoire_personnages", $infos);
        	break;
        	case 'supprimerChapitre':
        		supprimer_table_id("histoire_chapitre", $infos);
        	break;
        
        
        
        	default: break;
        }
        ?>
        

         Et donc ça évite d'avoir une page pour supprimer, une page pour update, une page pour inserer...

        Convention de nommage:

        Pour faciliter la lecture du code appelle tes fonctions de genlib gl_xxx et de datalib dl_xxx.

        Pour les fonctions de datalib:  dl_[action]_[table], action : update/select/...

        Si tu sélectionne une seule ligne dl_[action]_[table]_id($infos,$id) , sinon  dl_[action]_[table]_list($infos).

         et quand tu appelle tes fonctions pareil : $dl_list_[table] = dl_xxx si c'est c'est sur plusieurs lignes. Sinon $dl_id_[table] si c'est une ligne unique.

        Javascript: Attention! 

        Regarde Ajax, ca permet de faciliter pas mal la vie et éviter de faire des pages et des pages.

        Oui le javascript c'est bien, je te conseil de te mettre dès maintenant au jquery, regarder à droite à gauche des plugins (je pense à tablesorter qui te permet de trier un tableau, qui peux t'être très utile dans ton cas!). Mais aussi à JAlert, qui peux afficher une formulaire par exemple pour rajouter une ligne et t'évite d'avoir à creer une page juste pour avoir un formulaire. Sinon regarde aussi autocomplete.

        Mais fait attention car c'est plus long à s'y mettre que au php (enfin ca a été mon cas). JQuery est accès sensible un ; transformé en , et bim ca marche pas sans savoir pourquoi et c'est long à déboguer, surtout avec des plugins.

        Si tu peux essaye d'en mettre dès le début c'est bien car ça simplifie la vie! 

        Style: 

        Dernier conseil: Si t'arrive à trouver un thème bootstrap déjà existant que tu trouve cool n'hésite pas, ça permet d'éviter de perdre du temps à faire du css dès le début, il y a déjà des truc de mis en place. Par exemple les dropdown, les effets sur des boutons ... Même si tu perds un peut de temps à se plonger dedans au début.

        http://www.w3schools.com/bootstrap/

        Voilà pas mal de conseil, je te laisse tout lire (plusieurs fois je pense). C'est pas vraiment des conseils propre à ton sujet, mais des conseils en général sur la manière de coder, et si un gars (peux être toi même) repasse derrière pour modifier un truc il va être content de voir que ca à été bien codé. Et pour toi c'est plus intéressant de bien savoir coder.

        • Partager sur Facebook
        • Partager sur Twitter
        Combien de développeurs faut-t-il pour remplacer une ampoule grillée ?Réponse : « Aucun, c'est un problème Hardware ».
        Anonyme
          27 juillet 2016 à 11:31:27

          @PaulHUBERT: Toutes vos fonctions de requêtes sont sensibles aux injections SQL.

          De plus, créer une nouvelle connexion à chaque appel de update() n'est pas du tout optimal !

          Est-ce vraiment un tuteur/formateur qui vous a dirigé la dessus ?

          • Partager sur Facebook
          • Partager sur Twitter
            27 juillet 2016 à 14:54:41

            Disons que je parlais plus de la manière de faire. Je me suis inspiré de sa structure de code, en l'adaptant à ce que j'avais d'existant.

            Sinon les fonction que j'ai là c'est des fonctions perso, sur mon site en local qui n'a aucun but à devenir un site en ligne, donc effectivement il n'y a pas de sécurité, je n'ai pas pris le temps d'ajouter des htmlspecialchars, des addslash et autre, mais je reconnais que c'est pas forcement bien. De même si tu regarde mon identifiant de connexion c'est root et il n'y a meme pas de mdp, car encore une fois c'est du local.

            Et si un jour je compte le mettre en ligne je modifierais/m'informerais pour éviter tout les problèmes ce qui est en lien avec la sécurité et l'optimisation.

            Sinon Pour ce qui est de la connexion c'est juste que je réalise mon site depuis un petit moment, et j'ai préfère passer par ce système sinon ca m'obligeait à réécrire une grosse partie de mon code, et donc modifier des dizaines de fichiers. Car effectivement mon tuteur à des fonction du type : dl_xxx ($db, $infos), avec $db, la connexion à la base de données.

            Je reconnais que c'est pas forcement top de montrer des exemples pas très sécure et propre, mais ce que je voulais montrer c'est plus un exemple de code, une structure. Et lui donner des pistes comme faire des fonctions de requêtes et non pas faire les requêtes SQL dans le fichier par exemple

            -
            Edité par PaulHUBERT 27 juillet 2016 à 14:55:23

            • Partager sur Facebook
            • Partager sur Twitter
            Combien de développeurs faut-t-il pour remplacer une ampoule grillée ?Réponse : « Aucun, c'est un problème Hardware ».
              27 juillet 2016 à 17:35:44

              Conseil, utilise un framework pour faire ton site, cela ne sert à rien de le refaire de 0.

              Je te conseil en PHP http://fuelphp.com/ 

              Si on me demanderais quel framework utiliser, j'utiliserais Ruby on Rails, avec ton site serais fait en 1 heure sans le design

              ^.^

              • Partager sur Facebook
              • Partager sur Twitter

              Architecte logiciel - Software craftsmanship convaincu.

              besoin d'orientation pour creer un site web

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown