Créer un site d'administration photo à l'aide de PHP et de jQuery

Je suis heureux de vous présenter la première partie d'une série en deux parties sur la création d'un site photo à l'aide de PHP, jQuery et AJAX. À l’origine, j’avais l’intention d’intégrer tout le didacticiel à un seul et même screencast, mais c’est vite devenu une chimère lorsque j’ai réalisé qu’il y avait tout simplement trop à couvrir. Néanmoins, même si vous ne regardez que cette première vidéo, vous devriez apprendre beaucoup.

Nous allons récupérer des images d'une base de données, en créant un simple formulaire de connexion avec authentification, ce qui permettra ensuite à notre base de données d'être mise à jour de manière asynchrone. Ça m'a l'air bien? Si oui, allons-y.


Notre objectif

Pour cette leçon, notre objectif est de créer une section d’administration de photos dans laquelle un administrateur peut récupérer des photos d’une base de données et mettre à jour le titre de ses photos en cliquant simplement sur le texte approprié. Pour rendre cette page plus sécurisée, nous allons également créer un système d'adhésion simple. Dans les tutoriels suivants, nous développerons ces concepts.

Créer nos tables avec MySQL

Ouvrez PHPMyAdmin et créez une base de données appelée "db". Dans cette base de données, nous devrons ajouter deux tables: "photos" et "utilisateurs"..

Photos

Plutôt que de coder en dur nos images dans notre document, nous les stockons dans une base de données. Bien que nous puissions rendre cette table aussi sophistiquée que nous le voudrions, nous la garderons simple pour l'instant.

  • id - INT - Clé primaire - Incrémentation automatique
  • titre - VARCHAR (500)
  • src - VARCHAR (200)

utilisateurs

Afin de modifier nos photos, nous devons créer un système d’abonnement simple qui permettra à notre utilisateur de se connecter et de modifier ses photos. Nous ne voulons évidemment pas donner à tout le monde ce droit!

  • id - INT - Clé primaire - Incrémentation automatique
  • prenom - VARCHAR (50)
  • nom_nom - VARCHAR (50)
  • email_address - VARCHAR (75)
  • nom_utilisateur - VARCHAR (25)
  • mot de passe - VARCHAR (30)

Créer la mise en page simple

Créez un nouveau document php et ajoutez ce qui suit dans votre document.

    Mon site de photos         

Mes photos cliquez sur le texte pour changer le titre.

Connectez - Out

Ne vous inquiétez pas trop de ce qui se trouve ici. Nous allons tout revoir dans le temps. Mais pour vous donner un aperçu rapide, nous importons notre bibliothèque jQuery, un plugin jQuery lightbox et nos scripts personnalisés (que nous créerons bientôt). Prenez quelques secondes pour examiner le fichier CSS. Je n'en parlerai pas trop dans cet article écrit, car il est déjà assez long! Reportez-vous à la capture vidéo pour plus d'informations. Mais, je vous assure que c'est assez simple et standard.

La principale chose sur laquelle vous devez vous concentrer maintenant est:

 

Ce sera la section où nous récupérons nos photos de la base de données. Travaillons là-dessus maintenant. Créer une nouvelle page

appelé "getPhotos.php".

Passons rapidement en revue ce que nous devons accomplir avec ce code.

  • Créer une connexion à la base de données
  • Récupérer toutes les lignes de la table photos
  • Si la connexion a réussi, créez une liste non ordonnée.
  • Filtrez les lignes et placez les informations nécessaires dans les balises d'éléments de liste.

Collez le code suivant dans votre document:

 query ($ query) ou die (mysqli_error ($ mysqli)); if ($ result) echo "
    \ n "; while ($ row = $ result-> fetch_object ()) $ title = $ row-> title; $ src = $ row-> src; $ id = $ row-> id; echo"
  • $ title \ n "; echo"

    $ title

    \ n "; echo"
  • \ n \ n "; echo" \ n
";?>

La première chose à faire est de créer une connexion à notre base de données. Cependant, nous le ferons plusieurs fois au cours de ce projet. Créons donc une autre page appelée "database.php" et stockons les informations là-bas. De cette façon, nous n’avons besoin que de modifier un fichier, le cas échéant. Ajoutez le code suivant dans votre fichier database.php.

 

Nous créons une variable appelée "$ mysqli" et la définissons dans une nouvelle instance de l'objet "MySQLi". Nous devons passer à quatre paramètres:

  • nom de la base de données
  • le serveur
  • Nom d'utilisateur
  • mot de passe

Pour garder les choses propres, nous allons placer ces valeurs dans des variables et les référencer. Si la connexion n'est pas établie, nous lui dirons de "mourir".

Interroger la base de données

Revenons maintenant à notre fichier "getPhotos.php". L'étape suivante consiste à interroger la base de données.

 $ query = "SELECT id, title, src FROM photos"; $ result = $ mysqli-> requête ($ requête) ou die (mysqli_error ($ mysqli));

Notre requête est extrêmement simple. Nous récupérons essentiellement tout de la base de données. Vous voudrez peut-être modifier ceci

requête pour s'adapter à votre propre application. Nous passons la requête en utilisant "$ mysqli-> query ($ query)".

Si cette requête a été effectuée avec succès, nous allons créer notre liste non ordonnée et ajouter nos images..

 écho "
    \ n "; while ($ row = $ result-> fetch_object ()) $ title = $ row-> title; $ src = $ row-> src; $ id = $ row-> id; echo"
  • $ title \ n "; echo"

    $ title

    \ n "; echo"
  • \ n \ n "; echo" \ n
";

Nous créons une variable appelée $ row qui sera égale à chaque instance d'une ligne dans la base de données. Tant qu'il y a des rangées

à récupérer, cette variable contiendra les informations de cette ligne spécifique.

Nous allons stocker toutes les informations dont nous avons besoin dans des variables. Par exemple, disons que dans une ligne, nous avons les données suivantes.

  • id = 4
  • src = 10.jpg
  • title = "Ma photo préférée"

En exécutant $ row-> title, nous pouvons récupérer cette valeur et la stocker dans notre variable $ title. Donc, dans ce cas, $ title = "Ma photo préférée"; $ src = "10.jpg"; $ id = 4;.

Tout ce que nous devons faire maintenant, c’est d’ajouter ces informations dans nos balises d’image et d’ancrage. La dernière ligne va ajouter un champ de saisie. Cela permettra éventuellement à l'utilisateur de mettre à jour le titre de l'image de manière asynchrone.

Si vous exécutez "index.php" dans votre navigateur, vous devriez voir ce qui suit:

AJAX Time

Maintenant que nous avons la disposition de base de notre site, ajaxifions le! Nous allons commencer par résumer ce que nous devons faire avec notre PHP. Je trouve que cela aide beaucoup quand on travaille.

  • Lorsque l'utilisateur clique sur le titre d'une image spécifique, nous afficherons un champ de saisie lui permettant de modifier le titre..
  • Lorsqu'il s'éloigne de ce champ de saisie, nous utilisons AJAX pour effectuer une instruction de mise à jour SQL..
  • Pour donner un retour à l'utilisateur, nous afficherons une division qui dit quelque chose comme "Succès. La base de données a été mise à jour".

Créez un fichier PHP appelé "changePhotoTitle.php" et collez-le dans le code suivant:

?

 query ($ update_query) ou die (mysqli_error ($ mysqli)); if ($ result) echo "Success! 
"; echo" Le titre de cette photo a été changé en: $ title";?>

Nous avons de nouveau besoin du fichier de base de données. (Ne sommes-nous pas heureux d'avoir stocké cela dans un fichier séparé?) Ensuite, nous créons deux

variables. $ title est égal à ce que l'utilisateur entre dans ce champ de saisie. $ id est égal à son champ id respectif dans

la base de données.

Pour éviter certaines injections SQL, nous allons envelopper ces valeurs de publication avec mysql_real_escape_string ().

Mise à jour de la base de données

La mise à jour est plutôt simple. Mettez à jour le tableau des photos et remplacez le champ de titre par ce que les utilisateurs entrent dans cette zone de texte. Mais ne modifiez que le champ de titre dont l'identifiant est égal à $ id. (Référez-vous au screencast pour une meilleure compréhension.)

Si la mise à jour a été effectuée avec succès, nous enverrons un message de félicitations..

Mettre en œuvre le Javascript

Pour effectuer la mise à jour sans publication, nous utiliserons jQuery. Créez un nouveau fichier Javascript appelé "scripts.js" et

coller dans le texte suivant:

 $ (function () $ ('h4'). click (function () $ (this) .slideUp (). next ('input'). slideDown ();); $ ('ul # photos input' ) .change (function () var id = $ (this) .parent ('li'). find ('img'). attr ('id'); var thisParam = $ (this); var title = $ ( this) .val (); $ .ajax (type: 'POST', url: 'changePhotoTitle.php', données: 'titre =' + titre + '& id =' + id, succès: fonction (réponse) $ ('input'). slideUp (); $ (thisParam) .prev ('h4'). text (title) .slideDown (); $ ('# réponse'). fadeIn (1000) .empty (). append ( réponse) .prepend ('X'); $ ('span # x'). click (function () $ ('div # réponse'). fadeOut ('slow');); ); ); );
  • Lorsque l'utilisateur clique sur le titre d'une image (la balise h4), nous exécutons une fonction. Nous allons masquer la balise h4 et ensuite afficher le champ de saisie.
  • Nous allons créer deux variables. "title" stockera la valeur de ce qui est entré dans la zone de texte. "id" va stocker son identifiant respectif.

AJAX

En utilisant "$ .ajax", nous appellerons la mise à jour. $ .ajax acceptera quatre paramètres.

  • Type = le type de mise à jour. Dans ce cas, ce sera 'Post'
  • Url = l'URL du fichier qui effectuera notre mise à jour. Nous avons déjà créé ce fichier.
  • Données = les informations que nous allons transmettre à changePhotoTitle.php. Dans ce cas, nous passons la valeur de la zone de texte et l'id.
  • Success = ce sera la fonction qui s'exécutera si la mise à jour a été effectuée avec succès. Dans cette fonction, nous allons supprimer la zone de texte car nous n'en avons plus besoin. Nous allons revenir en arrière et afficher la balise h4 qui a maintenant la valeur mise à jour.
    Pour fournir les commentaires des utilisateurs, prenons la division "response" que nous avons créée au début de ce didacticiel et complétons-la avec notre écho "Félicitations". Ces deux dernières lignes permettent simplement à l'utilisateur de supprimer le div "Félicitations". Si vous en avez besoin, référez-vous au screencast pour une explication complète..

Implémentation du formulaire de connexion

Évidemment, nous ne voulons pas que quiconque puisse éditer les titres de ces images. Nous allons donc créer un système d'adhésion simple.

Créez une nouvelle page appelée "login.php" et ajoutez le code suivant:

     Connectez-vous pour éditer des photos    

S'IDENTIFIER

Nom d'utilisateur:

Mot de passe:

Dans la balise body, nous avons un formulaire simple comportant deux champs: l’un pour le nom d’utilisateur, l’autre pour le mot de passe. Lorsque l'utilisateur clique sur le bouton "Connexion", les informations de ces zones de texte sont envoyées à "confirmLoginCredentials.php". Allez-y, créez cette page maintenant et ajoutez le texte suivant.

 query ($ q) ou die (mysqli_error ($ mysqli)); if (! mysqli_num_rows ($ result)) == 1) en-tête ("Emplacement: login.php");  else setcookie ('autorisé', 1, 0); en-tête ("Location: index.php"); ?>

Comme d'habitude, nous stockons les valeurs de ces zones de texte dans des variables appelées respectivement $ username et $ password. Nous récupérons encore une fois notre fichier database.php. Notre requête extrait la ligne de la base de données où le nom d'utilisateur et le mot de passe sont égaux à ce qui a été entré dans ces deux zones de texte. Une seule ligne doit être renvoyée. Si cela ne se produit pas, l'utilisateur sera redirigé vers "login.php". Sinon, nous les enverrons à la page principale "index.php" et créerons un cookie..

 setcookie («autorisé», 1, 0);

Le nom de notre cookie sera "autorisé"; la valeur sera égale à 1; et la date d'expiration sera 0. 0 signifie essentiellement que lorsque l'utilisateur ferme son navigateur, ce cookie expirera.

Lorsque l'utilisateur est dirigé vers la page index.php, nous devons écrire un petit morceau de code garantissant la présence du cookie requis sur son ordinateur. Retournez dans index.php et ajoutez le code suivant tout en haut de votre document.

 

Si l'utilisateur a un cookie nommé "autorisé" sur son ordinateur et que ce cookie a une valeur égale à 1, alors affichez la page. Mais si ce n'est pas le cas, renvoyez-les à login.php.

Déconnecter

La dernière étape de ce didacticiel consiste à permettre à l'utilisateur de se déconnecter. Trouvez la balise sur votre page index.php qui ressemble à ceci:

 Connectez - Out

J'ajoute une paire clé-valeur à cette URL. Cette valeur sera transmise à 'login.php'. Allez sur cette page et ajoutez votre dernier bit de code tout en haut..

 

Si, dans la chaîne de requête, la clé de «déconnexion» est égale à 1, définissez un cookie dont la date d'expiration est antérieure à une heure. Cela supprimera le cookie de l'ordinateur de l'utilisateur..

Enfin, vous avez terminé… pour l'instant!

Nous avons donc créé pas mal de choses. Malheureusement, faire tout ce que je voudrais prendrait des pages et des pages. Peut-être la semaine prochaine, la partie 2 sera publiée. Dans la partie 2, nous allons implémenter les éléments suivants:

  • Écrivez un code qui permet à l'administrateur de modifier les photos. S'ils ne sont pas connectés, ils peuvent voir les photos mais ne sont pas autorisés à les modifier..
  • Implémenter la fonctionnalité Lightbox
  • Créer des pages d'insertion et de suppression
  • Sécuriser le site plus
  • Ajouter plus de validation
  • Rendre le site plus joli
  • Et plein d'autres…

Merci beaucoup d'avoir regardé le screencast et révisé l'article. Il y a plus à venir!