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 :

actualiser les resultats d'une table apres insertion d'un nouvel en registrement


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut actualiser les resultats d'une table apres insertion d'un nouvel en registrement
    Bonjour a tous,

    Voila, je voudrais savoir comment actualiser les résultats d'un tableau affichant les données d'une table après insertion d'un nouvel enregistrement.

    Je m'explique je dispose d'une page (Formulaire ) pour l'insertion de nouveau lots , jusque la tout va bien, sur cette même page , j'affiche les données de la table LOTS , maintenant , je voudrais que le bouton valider qui permet l'insertion du nouveau LOT puisse en même temps actualiser les données de la table.
    voici le code du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <form name="formulairelot" action="insertion_lot.php" method="post" onSubmit="return check();" >
     
                  <p align="left"><strong>Numéro de l&quot;appel d&quot;offres:</strong>
                    <input type="text" name="nao" id="nao" readonly="readonly" value="<?php echo $nao?>" />
    </p>
                  <p align="left"><strong>N° Lot :</strong>
                    <input name="numlot" type="text" id="numlot" size="28" maxlength="3" />
                  </p>
                  <p align="left"><strong>Code Lot :</strong>
                    <input name="code_lot" type="text" id="code_lot" size="25" />
                    <input type="button" name="generer" id="generer" value="Générer code Lot" onclick="concatenation();" />
                  </p>
                  <p align="left"><strong>Intitulé du Lot :</strong></p>
                  <p>
                    <textarea name="intitule_lot" id="intitule_lot" cols="55" rows="4"></textarea>
                  </p>
                  <p align="center">
                    <input type="submit" name="submit" id="okbtn" value="Valider" />
                    <input type="button" value="Annuler" onclick="javascript:window.close();" />
                  </p>
                </form>
    et voici celui de l'affichage des données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <div id='contenutab'>
            <?php include('liste_lot.php') ?>
            </div>
    Merci

  2. #2
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Salut,

    Tu peux rafraîchir ta page après ton insertion via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $delai=1; 
    $url='Formulaire.php';
    header("Refresh: $delai;url=$url");
    Du coup, une fois tes données insérées dans la base, l'actualisation de ta page va de nouveau charger les données contenues dans ta table.

    J'espère avoir répondu à ta question.

    @+
    "Vous qui entrez ici, abandonnez toute espérance." Dante

  3. #3
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Ou dois je insérer ce code?????

  4. #4
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Comme je l'ai indiqué dans mon précédent post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    une fois tes données insérées
    Après ta requête SQL d'insertion dans la base tu actualises ta page. Cependant, je reviens sur le moyen que je t'ai donné, mets plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<meta http-equiv='refresh' content='0';URL=".$_SERVER['PHP_SELF'].".php?refresh=0'>";
    En effet, la première solution fonctionne mais uniquement si aucun contenu n'a été affiché avant donc elle n'est pas valable. Par contre, celle que je viens de te donner fonctionnera.

    En résumé, ton formulaire transmet ses données à ton fichier de traitement qui va insérer ces données dans la base et ENSUITE, tu mets le bout de code qui va actualiser ta page.

    Dans le détail, le $_SERVER['PHP_SELF'] fait référence au nom de la page en cours et le "refresh=0" au temps que le script attendra avant d'actualiser ta page.

    @+
    "Vous qui entrez ici, abandonnez toute espérance." Dante

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Théoriquement, il n'y a pas besoin de réactualiser une page lorsqu'on valide une page, il faut juste faire les traitements dans l'ordre (les codes).

    Dans ton cas, et coté code, il y a des chance que tu génère le formulaire après la requête d'insertion, alors qu'il faut le faire avant.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    // Partie traitement
    // démarre le session si c'est le cas
    // démarre une connexion Bdd 
     
    // (Les Actions)
    if (isset($_POST['valider'])) {
        // Insertion des données
        // Requête INSERT INTO
    }
     
    // On récupère les données si on en a besoin
    // Requête SELECT
     
    // Partie HTML / Interface
    <form>
        ... etc ...
    </form>

    Ceci dit, on effectue tout de même une redirection (et non une ré-actualisation) pour des raison de sécurité ou/et pour éviter une double insertion accidentelle, ceci avec un header();
    En reprenant le même exemple ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (isset($_POST['valider'])) {
        // Insertion des données
        // Requête INSERT INTO
        header('HTTP/1.1 303 See Other');
        header('Location: la_meme_page.php');
    }
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Excuse moi de ne pas aller dans ton sens mais c'est jouer sur les mots, la redirection sur la page courante a strictement le même but qu'une actualisation de page.

    A bon entendeur.
    "Vous qui entrez ici, abandonnez toute espérance." Dante

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    A bon entendeur.



    la redirection sur la page courante a strictement le même but qu'une actualisation de page
    Absolument pas.
    Le code que j'ai proposé n'est pas le même que le tient, ça ce voit pourtant, non ?
    Par conséquent, ça n'y fait pas la même chose.
    J'y ai pourtant donné les explications principales du but de la redirection (les 2 header), elles sont très différentes.
    De même expliquer pourquoi dans l'absolu une actualisations n'est pas nécessaire (question de structure, de déroulement).

    Bref ... je pense que tu n'a pas compris les nuances, ne n'est pas pour autant qu'il faille être aussi désagréable.


    Toujours est il que les <meta http-equiv='refresh' ... /> ça date de la préhistoire ... faut savoir tourner la page.

    Ici, ça provoque obligatoire un aller/retour entre le serveur (hébergeur) et le client (navigateur) totalement inutile, c'est autant de temps de perdu.
    De plus, toute l'historique de le navigation est conservée dans le navigateur, ce qui peut avoir des conséquences fâcheuses si l'utilisateur y fait un peu n'importe quoi.
    C'est pour ça que c'est obsolète de nos jours, à proscrire, surtout dans ce cadre là (une insertion de donnée dans une Bdd).

    Un header() (ou redirection) ce fait uniquement coté serveur, on ne fait que redéfinir/purger une entête et proooser un autre contenu (tout ce ceci toujours coté serveur), c'est autant de temps de gagné.
    De plus, on élimine le risque lié à l'insertion si l'utilisateur s'amuse avec son historique coté navigateur.

    Ca n'a rien avoir tout de même non ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  8. #8
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Hum hum, petite recherche sur Google pour préciser la différence entre les deux solutions. Premier résultat, définition d'un site plutôt très connu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Les différentes formes de redirection
     
    Sommaire
     
    Voici un résumé des techniques de redirection les plus courantes :
     
        * Redirection serveur
        * Redirection par URL Rewriting
        * Redirection dans un script serveur (PHP, .Net, ASP, etc.)
        * Redirection par balise META Refresh
        * Redirection JavaScript
    Dans "Redirection dans un script serveur" que trouve-t-on ?... Ah... header() et ne voit on pas "Redirection par balise META Refresh" ? Ah ben si en fait. Conclusion les deux solutions sont rassemblées sous le même terme : REDIRECTION... Aucune distinction avec l'actualisation.

    Après je veux bien qu'il existe des nuances sinon ce serait les mêmes solutions mais cessons de chipoter sur les termes en me reprenant par exemple sur le fait que redirection et actualisation sont des choses totalement distinctes dans ce cas précis.
    "Vous qui entrez ici, abandonnez toute espérance." Dante

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le header() est une technique que tu découvre à peine, et ce qui est dommage, c'est que tu le prenne mal et du coup tu ne vois pas la réelle différence, tu tire des conclusions quelques peu approximatives, et même fausses.
    En somme, tu fait tout l'inverse que aider en persistant dans l'erreur.


    Le meta et un header() se ressemblent certes, mais techniquement ça n'a aucun rapport, mais vraiment.

    Je t'ai donné une raison pourtant suffisante, qui coule de source :
    L'une fait un aller retour/retour client/serveur, l'autre non, c'est quand même une sacrée différence.
    Rien que ça suffit pour mettre à la poubelle cette histoire de meta.
    Je passe sur les autre car je les aient déjà évoqués (mais tu ne les comprends pas, ou tu ne veux pas les comprendre ou entendre).


    Franchement, faut oublier cette histoire de <meta refresh> car ça n'apporte pas grand chose, et surtout pas dans ce cadre là, certainement pas.
    De nos jour, on fait nettement mieux, nettement plus optimisé et en prime nettement plus de possibilités, notamment avec la fonction header(), ou alors avec Ajax.


    Fait des essai en continuant tes recherche, tu verras, tu ne peux que en convenir.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  10. #10
    Membre régulier Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Points : 114
    Points
    114
    Par défaut
    Le header je l'utilise aussi, seulement le meta je l'utilise après les traitements lorsque je ne peux pas mettre d'header en haut de page puisque l'on ne peut pas utiliser header après que du html ait été envoyé.

    Je n'ai pas remis en cause les différences entre les deux. Tu les connais mieux que moi. Ce que je contredisais c'est le fait de chipoter sur le terme redirection et actualisation. Ce n'est pas une énormité de regrouper les deux sous le terme de redirection puisque des sites professionnels n'hésitent pas à les regrouper sous ce terme.
    "Vous qui entrez ici, abandonnez toute espérance." Dante

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le header je l'utilise aussi, seulement le meta je l'utilise après les traitements lorsque je ne peux pas mettre d'header en haut de page puisque l'on ne peut pas utiliser header après que du html ait été envoyé.
    C'est justement ce que j'ai évoqué en 1er plus haut : C'est une question de structure, de déroulement du code.

    Ton code en toute évidence est (malheureusement) mal structuré, ce qui te permet pas d'exploiter convenablement cette fonction header().

    Coté structure, le minimum c'est de faire en tout 1er les traitements, et rien que les traitements, et ça, avant le moindre echo ou autre éléments HTML.
    En tout dernier, (la dernière roue), on code (ou génère) le HTML.


    Penche toi sur des systèmes de template, il proposent quasi tous ce genre de stucture.


    Toujours est il que je ne chipote pas sur les termes, mais uniquement sur 2 techniques qui sont radicalement différentes, qui malheureusement se ressemble mais qu'on les comparent à tord, et surtout qu'on propose toujours de nos jours une technique qui me semble largement dépassée.
    On fait nettement mieux avec un simple header().
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. Actualiser les données d'une table
    Par masoum dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 27/06/2015, 12h16
  2. Actualiser les données d'une table
    Par tonioboss dans le forum WinDev
    Réponses: 2
    Dernier message: 09/04/2014, 17h56
  3. Réponses: 2
    Dernier message: 05/07/2010, 23h45
  4. [WD10] actualiser les données d'une table mémoire
    Par alimohamed1 dans le forum WinDev
    Réponses: 2
    Dernier message: 30/06/2010, 13h43
  5. Réponses: 5
    Dernier message: 25/07/2005, 14h03

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