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

  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 ^^

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    hi Djak,
    Si tu te marres, c'est mauvais signe !

    Je ne comprends pas pourquoi le header ne fonctionne pas dans ce cas !!??

    Même lorsque je fais simplement ça :

    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);
    	}
    }
     
    header("Location: main.php");
     
    ?>
    Ya t'il une erreur de syntaxe dans le code ?

  8. #8
    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
    Ton code marchait avant la modif ?
    Vérifie que tu n'as pas de caractères avant la première balise <?php (même un espace ou un saut de ligne)
    C'est dur de debugger sans les codes d'erreurs ^^

    [edit]En fait pour debugger t'aurais meilleur temps de développer tes scripts en local ^^ mais tu peux quand même utiliser :
    ini_set("errors_reporting", E_ALL);
    ini_set("display_errors", "1");

    au début de ton script, pour modifier les param du php.ini, uniquement pour le script en cours.
    ou encore si t'es sous Apache mettre ca :

    php_value errors_reporting 2047
    php_value display_errors "1"

    dans un fichier .htaccess dans le même répertoire que ton script.

    Sinon, si ton hébergeur à tout bloqué c'est qu'en théorie il redirige les erreurs vers un fichier de log que tu dois pouvoir consulter en ftp , enfin, le plus simple reste quand même de commencer à tester en local

    [/edit]

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Merci Djak. Je vais suivre tes conseils à la lettre.
    Je te tiens au courant.

  10. #10
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Je n'ai pas répondu à ta question. Mon code fonctionnait bien avant la modif mais en utilisant JS.
    Et si je remplace le JS par un header, celui-ci n'est pas interprété et je n'ai donc pas de retour vers ma page main.php

  11. #11
    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
    Ok, donc le problème vient sûrement du fait que du texte est envoyé au navigateur avant le header.

  12. #12
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Mon cher Djak, une fois de plus tu as fait mouche !

    Le problème se situait au niveau des caractères avant la première balise.
    Pour une raison de lisibilité, tout le code était décalé.

    En ré-alignant le code sur la gauche, tout est ok.
    Je ne savais pas que cela pouvait pertuber le fonctionnement de la fonction "header", alors que ça ne gênait pas lorsque j'utilisais JS.

    Ceci dit, je garde tes infos pour le debuggage du code, qui sont fort intéressantes.

    Merci encore

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/03/2007, 09h44
  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, 11h19
  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, 10h28
  4. Réponses: 2
    Dernier message: 06/03/2003, 16h37

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