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

PHP & Base de données Discussion :

Tableau qui ne se rafraichit pas après un onchange [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 67
    Points
    67
    Par défaut Tableau qui ne se rafraichit pas après un onchange
    Bonjour,

    J'ai un soucis avec un tableau qui ne se met pas à jour après un onchange, je m'explique.
    J'ai un fichier appelé index2.php dans lequels j'ai mis un menu deroulant. Lorsque je selectionne un element dans ma liste cela appele un fichier getuser2.php qui m'affiche un tableau grace à une variable passée dans l'URL.
    Jusqu'ici tout va bien, mon problème interviens lorsque je fais des modifications dans ma base de donnée, le résultat ne se met pas à jour dans mon tableau, c'est comme si pour chaque selection dans mon menu déroulant, la page getuser2.php ne se mettais pas à jour. Je dois fermer puis réouvrir une nouvelle page pour que les données soient mis à jour dans mon tableau.
    J'ai testé le rafraichissement de div sans succes.

    index2.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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <script type="text/javascript">
    function showUser(str)
    {
    if (str=="")
      {
      document.getElementById("txtHint").innerHTML="";
      return;
      } 
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","getuser2.php?q="+str,true);
    xmlhttp.send();
    }
    </script>
    </head><body>
    <div id="pnlControls">
    <table>
    <tbody>
    <tr>
    <td><a href="base.php?Action">Base</a></td>
    </tr>
    </tbody></table><br>
    <span id="lblTotalUtil" style="vertical-align: top;">Select Account:</span> 
    <select name="users" onchange="showUser(this.value)">
    <option value="">Select:</option>
    <option value="456">FFO</option>
    <option value="123">FFI</option>
    </select><br><br>
    <div id="txtHint"><b>Info will be listed here.</b></div>			
    </div>
    </form>
    getuser2.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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <div id="containtbl">
      <div id="tablheader">
        <table id="topcol" cellspacing="0">
         <tbody>
    		 <?php $q=$_GET["q"]; 
     
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Not connected : ' . mysql_error());
    }
     
    if (! mysql_select_db('cutback') ) {
        die ('Can\'t use foo : ' . mysql_error());
    }
    $row = mysql_fetch_array ( mysql_query("SELECT * FROM `cutback` WHERE `Activity_Date` = '2010-12-13' AND `Account` = '".$q."'"));
    ?>
     
       </tbody></table>
      </div>
      <div id="rightabletotal">	
        <table id="rightbltotal" cellspacing="0">		
    		<tbody>
         <tr class="th1b">
           <td class="th1">Base</td>
           <td class="th1">Plan</td>
         </tr>
    		 <tr>
            <td><?= round(stripslashes($row['LinesBase'])) ?></td>
            <td><?= round(stripslashes($row['LinesPlan'])) ?></td>
    		  </tr>
       </tbody></table>
      </div>
      	</div>
    Pourriez vous m'aider, merci par avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Points : 262
    Points
    262
    Par défaut
    Il faudrait un peu plus d'information sur comment tu met a jour ta base de données

    Je pense que le problème est un simple problème de cache lié au navigateur.

    Il suffit que tu rajoute dans ta requête un nombre aléatoire que tu n'utilisera pas ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlhttp.open("GET","getuser2.php?q="+str+"&random="+Math.floor(Math.random()*10000),true);
    Par exemple.

    Cependant je te conseillerais plutôt de regarder du coté des librairies javascript comme jQuery ou Mootools pour faire cette partie ajax (et bien plus encore) car ce genre de choses sont nativement prise en compte.

    Dans le même principe dans ton code getuser2.php tu définie une div et une table autour de ta requête sql mais qui n'affiche rien, c'est inutile et cela alourdi le dom pour pas grand chose

  3. #3
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    et protège toi contre les injections SQL au passage

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

Discussions similaires

  1. GridView qui ne se rafraichit pas après un insert
    Par blasil64 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/07/2010, 21h40
  2. Réponses: 17
    Dernier message: 21/11/2006, 11h44
  3. [Tableaux] création de tableau qui ne se fait pas
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 01/11/2006, 21h44
  4. [Tableaux] tableau qui ne s'additionne pas
    Par apprenti-fab dans le forum Langage
    Réponses: 8
    Dernier message: 21/01/2006, 14h19
  5. [HTML] Image en fond d'un tableau qui ne se répète pas.
    Par yoyot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 17h08

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