1. Introduction

Les sneakers ont énormément évolué dans notre société et sont devenus un objet de mode. Depuis une vingtaine d’années, ces paires ne cessent de prendre de la valeur. Certaines personnes les achètent comme des pièces à collection, d’autres pour les porter ou en faire un business de revente. (voir référence 1). En considérant ces paires comme limitées, il est donc facile de comprendre que chaque paire est difficile à trouver. On a donc inventé quelques applications de revente de sneakers comme StockX (voir référence 2). Malheureusement, ces applications ne permettent pas de partager ces informations si le consommateur n’achète pas ou ne revend pas la paire à ces entreprises, il existe donc encore beaucoup de prix de chaussures à prendre en compte.

L’idée de mon projet est donc de créer un simple site où tout le monde pourrait mettre la valeur à laquelle il a vendu ou acheté une paire pour permettre à toute personne intéressée en Suisse d’avoir une meilleure estimation des prix de vente et d’achat d’une paire.

Mon projet va consister à créer un site capable d’estimer la valeur de paires des sneakers à différents moments. L’évolution de ces prix dépendrait d’acheteurs et vendeurs, qui devraient partager les prix auxquels ils auraient acheté ou vendu leur pair. En associant toutes ces données, il serait possible d’estimer la valeur actuelle de chaque paire mais aussi de voir comment le prix de celles-ci ont évolué dans le passé.

2. Matériel et méthodes

2.1 Matériel

Pour ce projet, il ne m'a pas fallu énormément de matériel. Étant un projet de software, je n'ai pas eu besoin de matériel physique. J'ai donc utiliser:

  • Une base de données PHPmyAdmin
  • Un serveur
  • Un ordinateur avec une connexion à Internet

2.2 Méthode

L'organisation de ce projet s'est faite en différentes étapes:

  1. La page générant les informations de chaque paire nommée paire.php.
  2. La page du moteur de recherche nommé recherche.php.
  3. La page d'entrée des données par les utilisateurs du site nommé prix.php.

Cette partie représentait l'ensemble de mon site pour pouvoir récupérer les informations à propos de chaque paire. Il fallait donc que j'ajoute un système de connexion pour connaître l'identité des personnes qui partageraient leurs informations. Mon projet a donc eu deux autres étapes:

  1. La page d'inscription nommée inscription.php.
  2. La page de connexion nommée connexion.php.

J'ai donc décidé de diviser la méthode par ces 5 différentes pages de mon site.

La page de génération des information de chaque paire: paire.php

Organisation de la page

La page de génération a pour but de nous informer à propos d'une paire qui a été recherchée sur le site. Celle-ci présente donc différents types d'information comme:

  • La photo de la sneakers
  • Le nom de la paire
  • La date de sortie
  • Le code de la paire, présente sur l'étiquette de chaque paire
  • Le prix moyen, le plus haut et le plus bas, ainsi que le dernier prix pour la vente et l'achat de cette paire

Screenshot 2022-05-08 162237.jpg, mai 2022

Figure 1: Page d'information de la paire, présentant ses caractéristiques et l'estimation de son prix de vente et d'achat.

Organisation de la base de données

Pour permettre la génération de cette page, j'ai décidé d'utiliser une page qui garderait la même structure, tout en utilisant une base de données, qui selon la recherche, pourrait alors exprimer les informations relatives à la paire recherchées.

Premièrement, j'ai donc créé un tableau dans ma base de donnée nommé "Sneakers" contenant les colonnes "name" pour le nom de la paire, "id" pour le code de la paire, "date" pour la date de sortie ainsi que "image" contenant l'url de la photo montrée sur le site. Ce premier tableau permet à la page de générer des informations qui ne changeront jamais pour la paire. C'est pour cela que j'ai décidé de le séparer de ma deuxième liste et troisième liste contenant les estimations des prix de vente et d'achat.

Sneakers.jpg, mai 2022

Figure 2: Liste "Sneakers" contenant les données de 5 paires de sneakers.

Ensuite, j'ai créé le deuxième tableau nommé "Liste" pour l'estimation du prix de vente qui contient les colonnes "id" pour le code de la paire, "date" pour le moment de l'enregistrement du prix et "sale" pour le montant de la vente. Le troisième tableau, étant similaire au deuxième pour les prix d'achat, présente aussi la colonne "id" pour le code de la paire, "date" pour le moment d'enregistrement mais "purchase" pour le prix d'achat.

Sale.jpg, mai 2022

Figure 3: Table des ventes exprimant le prix et la date d'enregistrement selon le code de la paire.

Purchase.jpg, mai 2022

Figure 4: Tableau des achats exprimant le prix et la date d'enregistrement selon le code de la paire.

Ces trois tableaux me permettent de créer une infinité de différentes pages pour chaque paire en faisant seulement changé les informations de la base de données dans les lacunes choisies. Contrairement aux données du premier tableau, le deuxième et troisième évoluent aussi selon les entrées de données faites par les visiteurs de ce site.

Connexion des informations avec la page

Premièrement, pour générer les informations relatives à chaque paire, j'ai du établir une connexion avec la table et décider où j'allais utiliser les informations et les exprimer sur la page. Voici comment j'ai fait:

   $db = mysqli_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASS, "paqc_loismartins");
   $results = mysqli_query($db, "SELECT * FROM Sneakers WHERE id='".$_REQUEST"pseudo"."'");
   $sneaker = mysqli_fetch_array($results);

J'ai donc donné les informations de la connexion à la base de données dans la variable $db, puis j'ai exécuté une requête des lignes dont "id" qui venait de la table "Sneakers" était le code d'identification sur la barre d'adresse. Finalement, avec $sneakers, je récupère la ligne précise et ses données.

J'ai ensuite exprimé ces valeurs:

   <div class="info">
   <p>
   <strong>Nom :</strong> <?php print $sneaker"name"; ?><br>
   <strong>Date de sortie :</strong> <?php print $sneaker"date"; ?> </br>
   <strong>Code de la paire :</strong> <?php print $sneaker"id"; ?></br>
   </p>
   </div>

J'ai du intégrer des lignes de PHP au milieu de mon code HTML, demandant d'imprimer des informations de la ligne relative à la variable $sneakers et appartenant à la colonne "name", "date" ou "id".

Concernant les informations apportées par les visiteurs, celles-ci dépendent d'une liste qui aura été modifiée sur la page prix.php. Un des points importants de ce projet est l’interprétation et l'utilisation des données partagées par les visiteurs. J'ai donc décidé de déduire 4 informations pour la vente et l'achat de ces bases de données:

  • Le prix moyen de la paire

Après avoir obtenu les informations de la base de données, j'ai obtenu la moyenne des prix en faisant ceci:

   $results4 = mysqli_query($db, "SELECT AVG(sale) \\
         AS average FROM Liste WHERE id='".$_REQUEST"pseudo"."'");
   $row = mysqli_fetch_assoc($results4);
   $average_sale = $row'average';

Ou:

   $results8 = mysqli_query($db, "SELECT AVG(purchase) \\
        AS average1 FROM Achat WHERE id='".$_REQUEST"pseudo"."'");
   $row = mysqli_fetch_assoc($results8);
   $average_purchase = $row'average1';

Ces deux exemples ont le même objectif, mais sont différents. Le premier est pour la vente, le deuxième pour l'achat. Avec la première ligne, j’exécute une requête des moyennes des éléments avec un même code d'identifiant recherché. La deuxième ligne récupère ces lignes sous forme de tableau associatif et $average_purchase ou $average_purchase contient le résultat de cette moyenne. Pour écrire cette partie, j'ai utilisé le code qui était proposé dans le site W3Schools (voir référence 4) et me suis permis de le modifier pour faire ce que je voulais obtenir.

Comme avant, j'intègre mes lignes de PHP:

   <li>Prix moyen de vente: <?php print $average_sale; ?>.-</li>
  • Le prix le plus haut

Celui-ci est obtenu en demandant la valeur la plus haute de toute la liste selon un code d'identification précis d'une paire:

   $results3 = mysqli_query($db, "SELECT * FROM Liste \\
        WHERE id='".$_REQUEST"pseudo"."' ORDER BY sale DESC LIMIT 1");
   $high_sale = mysqli_fetch_array($results3);

La première ligne me permet d'établir la requête de tous les éléments de la table Liste dont "id" est le code d'identification et dont l'ordre est décroissant. On a donc $high_sale qui récupère cette information et qui l'imprime comme ci-dessous:

   <li>Vente la plus chere: <?php print $high_sale'sale'; ?>.-</li>

Comme avant, ces commandes ont été reprises d'une discussion dans le forum Stack Overflow (voir référence 5) et je me suis permis de les modifier. Cette pages concernant les valeurs minimales et maximales, elle m'a aussi permis d'écrire mes commandes pour les valeurs minimales.

  • Le prix le plus bas

C'est la même chose qu'avant, mais dans ce cas, on remplace DES par ASC de manière à obtenir la valeur la plus basse.

   $results2 = mysqli_query($db, "SELECT * FROM Liste \\
        WHERE id='".$_REQUEST"pseudo"."' ORDER BY sale ASC LIMIT 1");
   $low_sale = mysqli_fetch_array($results2);

Et cela s'imprime comme ça:

   <li>Vente la moins chere: <?php print $low_sale'sale'; ?>.-</li>
  • Le dernier prix enregistré

Pour cela, j'utilise une variable très importante, celle qui m'informe du moment auquel a été enregistré la valeur. J'ai décidé de régler cette variable dans ma table de données "Liste" et "Purchase" de manière à obtenir une précision à la seconde. Il m'a donc fallu demander de récupérer de ma liste le dernier prix inscrit avec un code d'identification précis de la chaussure. J'ai donc classé mes requêtes par ordre de date d'enregistrement, le dernier sortant comme le premier de la liste. Ensuite, c'est à nouveau la même chose pour $last_sale, il récupère l'information sous forme de variable:

   $results1 = mysqli_query($db, "SELECT * FROM Liste \\
         WHERE id='".$_REQUEST"pseudo"."' ORDER BY date DESC LIMIT 1");
   $last_sale = mysqli_fetch_array($results1);

Ce qui l'imprime, comme les autres informations:

   <li>Derniere vente: <?php print $last_sale'sale'; ?>.-</li>

La page du moteur de recherche: recherche.php

Organisation de la page

Pour la page du moteur de recherche, j'ai essayé de créer une belle page car elle serait la page la plus importante de mon site, celle que les visiteurs devraient toujours voir en se connectant et celle nécessaire pour accéder à la page paire.php d'une paire spécifique. J'ai donc décidé d'y instaurer un logo créé par moi-même sur Canva, un site de création digitale, et d'y ajouter en-dessous un bloc de type formulaire afin de pouvoir entrer le code d'identification de la paire. Le visiteur n'a qu'à écrire le code d'identification de la paire dans la barre de recherche.

Screenshot 2022-05-08 163407.jpg, mai 2022

Figure 5: Barre de recherche des paires de sneakers.

Connexion des informations

Quand le visiteur entre le code de la paire, celui-ci va soumettre une requête en envoyant le code de la paire. J'ai décidé que le numéro de cette requête irait alors s'ajouter au lien de la page, ce qui va, par exemple, nous faire arriver à la page de la paire au code AQ4211-100 exprimée:

https://dev.gyre.ch/lois.martins/projet_p/paire.php?pseudo=AQ4211-100

On voit donc que selon la valeur du "pseudo", la page va générer une paire ou une autre. Mais ceci est seulement la conséquence de notre requête obtenue avec notre moteur de recherche. Il m'a donc fallu récupérer à nouveau l'information entrée depuis la page recherche.php dans paire.php. J'ai donc écrit ceci pour imprimer les informations de la paire:

   <?php
           if (isset($_POST"pseudo")) {
               $_REQUEST"pseudo"=$pseudo;
               }
       ?>

Dans cette première partie présente dans recherche.php, je demande seulement à l'ordinateur d'écrire "pseudo=(code de la paire)" sur la barre d'adresse.

   $db = mysqli_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASS, "paqc_loismartins");
   $results = mysqli_query($db, "SELECT * FROM Sneakers WHERE id='".$_REQUEST"pseudo"."'");
   $sneaker = mysqli_fetch_array($results);

Ensuite, quand le "pseudo" est indiqué, cette partie du code de paire.php exécute une requête à la base de données pour récupérer la variable de "pseudo" et de tirer toutes les informations dans la base de donnée à propos du code de la paire avec $sneaker.

   <div class="sale">
       <h2>Pour la vente:</h2>
       <ul>
           <li>Prix moyen de vente: <?php print $average_sale; ?>.-</li>
           <li>Derniere vente: <?php print $last_sale'sale'; ?>.-</li>
           <li>Vente la plus chere: <?php print $high_sale'sale'; ?>.-</li>
           <li>Vente la moins chere: <?php print $low_sale'sale'; ?>.-</li>
       </ul>
   </div>

Dans cette dernière partie, les informations récupérées par l'ordinateur sont alors exprimées aux endroits spécifiques selon le type d'information demandé. Ceci est aussi utile pour la récupération des informations pour les prix de vente et d'achat, mais sont reliés à d'autres tables de données.

Choix du code identification

Pour ma barre de recherche, j'ai aussi dû faire un choix sur l'information que je communiquerais à ma page et qui me permettrais de déduire la paire recherchée. J'avais deux choix possibles: le nom de la paire ou son code d'identification. Le problème était que le nom de la paire est parfois changé pour une paire ou il existe différents noms donnés à paire. J'ai donc décidé d'opter pour le code d'identification que ne changerait jamais. Il est vrai que celui-ci est moins facile à obtenir, mais on peut le trouver sur internet ou même sur la paire et la boite de la sneakers.

La page d'entrée des prix: prix.php

Organisation de la page

Pour cette page, la structure va être similaire à celle de l'inscription et la connexion. Celle-ci consiste simplement en un formulaire proposant trois espaces à remplir: le code de la paire, le prix de la vente de cette paire, le prix de l'achat de cette paire. Le visiteur doit alors remplir au minimum la barre de l'adresse e-mail afin de savoir de quelle personne on parle, puis a ensuite le choix de remplir la barre du prix de vente et/ou d'achat.

Screenshot 2022-05-08 162447.jpg, mai 2022

Figure 6: Formulaire d'enregistrement des prix de vente et d'achat des paires de sneakers.

Organisation de la base de donnée

Comme expliqué auparavant, j'ai décidé de créer deux tableaux "Liste" et "Purchase" afin de pouvoir enregistrer les prix de vente et d'achat séparément. J'ai donc décidé d'écrire mon code PHP en demandant que les informations entrées dans la barre de vente soient envoyées dans le tableau "Liste" et celles de la barre d'achat aillent dans l'autre tableau "Purchase". Après que les données soient envoyées, celles-ci sont ajoutées à leur liste et auront conséquemment un impact sur les prix partagés sur la page paire.php.

Connexion des données

Pour faire parvenir ces informations depuis le formulaire jusqu'à son tableau, j'ai décidé d'écrire ces lignes en php:

   <?php include("../../../etc/mysql.inc.php");
   if(isset($_REQUEST'id') and strlen($_REQUEST'id') \\
          and isset($_REQUEST'sale') and strlen($_REQUEST'sale')) {
       $db = mysqli_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASS, "paqc_loismartins");
       $connexion"id"= mysqli_real_escape_string($db, $_REQUEST"id");
       $connexion"sale"= mysqli_real_escape_string($db, $_REQUEST"sale");
       $connexion"purchase"= mysqli_real_escape_string($db, $_REQUEST"purchase");
       $results_sale = mysqli_query($db, "INSERT INTO `Liste` (`id`, `sale`) \\
             VALUES ('".$connexion"id"."','".$connexion"sale"."') ");
       mysqli_close($db);
   }
   if(isset($_REQUEST'id') and strlen($_REQUEST'id') \\
          and isset($_REQUEST'purchase') and strlen($_REQUEST'purchase')) {
       $db = mysqli_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASS, "paqc_loismartins");
       $connexion"id"= mysqli_real_escape_string($db, $_REQUEST"id");
       $connexion"purchase"= mysqli_real_escape_string($db, $_REQUEST"purchase");
       $results_sale = mysqli_query($db, "INSERT INTO `Achat` (`id`, `purchase`) \\
            VALUES ('".$connexion"id"."','".$connexion"purchase"."') ");
       mysqli_close($db);
   }
   ?>

A chacune de leurs lignes, j'établis une condition: la barre "id" et la barre "sale" ou "purchase" doivent être remplies. Selon la condition remplie, l'ordinateur exécute le premier ou le deuxième bloc. Premièrement, à la deuxième ligne, j'établis la connexion avec la base de données puis lui indique où ces informations devront être rangées. Ensuite, je relis les variables des différentes barres de recherches à celles de la base de données, ce qui indique quelle information va dans quelle colonne. Après, $results_sale va faire une requête pour insérer les informations récupérées dans le formulaire à l'intérieur de la base de données. Finalement, comme à chaque fois, je ferme la connexion avec mysqli_close($db);.

J'ai décidé de diviser ce code en deux conditions: celle du partage du prix de vente et celle du prix d'achat. Cela permet au site de savoir à quelle tableau il faudra une information. Si les trois cases sont remplies, chaque condition se réalise: premièrement, le prix de vente; deuxièmement, le prix d'achat.

La page d'inscription: inscription.php, et la page de connexion: connexion.php

Organisation de la page

Dans cette page, j'ai aussi décidé de créer un formulaire afin de récupérer l'adresse e-mail dans la première barre et le mot de passe inventé dans la deuxième barre. Pour s'inscrire, il faut appuyer sur le bouton "M'enregistrer", ce qui envoie les informations d’inscription dans la base de données. Pour la connexion, l'interface est la même, malgré l'utilité qui change. J'ai donc plus au moins repris la même structure.

Screenshot 2022-05-08 162618.jpg, mai 2022

Figure 7: Formulaire d'inscription.

Ensuite, pour le système de connexion, j'ai réussi à créer à nouveau l'interface ,mais je n'ai malheureusement pas réussi à créer un système en MySQL qui marche afin de sécuriser l'entrée sur le site. J'en parlerai un peu plus dans la partie 3.Résultats.

Organisation de la base de données

Comme le partage de données pour les ventes dans la page prix.php, les données sont envoyées dans la table "Connexion". La table reçoit les informations qui lui seront utiles pour la connexion des utilisateurs du site. La manière de récupérer les informations était similaires à celles des listes antérieures. J'ai séparé ma liste "Connexion" en 2 colonnes: "id" et "code".

Figure 8: Table "Connexion" contenant les identifiats et mots de passe des utilisateurs.

   <?php include("../../../etc/mysql.inc.php");
   if(isset($_REQUEST'email') and strlen($_REQUEST'email') and \\
          isset($_REQUEST'password') and strlen($_REQUEST'password')) {
       $db = mysqli_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASS, "paqc_loismartins");
       $connexion"email"= mysqli_real_escape_string($db, $_REQUEST'email');
       $connexion"password"= mysqli_real_escape_string($db, $_REQUEST'password');
       $results = mysqli_query($db, "INSERT INTO `Connexion` (`e-mail`, `password`) \\
                    VALUES ('".$connexion"email"."','".$connexion"password"."') ");
       mysqli_close($db);
       header('Location: connexion.php');
   }
   ?>

Ceci est la partie que j'ai utilisé pour insérer mes informations de la page d'inscription à ma base de données. Premièrement, avant toute requête, le formulaire doit être rempli avec une adresse e-mail et un mot de passe inventé. Puis, je relis les variables de ma page HTML à la base de données comme $connexion"email"= mysqli_real_escape_string($db, $_REQUEST'email');. Comme à chaque fois, j'ai établit une requête pour insérer ces informations dans mon tableau, puis je ferme la connexion. Finalement, pour faciliter la vie à l'utilisateur, je le redirige directement sur la page d'inscription.

Je n'ai malheureusement pas pu développer ma page de connexion comme je l'aurais souhaité et j'ai seulement pu en créer l'interface HTML. Comme dans la page d'inscription, l'utilisateur entre ses informations dans un formulaire qui était supposé être relié à la base de données "Connexion". Malgré cela, j'ai quand même essayé de m'inspirer de certains codes présents (voir référence 6).

Figure 9: Page de connexion à mon site.

La relation entre les pages

Organisation de la page

Connecter toutes les pages de manière efficace et simple dans mon site était aussi important pour permettre au visiteur de pouvoir se débrouille seul. J'ai donc décidé de garder la même structure dans toutes les pages de mon site. Et j'ai donc opté pour cette interface:

Screenshot 2022-05-08 162754.jpg, mai 2022

Figure 10: "Header" de mon site, avec son nom et des liens cliquables pour parcourir le site.

On peut donc voir les liens cliquables en blanc au dessous de "Swiss Sneakers Market", créé par le code source HTML:

   <div class="header">
            <h1>SWISS SNEAKERS MARKET</h1> <a class="link" href="connexion.php">Deconnexion</a> \\
            class="link" href="prix.php">Ventes et achats</a>
   </div>

Il suffit donc de cliquer sur ces liens afin de pouvoir se déplacer dans les différentes pages du site. Ayant eu des problèmes dans la page de connexion, j'ai pu créer l'interface mais n'ai pas pu créer le système de contrôle des données de connexion. Il n'est donc pas possible de passer des pages inscription.php et connexion.php aux autres pages telles que paire.php et prix.php.

3. Résultats

Parlons maintenant des résultats obtenus pour la création de ce site. Comme fait tout au long de ce billet, je vais diviser mon analyse selon les différents points importants de ce projet. Pour tester mon site, je me suis permis de faire plusieurs manipulation qu'un visiteur pourrait faire tout en regardant l'impact de ceux-ci sur les estimations.

Génération des résultats

Commençons par la génération des données sur paire.php... Tester cette partie n'étais pas trop difficile, soit elle marchait, soit les informations de la base de données n'avaient pas été partagées. Après quelques lignes de PHP, j'ai pu sortir ces informations qui sortaient correctement dans les bonnes lacunes de ma page et étaient les informations de la paire précise que j'avais recherché sur ma barre de recherche. Je suis donc très satisfait de ce résultat, car il m'a déjà permis de voir qu'une partie de mon code PHP et SQL fonctionnaient. Le potentiel de cette idée me semble avoir été exploitée à son maximum car il n'y avait pas d'information à analyser, il suffisait seulement de trouver la bonne ligne dans la table et de relier chaque information à la bonne lacune sur le site.

Déduction du prix moyen

Ensuite, les informations sur les prix des chaussures ont aussi été très concluants pour moi car les informations demandées étaient aussi correctes selon les informations que j'avais enregistrée dans la page prix.php. Cette partie était plus difficile que celle antérieure car les informations étaient constamment en train d'être modifiée par mes enregistrements test fait par moi-même. De plus, pour récupérer certaines informations, il n'était pas possible d'indiquer sa ligne dans la table mais il fallait instaurer une condition comme pour le prix le plus bas inscrit. Pour cette partie, j'étais très content car toutes les valeurs (moyennes, minimales, maximales et dernières) étaient correctes.

Enregistrement des données

Pour l'enregistrement des données, le résultat est à nouveau positif pour toutes les listes que j'ai utilisées. Comme vu et expliqué dans les deux paragraphes antérieurs, la performance de la barre de recherche et de l'enregistrement des données des prix de vente et d'achat est parfaite. Il reste encore l'enregistrement des données de la page inscription.php... J'ai donc aussi essayé le formulaire d'enregistrement et celui-ci enregistrait correctement les données partagées.

Connexion

La connexion était donc la dernière partie de ce projet que je devais préparer, le projet marchait à perfection et l'inscription permettait la récupération des données. Malheureusement, je n'ai pas réussi à créer les lignes de code pour permettre de récupérer les informations entrées dans connexion.php, les comparer avec la liste des informations des utilisateurs, puis donner ou refuser l'accès au site. Je n'ai pas réussi à faire cette dernière étape car j'aurais dû avoir plus de connaissances à propos du langage MySQL et je nécessitais aussi de plus de temps. On peut donc dire que cette partie n'a pas été atteinte car le site ne permet pas une connexion sécurisée, malgré la création de l'interface de cette page.

Général

Ce projet de printemps est donc pour moi, en grande partie, une réussite car l'essentiel de mon site qui consistait à créer un site estimant le prix de paires de sneakers semble fonctionner. La partie de la connexion, qui est un élément supplémentaire à ce projet, n'a malheureusement pas pu être accomplie. Malgré cela, l'utilisation du langage HTML et CSS dans ce projet me semble bien et mon site propose un interface agréable.

4. Discussion

Avis général du résultat

Personnellement, ce projet a été un grand plaisir car j'ai réussi la plupart des mes objectifs et ai obtenu un résultat qui tient la route. L'utilisation de différents langages m'a poussé à développer différents aspects du monde du développement web, mais m'a aussi permis d'apprendre beaucoup plus de choses sur ces langages que sont HTML, CSS, PHP et MySQL. Ce site m'a permis de mieux comprendre le fonctionnement des bases de données ainsi que de la manière de faciliter la génération de plusieurs page. De plus, j'ai pu comprendre le principe des données et savoir comment les utiliser. Tout ces éléments étaient des connaissances que j'étais venu chercher en participant à l'OC Informatique et que j'étais content de pouvoir apprendre et comprendre. Ce site aura toujours des problèmes que l'on pourra localiser et nécessitera toujours d'améliorations, ce qui rend ce projet encore plus intéressant et qui me donne envie de continuer à comprendre les erreurs que j'ai faites et les connaissances qu'il m'a manqué dans ce projet.

Raisons des problèmes

Je n'ai pas rencontré énormément de problèmes dans mon projet à l'exception de la page de connexion au site. Initialement, comme la plupart des parties de mon projet, je n'avais pas la connaissance pour parvenir au résultat espéré mais avait une idée de comment mettre en place chaque partie. Par exemple, pour l'interprétation des données et le choix des informations que je voulais récupérer, je ne savais pas comment le faire, mais de longues recherches sur Internet m'ont permis de trouver des tutoriels m'expliquant comment retirer ces informations de manière assez simple. Pour le cas de la connexion, j'ai aussi fait beaucoup de recherche mais celles-ci n'ont abouti à rien, non pas car je n'avais rien trouvé, mais parce que mes diverses tentatives ont été sans succès. J'ai donc décidé de garder les essais que j'avais fait en commentaire sur les documents .php malgré le résultat. Le problème que j'ai rencontré plusieurs fois était que, selon le modèle dont je prenais note, les variables n'étaient pas définies ou certaines commandes étaient considérées comme "bloquant" les lignes de code, il ne pouvait donc pas être exécuté. Malgré certains essais de modification, ce cas ne s'est jamais amélioré et je n'ai jamais pu faire fonctionner cette page de connexion. J'ai aussi rencontré d'autres petits problèmes que j'aurais probablement pu résoudre avec une semaine supplémentaire. Par exemple, la moyenne des prix s'exprime au millième de franc suisse, ce qui n'est d'aucune utilité car cette monnaie se compte maximum au centième. Bien que j'aie rencontré ces problèmes, je pense que ceux-ci peuvent aussi présenter des solutions ou améliorations à ce site, les voici donc...

Améliorations possibles

Il existe plusieurs manières d'améliorer ce site, mais je pense que la principale solution afin d'atteindre les objectifs de ce projet est le temps et sa gestion. Avec l'arrivée de la fin de l'année et des examens, le temps à ma disponibilité est devenu plus restreint, ce qui m'a conséquemment donné moins de temps à investir sur ce projet. Malgré cela, le résultat de mon projet me satisfait, celui-ci est utile. Toute modification supplémentaire sur celui-ci ne peut être que bénéficiaire, mais nécessite aussi plus de temps. Considérons que j’aie plus de temps pour ce projet, j'aurais essayé d'approfondir mes recherches à propos de la création d'un login avec un système de connexion. Cette partie nécessitait surtout d'un grand investissement de temps que j'ai préféré investir dans les autres parties du projet. De plus, pour améliorer la précision des valeurs des moyennes de prix, j'aurais dû aller me renseigner plus dans la documentation MySQL, afin de trouver les commandes pour le changement de précision d'une variable. Ensuite, malgré le fonctionnement de mes formulaires, je pensais qu'il aurait fallu que je cherche à mettre plus de condition dans mon code PHP afin d'éviter par exemple qu'une valeur numérique soit entrée dans un champ attendant une adresse e-mail.

5. Conclusion

Pour conclure, je suis très content de mon projet de printemps. Celui-ci m'a permis d'apprendre énormément de choses dans le monde du développement web, un secteur de l'informatique qui m'intéresse beaucoup. J'ai donc eu l'opportunité d’agrandir mes connaissances. Ensuite, contrairement à mon projet d'hiver qui n'avait pas vraiment atteint les objectifs que je m'étais donnés, ce projet semble avoir atteint mes objectifs à l'exception de la connexion, qui pour moi, était un élément important mais aussi plus optionnel regardant le principe de mon site qui visait à estimer le prix moyen d'une paire de sneakers à l'aide de partages de prix de vente et d'achat des utilisateurs. Je garde aussi une très bonne image de ce projet car celui-ci m'a donné beaucoup d'idées d'améliorations, mais aussi d'autres idées de développement web. Les connaissances gagnées me permettent maintenant de mieux m'imaginer la manière d'organiser un projet et de le développer, ce qui m'a encore plus donner envie de continuer d'apprendre et de me renseigner sur les langages de développement de pages web. Je pense que j'aurais continué à développer ce projet si j'en avais eu le temps et je pense peut-être refaire un projet à propos d'un site pendant mon temps libre.

Si je développais ce site, je pense qu'il pourrait être utile dans le monde du resell de la sneakers en Suisse car il n'existe pas d'applications ou sites estimant le prix des paires au fil du temps. Cela permettrait alors au vendeur comme à l’acheteur de voir si le prix de la paire est raisonnable, complètement en-dessous de la moyenne ou au-dessus de la moyenne. Ce projet pourrait donc peut-être permettre d'analyser les données de l'évolution des prix d'une paire pour pouvoir estimer s'il est conseillé de revendre ou d'acheter une paire, ce qui pourrait aussi être une suite à mon projet de printemps.

J'ai donc pris énormément de plaisir à créer ce site. Ce projet m'a donc donné encore plus de moyens pour créer des sites et de l'envie de développer mes idées dans le monde digital.

Références

1. Article sur la popularité de la sneakers:
https://www.e-marketing.fr/Thematique/insights-1092/Breves/Sneakers-Quand-marques-surfent-business-edition-limitee-359519.htm

2. Site de StockX:
https://stockx.com/

3. Livre sur HTML et CSS:
Réalisez votre site web avec HTML 5 et CSS 3, Eyrolles, Mathieu Nebra, 2017

4. Lien pour la création d'une moyenne ne PHP: https://www.w3schools.com/mysql/func_mysql_avg.asp

5. Lien pour la récupération de la valeur la plus basse et la plus haute en PHP: https://stackoverflow.com/questions/33708444/php-get-the-highest-and-lowest-value-in-a-mysql-column

6. Lien pour la création d'une connexion à un login: http://www.codeurjava.com/2016/12/formulaire-de-login-avec-html-css-php-et-mysql.html