Supp d'enregistrement qui fait tourner le navig sans cesse

Eléphant du PHP | 331 Messages

11 juil. 2006, 22:51

Bonjour à tous.

J'ai un formulaire dans lequel j'ai intégré un bouton censé exécuter la suppression d'un enregistrement d'une table. Cette table possède deux clés primaires (IdVoteur et IdMatch). Voici ci dessous le code qui s'exécute lorsque le formulaire est validé.
Lorsque l'internaute utilise ce formulaire, et que le bouton est cliqué, le navigateur cherche indéfiniment comme s'il ne trouvait pas de sortie possible.
Cependant, lorsque j'arrete le chargement (même trés rapidement après avoir cliqué sur le bouton de validation du formulaire) et que je vais voir dans PhpMyAdmin ma table, je constate que l'enregistrement correspondant à ma requete SQL a bien été supprimé.
Ma question est donc la suivante : comment faire en sorte que le navigateur affiche ma page de sortie et ne cherche pas dans le vide une fois que l'enregistrement ait bien été supprimé ?

Merci d'avance !
Jay
if ((isset($_GET['IdVoteur_Supp'])) && ($_GET['IdVoteur_Supp'] != "")) {
  $deleteSQL = sprintf("DELETE FROM prono_Fusion_Voteur_MatchLigue1 WHERE IdVoteur=%s and IdMatch=%s",
                       GetSQLValueString($_GET['IdVoteur_Supp'], "int"),
					   GetSQLValueString($_GET['IdMatch_Supp'], "int"));

  mysql_select_db($database_connexion_bdd_mysql, $connexion_bdd_mysql);
  $Result1 = mysql_query($deleteSQL, $connexion_bdd_mysql) or die(mysql_error());

  $deleteGoTo = "saisie.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}
Modifié en dernier par jay64 le 12 juil. 2006, 09:29, modifié 2 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

11 juil. 2006, 22:59

Salut,
comment faire en sorte que le navigateur affiche ma page de sortie et ne cherche pas dans le vide une fois que l'enregistrement ait bien été supprimé ?
Ne pas utiliser DW :P

Ce qui pose problème c'est la redirection =>
 header(sprintf("Location: %s", $deleteGoTo));
Elle renvoie apparemment sur la même page avec les mêmes paramètres puisque tu les récupères avec
if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
 
La requête s'exécute après la verification des varaibles GET:
if ((isset($_GET['IdVoteur_Supp'])) && ($_GET['IdVoteur_Supp'] != ""))
Et donc au final on obtient indéfiniment la même redirection et même exécution de script.

Efface ces lignes de code et la redirection devrait se faire sur "saisie.php":
if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 331 Messages

12 juil. 2006, 09:33

Merci, c'est parfait, ça marche nickel.

Pour ce qui est de DW, c'est vrai que ça génère du code pas forcément des plus jolis mais ça permet quand même d'avancer aisément en n'étant pas un roi du code.