IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Charger le contenu de mes pages [UI Mobile]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Par défaut Charger le contenu de mes pages
    Bonjour à tous,

    Je suis chargé du développement d'une application sous JQueryMobile.

    Actuellement, je dispose d'une connexion (page1) qui amène à une page 2 disposant d'un menu.
    Par exemple, pour accéder à la page 3 je clique sur le bouton du menu correspondant et je voudrais qu'apparaissent la liste des utilisateurs : nom, prénom, etc.

    Le problème est que je dispose d'un seul fichier html avec toutes les pages et je souhaiterais que leur contenu provienne d'une base de données.
    Comment puis-je faire pour charger les données vers la page concernée ?

    Ajax, PHP, javascript, oui mais comment faire le lien ?

    Merci d'avance.

    Ambre.

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Bonsoir,

    le schéma « classique » (sans Ajax) c'est un serveur PHP qui contrôle la communication avec le serveur SQL et qui envoie les données au client après les avoir mises en forme en HTML.

    Avec Ajax ce n'est pas tellement différent car la requête est toujours adressée au serveur PHP et la récupération des données se fait de la même façon. Par contre, le serveur n'est plus obligé d'envoyer une page HTML entière ; il peut envoyer des fragments de HTML, ou même des données sous un autre format (JSON, XML, texte brut, etc.) que le JavaScript se charge d'injecter dans la page.

    Le lien c'est ton serveur PHP qui le fait. Tu as moyen de reconnaître « qui » t'envoie une requête, c'est-à-dire si la requête est initée par Ajax ou si c'est une requête classique (clic sur un lien ou soumission d'un formulaire). jQuery ajoute automatiquement un en-tête HTTP à toutes ses requêtes Ajax, il s'agit de l'en-tête
    Code HTTP : Sélectionner tout - Visualiser dans une fenêtre à part
    X-Requested-With: XMLHttpRequest
    En consultant la valeur $_SERVER['HTTP_X_REQUESTED_WITH'] tu peux donc décider de différencier ta réponse pour une requête Ajax ou pour une requête classique. Ceci lorsque ton application prévoit que les requêtes Ajax et classiques peuvent être adressées aux mêmes scripts PHP.

    Tu peux aussi faire le choix de séparer totalement les aspects classique et Ajax sur ton serveur, en faisant des scripts PHP répondant uniquement à Ajax et d'autres uniquement aux requêtes classiques. Ou encore de supprimer totalement l'aspect classique de ton application (à part la première page), et ainsi faire une « single-page app », mais je ne le recommande pas, car tu rendrais ton site inaccessible aux utilisateurs qui désactivent ou qui n'ont pas JavaScript.

    Quoiqu'il en soit, fais les choses dans l'ordre. Ta première étape est de configurer un serveur SQL et de réussir à y adresser des requêtes SQL depuis tes scripts PHP.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Par défaut
    Bonjour,

    J'ai déjà une base de données sous phpMyAdmin et je dispose actuellement de 3 fichiers (index.html + connexion.php + page2.php)

    connexion.php
    index.html
    Page2.php

    index.html qui contient toutes mes pages et les 2 fichiers php pour faire appel à ma base de données.
    Mais je me demande comment faire pour charger des données sur une page (la 3 par exemple) quand je souhaite aller la visiter.

    Ambre.

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Je vois que tu as déjà choisi ton modèle. En fait tu as réalisé une single-page app.

    Tu utilises déjà un évènement pageinit pour la transition à la page 2. C'est exactement la même chose pour les autres pages, je ne vois pas ce qui peut te poser problème.

    Cela dit, fais attention à la sécurité de ton application. Actuellement, ton serveur ne conserve aucune session et je peux accéder à des données de ta base aussi simplement qu'en tapant manuellement l'adresse page2.php?id=1234 dans mon navigateur. Il faudra ajouter, au minimum, un identifiant transmis par session qui vérifie dans page2.php que l'utilisateur est authentifié avant de renvoyer des données.

    Attention aussi à la fonction md5 : c'est une fausse sécurité, vois ici pour plus d'infos.

    Enfin, veille à bien tirer parti des avantages de PDO. Par exemple cette requête n'est pas sécurisée :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM utilisateur WHERE NumUser='$id'";
    Utilise PDO::quote, ou mieux, PDO::prepare.
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $statement = $pdo->prepare('SELECT * FROM utilisateur WHERE NumUser=:id');
    $result = $statement->execute([ ':id' => $id ]);
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Par défaut
    Bonjour,

    Je vais apporter les modifications pour ma requête, merci !

    Ensuite pour la gestion de mes pages :
    Tu utilises déjà un évènement pageinit pour la transition à la page 2. C'est exactement la même chose pour les autres pages, je ne vois pas ce qui peut te poser problème.
    Et bien, lorsque je veux traiter la gestion de mon menu dans mon code javascript $(document).ready(function() { ... }); le code que je met dans mon $(document).delegate("#page3", "pageinit", function() { ... } ne se fait pas... La transition de page a bien lieu mais 0 données s'affiche, juste l'alerte "Je suis sur la page 3" apparaît...

    Nouveau fichier : index.html

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Il y a un truc que je n'avais pas vu, c'est assez sournois, tu vas voir. Ce que tu appelles des « pages » dans ton application sont en réalité de simples <div>. La page c'est index.html. Le problème commence là car, comme tu le sais, un id doit être unique dans une page. Or, dans ta page index.html, tu as pas moins de 4 éléments <h1 id="data_SS"> et 4 éléments <p id="text"> !

    Quand tu sélectionnes $("#text") tu sélectionnes en fait le premier <p id="text"> qui est celui de la page 1, même lorsque la page 1 est masquée.

    Tu dois différencier ces id. Je te propose deux façons de faire :
    – soit tu les remplaces par des classes (<h1 class="data_SS">) et tu les sélectionnes comme ceci : $("#page1 .data_SS"), etc.
    – soit tu donnes un id différent à chaque élément : <h1 id="data_SS_1">, <h1 id="data_SS_2">, etc.


    PS : Ma remarque sur la sécurité tient toujours : je peux accéder aux données de n'importe quel utilisateur simplement au moyen de la barre d'adresse de mon navigateur. Tu dois utiliser une session côté serveur (pas sessionStorage) pour t'assurer que l'utilisateur qui fait une requête, disons, sur la page 3, est obligatoirement passé d'abord par la page 1 pour s'authentifier.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/08/2012, 00h23
  2. charger un contenu dans une page html avec javascript
    Par alvine18 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/06/2012, 12h12
  3. charger le contenu d'une page html
    Par walidos21 dans le forum jQuery
    Réponses: 5
    Dernier message: 04/06/2010, 11h24
  4. Comment forcer safari de charger le contenu de mes fichiers CSS
    Par hastiok dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 20/12/2009, 23h58
  5. [Tableaux] Charger le contenu d'une page dans une variable
    Par wishmastah dans le forum Langage
    Réponses: 7
    Dernier message: 15/05/2006, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo