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 :

Rafraîchissement page précédente


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut Rafraîchissement page précédente
    Bonjour à tous,

    Dans une page que j'appelerai ici main.php, j'ai créé un tableau de contacts qui récupère les données dans une base mysql.
    Au début de chaque ligne, j'ai créé des cases à cocher qui me permettent de cocher les enregistrements que je veux supprimer et donc un bouton "supprimer" qui va avec.

    ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form method="post" name="suppression" action="effacer.php">
    <input type="submit" value="Supprimer">
    </form>
    Ensuite dans la page effacer.php, j'ai le code suivant :

    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 
     
    mysql_connect("SERVER", "USER", "PASSWORD");
    mysql_select_db("DB");
     
    foreach ($_POST as $oui => $valeur) 
    { 
    if ($oui == 0)
    	{ }
    else
    	{
    	$supPros="DELETE FROM visiteurs WHERE idVisiteur='".$valeur."'";
    	$ReqSupPros=mysql_query($supPros);
    	}
    }
    ?>
    <script language="JavaScript">
    window.location='main.php';
    </script>
    Les lignes que j'ai cochées sont effacées sans problème et je reviens bien sur la page main.php.

    Mon problème est le suivant : j'utilise la pagination dans ma page main.php donc au lieu de revenir sur la première page de contacts quand j'ai validé ma suppression, je souhaiterais revenir sur la dernière page affichée avant de cliquer sur "supprimer".

    J'ai essayé window.history.go(-1), mais comme c'est le cache qui est utilisé, la dernière page est réaffichée avec les enregistrements que j'ai effacés.

    Je souhaiterai résoudre mon problème avec php en récupérant l'url de la page précédente mais comme mon formulaire utilise la méthode "POST", je n'ai pas d'idée.

    Merci pour votre aide...

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    si tu passes ta limite de début dans l'url pour ta pagination, tu peux la repasser en GET sur chaque page.
    Dans ton main.php, tu la passes dans le form en GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    if(!isset($_GET['startlimit'])) {
    $startlimit = 0;
    }
    else {
    $startlimit = $_GET['startlimit'];
    }
    ?>
    <form method="post" name="suppression" action="effacer.php?startlimit=<?php echo $startlimit; ?>">
    effacer.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!isset($_GET['startlimit'])) {
    $startlimit = 0;
    }
    else {
    $startlimit = $_GET['startlimit'];
    }
    header("Location: main.php?startlimit=".$startlimit); // Il vaut mieux utiliser un header qu'une redirection JS
    Sinon tu peux le stocker en session, mais si c'est juste pour stocker cela, je pense pas que ca vaille le coup de créer une session.
    Bye

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Salut Djak,

    Comme d'habitude, merci pour ta promptitude !
    J'ai effectivement suivi tes conseils me doutant que le JS n'était pas la meilleure solution ici.

    Je récupère bien l'url de la dernière page main.php avec ta méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form method="post" name="suppression" action="effacer.php?debut=<?php echo $_GET['debut']; ?>">
    mais dans mon fichier effacer.php, j'ai l'impression que mon header n'est pas interprété car dès que j'ai cliqué sur "supprimer", j'arrive sur la page effacer.php et le script s'arrete.

    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
     
    	<?php 
     
    	mysql_connect("SERVER", "USER", "PASSWORD");
    	mysql_select_db("DB");
     
    	foreach ($_POST as $oui => $valeur) 
    	{ 
    	if ($oui == 0)
    		{ }
    	else
    		{
    		$supPros="DELETE FROM visiteurs WHERE idVisiteur='".$valeur."'";
    		$ReqSupPros=mysql_query($supPros);
    		}
    	}
     
    	if(!isset($_GET['debut'])) 
    	{
    	$debut = 0;
    	}
    	else {
    	$debut = $_GET['debut'];
    	}
     
    	header("Location: main.php?debut=".$debut);	
     
    	?>

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Est-ce que tu envoies du texte au navigateur avant ton header ou bien le code de effacer.php est exactement celui que tu as mis ?

    D'autre part attention si tu fais ca sans test :
    <form method="post" name="suppression" action="effacer.php?debut=<?php echo $_GET['debut']; ?>">
    tu vas avoir une erreur sur certains serveurs (ca dépend de la config), d'ailleurs si tu travailles en local (pas sur un site public en ligne), tu peux chercher cette ligne (dans le php.ini):
    error_reporting = E_ALL
    et t'assurer qu'il y a bien E_ALL, pour afficher toutes les erreurs et notices de script, c'est pratique pour le debug, en local.
    Je dis ca parce que normalement si le problème vient du header tu devrais avoir une erreur d'affichée ^^
    idem pour echo $_GET['debut'] sur la page 0 de la pagination, si $_GET['debut'] n'est pas définie.

    tu dois également mettre display_errors à on :
    display_errors = On;
    dans le php.ini si tu veux afficher les erreurs

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Le code du fichier effacer.php est tel quel.

    Effectivement, les tests, je les fais en ligne donc je n'ai pas accès au fichier php.ini de mon hébergeur.

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    lol ^^

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/03/2007, 10h44
  2. connaître le NOM de la page précédente ... est ce possible ?
    Par jojodunord dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 21/12/2005, 12h19
  3. Récupérer l'url d'une page précédente
    Par Linoa dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 11h28
  4. Réponses: 2
    Dernier message: 06/03/2003, 17h37

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