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

Langage PHP Discussion :

Ajout d'infos dans une liste et rafraîchissement


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut Ajout d'infos dans une liste et rafraîchissement
    J’ai une
    - ‘Interface 1’ avec un tableau contenant plusieurs lignes
    - un bouton ‘Ajout’ qui va permettre d’ajouter une ligne dans ce tableau

    Lorsque je clique sur Ajout, ‘Interface 2’ s’ouvre (un popup…). On sélectionne les éléments servant à ajouter cette ligne dans mon tableau précédent.
    Un bouton valider va :
    - valider les infos en javascript
    - valider les infos en PHP et enregistrer le tout en base

    jusqu’ici je sais faire.

    et ensuite…

    … doit fermer mon ‘Interface2’ et rafraîchir mon ‘Interface 1’

    C’est pour cette dernière partie que je coince, comment que je vais faire cela.

    Après enregistrement en base depuis PHP, je vais devoir appeler un script javascript pour fermer ma fenêtre ‘Interface2’ (comment ?) et rafraîchir ma fenêtre ‘Interface 1’ (ajax ?)

    Je sais pas si j’ai été clair. Quelqu’un à des pistes pour m’aiguiller ?

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Il est évident que tu bare la route a tout tes visiteurs qui refusent javascript,
    serait' il impossible de changer de politique et de te structurer sur deux pages
    au lieu d'une page et une popup ?

    Tu aurais alors cette structure

    1) Page tableau.php
    page principale du tableau affiché ,mais cette page a en PHP, avant de s'
    afficher, un contrôle des _POST present Oui / Non
    si Oui enregistrement de la nouvelle ligne dans MYSQL
    puis comme avant on passe a
    si Non
    lecture MYSQL et génération du tableau comme avant
    2) Page lignesup.php
    saisie d'une nouvelle ligne avec un <FORM type POST et action tableau.php

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 333
    Points : 586
    Points
    586
    Par défaut
    Dit comme ca et si tu ne veux pas rafraichir ta page, il va effectivement falloir passer par AJAX, ce qui se fait assez simplement...

    - tu valides avec JS
    - t'envoies une requete a un fichier PHP qui t'enregistre tes donnees et retourne le tableau mis a jour (ou simplement la/lignes a inserer)
    - tu supprimes le pop-up et tu remplace le tableau / insere ta ou tes lignes via le DOM de JS


    EDIT : sinon +1 Fox, si tu peux faire sans javascript (et en meme temps plus simplement), c'est mieux :p

  4. #4
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,

    Par defaut, et pour des raisons de sécurité, les navigateurs désactivent le javascript permettant de fermer une fenetre de navigation (popup ou normale).

    Une facon de contourner le problème serait d'utiliser un 'tooltip'. C'est un bloc de texte (div) qui se met en surimpression de ta page via du javascript. Dedans, tu pourrais entrer les données a ajouter au tableau. Puis, tu valides et ce bloque se cache.
    Ensuite, tu fais les traitements javascript et php necessaires, et pour finir :
    - sois tu recharge completement ta page (autant faire les traitements a ce moment
    - sois tu recharges uniquement le tableau via ajax
    - sois tu ajoutes les informations au tableau directement en javascript.

    Hesite pas a demander des precisions si besoin.
    Z.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Zwiter Voir le message
    Salut,

    Par defaut, et pour des raisons de sécurité, les navigateurs désactivent le javascript permettant de fermer une fenetre de navigation (popup ou normale).

    Une facon de contourner le problème serait d'utiliser un 'tooltip'. C'est un bloc de texte (div) qui se met en surimpression de ta page via du javascript. Dedans, tu pourrais entrer les données a ajouter au tableau. Puis, tu valides et ce bloque se cache.
    Ensuite, tu fais les traitements javascript et php necessaires, et pour finir :
    - sois tu recharge completement ta page (autant faire les traitements a ce moment
    - sois tu recharges uniquement le tableau via ajax
    - sois tu ajoutes les informations au tableau directement en javascript.

    Hesite pas a demander des precisions si besoin.
    Z.
    Bah je préfère garder mon popup (Interface 2) comme je fais plein de choses dessus (recherche,sélection,...).

    Par contre lorsque je valide mon Interface 2:
    - validation javascript
    - validation PHP + enregistrement dans la base

    Lorsque ces deux conditions sont OK, j'utilise toujours mon Interface 2 pour afficher un element html <a> qui lorsque l'utilisateur clique va me permettre de faire du javascript pour:
    - récupération au format XML des infos enregistrés
    - actualisation de mon tableau dans l'interface 1
    - fermeture de ma fenêtre Interface 2

    C'est comme cela que l'on fait en général? On peut se passer de la balise <a> pour faire faire ce que je veux?

    C'est à ce niveau là que je coince....

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 333
    Points : 586
    Points
    586
    Par défaut
    eh ? Pour quoi faire ton lien ? Un submit ou un bouton normale avec JS qui submit, t'enregistre tes infos et tu fermes ta fenetre avec JS.

    En mieux, apres une requete AJAX tu tests avec JS si l'enregistrement s'est bien passe, en renvoyant un false de PHP que tu test avant le removeChild...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Shirraz Voir le message
    eh ? Pour quoi faire ton lien ? Un submit ou un bouton normale avec JS qui submit, t'enregistre tes infos et tu fermes ta fenetre avec JS.

    En mieux, apres une requete AJAX tu tests avec JS si l'enregistrement s'est bien passe, en renvoyant un false de PHP que tu test avant le removeChild...
    Bah c'est bien là mon problème

    sur Interface 2 j'ai un input de type submit avec un évènement onclick"return valider()"

    Lorsque l'utilisateur clique dessus, il se passe
    1. validation javascript (sur le clint)
    2. validation php (sur le serveur)
    3. enregistrement dans la base mysql (sur le serveur)

    si tt se passe bien il faut mettre à jour l'interface 1, du coup il faut que j'appelle à nouveau une fonction javascript pour me faire cela et le seul moyen que j'ai trouvé c'est de me servir de l'interface 2 en ajoutant une balise <a> ou un input (à nouveau) pour relancer du javscript.

    C'est sur cette partie que je sèche,

    il y a peut être un truc évident que je ne vois pas aussi, je débute en php,ajax et javascript


  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Je te rappelles que dans ce que je te proposes, ta popup reste exactement ecrite comme avant sauf que sa devient une page .

    Simplement tu en sort logiquement par la validation de la saisie qui te raméne a ta premiére page qui reçoit donc les POST de saisie !

    parceque crois moi avec les virus et autre ... bien des visiteurs non seulement n'accepteront pas le javascript, mais refusent toutes popup

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 333
    Points : 586
    Points
    586
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Je te rappelles que dans ce que je te proposes, ta popup reste exactement ecrite comme avant sauf que sa devient une page .

    Simplement tu en sort logiquement par la validation de la saisie qui te raméne a ta premiére page qui reçoit donc les POST de saisie !

    parceque crois moi avec les virus et autre ... bien des visiteurs non seulement n'accepteront pas le javascript, mais refusent toutes popup

    Apparement il ne veux pas une solution 100% PHP…


    Sinon c'est comme je t'ai dit :

    - JS : tu valides et submit avec JS
    - JS : t'envoies une requete a ton script PHP
    - PHP : t'enregistre tes donnees
    - PHP : si l'ajout a echouee tu retourne false
    - JS : tu recupere et test la reponse de PHP
    - JS : si la reponse de PHP est ok, tu supprime ton popup et tu modifie ton tableau, soit :
    -- tu cree ta ligne et l'insere avec JS
    -- tu cree ta ligne avec PHP et l'insere avec JS (ma preference, je n'aime pas trop avoir du HTML dans mes scripts JS)
    -- tu retourne le nouveau tableau complet avec PHP et remplace l'ancien

    On ne peut pas faire plus simple avec JS... Et au lieu d'ouvrir une nouvelle fenetre, tu ferais mieux d'ouvrir un nouveau div en surimpression comme conseille par Zwiter, avec un peu de CSS c'est simple a faire et ca rend bien mieux...

    Apres si tu suis les conseils de Fox, tu te simplifies la vie en plus d'avoir un site accessible (JS + popup "traditionnel" c'est pas top). Surtout que j'ai l'impression que tu n'as pas besoin de JS dans ton cas (et on a jamais / on ne devrait jamais en avoir besoin de toutes facons, tout devant fonctionner sans, JS n'apportant qu'un plus pour ceux l'ayant active)

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Shirraz Voir le message
    Apparement il ne veux pas une solution 100% PHP…

    et on a jamais / on ne devrait jamais en avoir besoin de toutes facons, tout devant fonctionner sans, JS n'apportant qu'un plus pour ceux l'ayant active
    Bonjour l'Ami,

    Quand on va sur les news spécialisés dans le WC3, ils ne disent pas de ne pas avoir de JS , mais j'aime bien leur définition,
    Un complément de confort, ou visuel !!

    Alors OUI OUI à JS

    Un excellent exemple: ICI, on ne peut écrire sans JS
    Mais si bien sur !! on se fait un petit copier collé de tous les codes balises et c' est impec !!

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Shirraz Voir le message
    Apparement il ne veux pas une solution 100% PHP…


    Sinon c'est comme je t'ai dit :

    - JS : tu valides et submit avec JS
    - JS : t'envoies une requete a ton script PHP
    - PHP : t'enregistre tes donnees
    - PHP : si l'ajout a echouee tu retourne false
    - JS : tu recupere et test la reponse de PHP
    - JS : si la reponse de PHP est ok, tu supprime ton popup et tu modifie ton tableau, soit :
    -- tu cree ta ligne et l'insere avec JS
    -- tu cree ta ligne avec PHP et l'insere avec JS (ma preference, je n'aime pas trop avoir du HTML dans mes scripts JS)
    -- tu retourne le nouveau tableau complet avec PHP et remplace l'ancien

    On ne peut pas faire plus simple avec JS... Et au lieu d'ouvrir une nouvelle fenetre, tu ferais mieux d'ouvrir un nouveau div en surimpression comme conseille par Zwiter, avec un peu de CSS c'est simple a faire et ca rend bien mieux...

    Apres si tu suis les conseils de Fox, tu te simplifies la vie en plus d'avoir un site accessible (JS + popup "traditionnel" c'est pas top). Surtout que j'ai l'impression que tu n'as pas besoin de JS dans ton cas (et on a jamais / on ne devrait jamais en avoir besoin de toutes facons, tout devant fonctionner sans, JS n'apportant qu'un plus pour ceux l'ayant active)
    Disons que j'ouvre ma fenêtre via window.open('Interface2.php'), mais je suppose que c'est bien un popup, c'est cela?


    Pour ouvrir une nouvelle Div en surimpression, comment qu'on fait?
    C'est l'histoire de faire la Div et de la cacher ou de la rendre visible en javascript suivant le besoin? Il y a un article à ce sujet?

  12. #12
    FoxLeRenard
    Invité(e)
    Par défaut
    Ce que je ne comprends pas, c' est pourquoi tu ne fais pas
    href="'Interface2.php" au lieu de la popup ??

    Mais bon je n'insissterais pas

  13. #13
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Disons que j'ouvre ma fenêtre via window.open('Interface2.php'), mais je suppose que c'est bien un popup, c'est cela?[/QUOTE]Oui, c'est un popup.
    Citation Envoyé par jep33 Voir le message
    Pour ouvrir une nouvelle Div en surimpression, comment qu'on fait?
    C'est l'histoire de faire la Div et de la cacher ou de la rendre visible en javascript suivant le besoin? Il y a un article à ce sujet?
    Via javascript, on peut chager le style d'un document, en particulier l'attribut display : http://www.w3schools.com/htmldom/dom_obj_style.asp

    Z.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Ok pour l'instant je vais garder ma fenêtre secondaire, on verra par la suite pour faire cela avec un div.

    Pour ma fenêtre/popup, comment je fais pour la rendre modale?

  15. #15
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jep33 Voir le message
    Ok pour l'instant je vais garder ma fenêtre secondaire, on verra par la suite pour faire cela avec un div.

    Pour ma fenêtre/popup, comment je fais pour la rendre modale?
    En javascript ........
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    window.showModalDialog(url , winParams, props);

Discussions similaires

  1. [MySQL] Ajout d'options dans une liste déroulante à partir du résultat d'une requête
    Par minogttao dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/12/2006, 18h18
  2. Ajout de données dans une liste d'un formulaire
    Par Elstak dans le forum Access
    Réponses: 1
    Dernier message: 09/08/2006, 15h53
  3. ajouter un élément dans une liste
    Par Le Mérovingien dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 02/07/2006, 17h43
  4. [PHP-JS] ajout d'options dans une liste deroulante
    Par moonia dans le forum Langage
    Réponses: 10
    Dernier message: 04/05/2006, 11h18
  5. Ajouter un valeur dans une liste modifiable
    Par ancylia dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2005, 12h50

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