Rafraichissement après un INSERT

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Rafraichissement après un INSERT

par Koumalo » 27 mai 2008, 14:42

Autant pour moi, je suis désolé.

Koum

par Ryle » 27 mai 2008, 13:58

Modération :
Koumalo, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par Koumalo » 27 mai 2008, 11:01

Bonjour,

J'ai trouvé une solution, en fait le problème vient d'un mauvais rafraichissement du cache.
La solution consiste à ajouter un paramètre à l'appel du script php :

Depuis le javascript :
ajax.open('get', 'php/b_genre.php?d=' + (new Date()).getTime(), false);
j'ai donc ajouté [?d=' + (new Date()).getTime()] ce qui a l'air de forcer le rafraichissement.

Merci encore pour vos réponses.

Koum

par guilt92 » 27 mai 2008, 09:26

Comment sont appelés ces fichiers dans ton code ? dans quel ordre ?

par mcorgnet » 26 mai 2008, 21:09

Je ne connais pas très bien AJAX, juste théoriquement, en fait, mais comme ça, par hasard, en relançant ta fonction après insertion dans ta base, ça ne va pas forcer AJAX à mettre à jour ?

par Koumalo » 26 mai 2008, 16:58

Voici le script qui charge les éléments du select :
<?php
  header('Content-type: text/html; charset=windows-1252'); // 
  /* -============================- <FONCTIONS> -============================- */
  function recherche() {
    $requete  = "SELECT * FROM b_genre ORDER BY `liste` ASC";
    $connexion = ouvrir_connexion();
    mysql_select_db(BDD,$connexion);
    $res = mysql_query($requete, $connexion);
    if ($res) {
      $nbr_lignes = mysql_num_rows($res);   
      if ($nbr_lignes > 0) {
        $ret = "";
        for($i=0; $i < $nbr_lignes; $i++){
          $ligne = mysql_fetch_row($res);   
          $ret .= $ligne[0];
          if($i < ($nbr_lignes - 1)){
            $ret .= "þ";
          }
        }
      } else {
        $ret = "Erreur " . mysql_error() . " - " . mysql_errno();
      }
    } else {
      $ret = "Erreur " . mysql_error() . " - " . mysql_errno();
    }
    mysql_close($connexion);
    return $ret;
  }
  /* -============================- <DEBUT DU SCRIPT> -============================- */
  require ("connexion_id.php");
  $rep = recherche();
  echo $rep;
?>
Et voici celui qui modifie la table :
<?php
  header('Content-type: text/html; charset=windows-1252'); // 
  /* -============================- <FONCTIONS> -============================- */
  function ajoute($ng,$nu) {
    $requete  = "INSERT INTO b_genre (liste,genre) VALUES ('$ng','$nu')";
    $connexion = ouvrir_connexion();
    mysql_select_db(BDD,$connexion);
    $res = mysql_query($requete, $connexion) ;
    if ($res) {
      $ret = "ok";
    } else {
      $ret = mysql_error() . " - " . mysql_errno();
    }
    mysql_close($connexion) ; // Fermeture de la connexion
    }
    return $ret;
  }
  /* -============================- <SCRIPT> -============================- */
  require ("connexion_id.php");
  $rep = array();
  $ret = array();
  $exp  = null;
  $num  = null;
  if ( isset( $_GET['newg'] ) && $_GET['newg'] != ""){
    $exp=$_GET['newg'];
  }
  if ( isset( $_GET['num'] )  && $_GET['num']  != ""){
    $num=$_GET['num'];
  }
  if($exp != null && $exp != null){
    $rep = ajoute($exp,$num);
    echo $rep;
  } else {
    echo "Prb para : newg=" . $exp . " - num=" .$num;
  }
?>
Et bien sûr tout est fait en ajax. Tout fonctionne sauf ce rafraichissement.

Merci pour ta réponse "éclair"

Koum

par guilt92 » 26 mai 2008, 16:54

Sans code cela va être difficile...

Il faut que ta seconde requete de SELECT soit elle aussi faite grâce à l'Ajax après l'insertion de la nouvelle valeur, c'est à peu près tout ce que je peux dire si tu ne montres pas tes appels... :p

Rafraichissement après un INSERT

par Koumalo » 26 mai 2008, 16:51

Bonjour à tous,

Je ne sais pas si c'est bien ici que je dois poster, mais comme je ne sais pas d'où vient l'erreur...
Voici de quoi il s'agit :
- J'ai un formulaire qui contient un objet select dont les données sont prises dans une table mysql via un script php. Là pas de problème.
- L'utilisateur à la possibilité d'ajouter des champs dans ce 'select' ce qui doit alimenter la table mysql. Ca aussi ça fonctionne.
- Ce qui ne fonctionne pas, c'est qu'après l'ajout de ce nouvel item, quand je relis la table avec mon script php, il ne me renvoie pas l'élément ajouté alors que cet élément est bien dans la table (vérifié sous phpMyAdmin). Ca ressemble à un problème de rafraichissement comme si la table était lue en mémoire et pas sur le site. Si je relance la page, là l'élément est bien pris en compte. Mais comme j'utilise AJAX, le rafraichissement n'est pas envisageable...

L'un de vous a-t'il une idée de l'erreur que j'ai dû faire ?

Je développe sur pc / IE7 & Firefox / EasyPHP / et ma base est chez un hébergeur

Merci d'avance pour vos réponses

Koum