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 :

rafraichir page dès modif


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut rafraichir page dès modif
    Bonjour,

    sur une page, j'ai un formulaire qui permet de modifier le contenu d'une table MySQL et juste à côté, j'affiche le contenu de celle-ci ; si on modifie le contenu de la table, je voudrais que l'affichage soit tout de suite à jour, sans avoir besoin de rafraichir la page ; chez moi, ça marche bien, mais quelqu'un d'autre vient de tester et chez lui, ça n'est pas rafraichi. Donc, puis-je forcer ça ?
    Mon code actuel :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    header('Cache-Control: no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
    ?>
    ...
    <?php
    include_once("connecti.php");
    include_once("config.php");
     
    $id_conni = connecti();
    ?>
    <table><tr><td width="300">
    <form method="post" action="formmail.php">
      <table>
          <tr>
            <td align="center"><b>Nom</b></td>
            <td align="center">
            <select name="Nom">
    <?php
    $sql = stripslashes("SELECT * from `licencie`");
     
     $result = mysqli_query($id_conni,$sql) or die(mysqli_error($id_conni));
        while ($ligne = mysqli_fetch_array($result, MYSQL_NUM))
        {	?><option><?php echo $ligne[2].' '.$ligne[4] ?> </option><?php } ?>
     </select>
     </td></tr></table>
    <table><tr><td>absent <input type="radio" name="statut" value="absent"></td><td>présent <input type="radio" name="statut" value="présent"></td></tr></table>
    <input type="submit" value="envoyez">
     </form>
      </td><td valign="top"><table><tr> <td valign="top">Présents</td></tr>
      <tr><td><?php
       $sql = stripslashes("SELECT * from `licencie`");
       $result = mysqli_query($id_conni,$sql) or die(mysqli_error($id_conni));
        while ($ligne = mysqli_fetch_array($result, MYSQL_NUM)) {
    	    switch($ligne[5]) {
    		  case "0" : $color="red"; break;
    		  case "1" : $color="green"; break;
    		  case "2" : $color="black"; break; 
    		  default : $color="black"; break;
    		}
    	    echo "<font color=".$color.">".$ligne[3]."</font><br>";
        }		
      ?></td></tr></table>
    formmail.php :
    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
    22
    <?php 
     
    ini_set('display_errors', 'on');
    ini_set('error_reporting', E_ALL | E_STRICT);
    ini_set('output_buffering', 'off');
     
     
    include_once("connecti.php");
    include_once("config.php");
     
    $id_conni = connecti();
    $nom_prenom=$_POST['Nom'];
    $nom_decoupe=explode(' ',$nom_prenom);
    $nom=$nom_decoupe[0];
    $prenom=$nom_decoupe[1];
    $statut=($_POST['statut']=="absent")?0:1;
    $sql="update licencie SET statut='".$statut."' WHERE (nom='".$nom."' AND prenom='".$prenom."')";
    $result = mysqli_query($id_conni,$sql) or die(mysqli_error($id_conni));
    ?>
    <script type="text/javascript">
    javascript:history.back();
    </script>

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    Je pense que ton problème est du au code javascript. Car javascript est un langage executé par le navigateur, non par le serveur.

    L'éxecution du code javascript est donc fonction du navigateur, si le navigateur n'est pas compatible, la page n'est pas rafraichie ou si l'utilisateur désactive le javascript, le code n'est pas pris en compte.

    Il est possible de faire cette redirection en php grace a la fonction header("location: mapage.php"); cependant celle ci ne marche que si elle se trouve entre les balises <head></head>

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Merci de me répondre si vite, mais je vois 2 problèmes :
    - la page en question (formmail.php) ne contient ni head ni body ;
    - le code que j'exécute avant la redirection doit être exécuté avant celle-ci, donc, comment faire ?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,

    Fait une redirection php avec header location à la place du javascript juste après les traitements de mise à jour.

    A+.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    J'ai remplacé la redirection js par une en PHP : (formmail.php)
    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
    <?php 
     
    ini_set('display_errors', 'on');
    ini_set('error_reporting', E_ALL | E_STRICT);
    ini_set('output_buffering', 'off');
     
     
    include_once("connecti.php");
    include_once("config.php");
     
    $id_conni = connecti();
    $nom_prenom=$_POST['Nom'];
    $nom_decoupe=explode(' ',$nom_prenom);
    $nom=$nom_decoupe[0];
    $prenom=$nom_decoupe[1];
    $statut=($_POST['statut']=="absent")?0:1;
    $sql="update licencie SET statut='".$statut."' WHERE (nom='".$nom."' AND prenom='".$prenom."')";
    $result = mysqli_query($id_conni,$sql) or die(mysqli_error($id_conni));
    header('Location http://url');
    ?>
    et quand je valide le formulaire (dont l'action est formmail.php), page blanche et un "page précédente" est nécessaire...mais dans le fichier "connecti.php", il y a des "echo", donc le header ne peut pas marcher...

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Il manque ':' après le mot location.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Merci pour ta vigilance, mais ça ne suffit pas

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Si tu as déjà envoyé quelque chose avant le header, tu auras des erreurs. Faits une redirection js vers la page mais pas un history.back().
    Sinon ton code,
    <script type="text/javascript">
    javascript:history.back();
    </script>

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Et ça, c'est mieux ?
    Et à part history.back, qu'est-ce que je peux faire ? (et si l'utilisateur a désactivé le javascript ?)
    Avant le header, il n'y plus d'echo, donc je ne comprends pas.

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    window.location.href = "laPage.php";
    </script>

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Merci beaucoup car ça marche chez mon "client" (la solution précédente marchait déjà chez moi, mais pas chez lui).
    Par contre, à chaque fois que je veux répondre à un post (ou créer un nouveau fil), je suis obligé de me reconnecter et une fois fait, j'obtiens encore la page de connexion, mais là un "refresh" me suffit pour accéder à l'éditeur ; y a-t-il moyen d'éviter ça ?

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Par contre, à chaque fois que je veux répondre à un post (ou créer un nouveau fil), je suis obligé de me reconnecter et une fois fait, j'obtiens encore la page de connexion, mais là un "refresh" me suffit pour accéder à l'éditeur ; y a-t-il moyen d'éviter ça ?
    Tu parles du forum?
    Si c'est le cas, quand tu te connectes, coche la case "Se souvenir de moi ?".

    A+.

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Tu parles du forum?
    Si c'est le cas, quand tu te connectes, coche la case "Se souvenir de moi ?".
    Oui, je fais déjà ça et j'obtiens pourtant le comportement que j'ai décrit (depuis quelques semaines ; avant, aucun problème).

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Peut-être que ton navigateur efface le coockie concerné.

  15. #15
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Tu as sûrement raison car j'ai été dans les options internet (IE) et le niveau d'acceptation des cookies était au plus bas...

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

Discussions similaires

  1. rafraichir page parent depuis une pop up
    Par yanchasp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2006, 10h09
  2. Réponses: 5
    Dernier message: 03/07/2006, 18h19
  3. Réponses: 1
    Dernier message: 10/02/2006, 18h19
  4. redirection de pages html vers une page locale? (modif dns?)
    Par johan_b dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 20/01/2006, 17h51
  5. Rafraichir page
    Par masseur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/12/2005, 16h31

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