Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/11/2011, 11h29   #1
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Par défaut Update lors d'une déconnexion.

Bonjour,

Lors de chaque changement de page, une fonction de sauvegarde est appelée sur mon site afin de mettre à jour les données de celle-ci dans une base de données. Cette fonction prends en paramètre une donnée issue de $_SESSION, 'id_simu'. L'ensemble des données est enregistré au format JSON dans un champ donnee.
J'ai un problème, lorsque je me déconnecte du site, ma fonction me renvoi un message d'erreur, je souhaiterai savoir comment gérer la déconnexion.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function save(id_simu) {
    var donnees = lecture_saisie();
    var donnees_base = $("#donnee").val();
    var type = 1;
    $.ajax({
        type: "POST",
        async: false,
        url: "/monFichier.php",
        data: {
            type:type,
            id_simu:id_simu,
            donnees:donnees,
            donnees_base:donnees_base
        },
        success: function(value){
            if(value!=1) {
                alert('Une erreur est survenue lors de la sauuvegarde');
            }
        }
    });
}
Dans monFichier.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if($type == 1) {
    $t = json_decode($donnees_base, true);
    $donnees = json_decode($donnees, true);
    foreach ($donnees as $key => $value) {
        $t[$key] = $value;
    }
 
    $json = json_encode($t);
    $json = CheckDataStringJSON($json);
    $query = "update fdc_simu set donnee=$json where id_simu=$id_simu";
    sql_query($query);
    sql_close($db0);
    echo('1');
}
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 13h53   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Est-ce que tu as essayé de voir ce que te renvoyais le serveur au lieu d'afficher le message d'erreur ? Un truc du genre :
Code :
1
2
3
success: function(value) {
   alert(typeof value + ' -- ' + value);
}
Et en faisant ça, tu obtiens quoi ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 14h17   #3
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Les alertes sont toutes deux de type string.

Dans le cas normal :
string -- 1

Dans le cas d'une déconnexion :

tring --
Code :
1
2
3
<script language="javascript" type="text/javascript">
		window.location.href = '/identification.php';	// barre url
		</script>
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 14h40   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Donc quand tu l'utilisateur se déconnecte, tu sauvegardes et renvoies tout le script de redirection en paramètre de réponse. C'est pourquoi c'est toujours différent de 1.

Il faut procéder autrement.
En paramètres passés à la requête il faut ajouter si l'utilisateur souhaite se déconnecter en retour.
Au lieu de renvoyer un simple echo('1'); tu peux renvoyer une réponse plus précise.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function save(id_simu, deconnect) {
    var donnees = lecture_saisie();
    var donnees_base = $("#donnee").val();
    var type = 1;
    $.ajax({
        type: "POST",
        async: false,
        url: "/monFichier.php",
        data: {
            type:type,
            id_simu:id_simu,
            donnees:donnees,
            donnees_base:donnees_base,
            deconnect:deconnect
        },
        success: function(value){
            if(value='redirect') {
               window.location.href = '/identification.php';
            } else if(value!=1) {
                alert('Une erreur est survenue lors de la sauuvegarde');
            }
        }
    });
}
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 21h29   #5
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonsoir,

et en php ? si tu dois juste récupérer des valeurs dans $_SESSION,

tu peux essayer d'utiliser register_shutdown_function ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 10h16   #6
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Bonjour,
Merci sur vos réponse, j'ai pu avancer et travailler sur ces pistes.

Citation:
Envoyé par syl2095
et en php ? si tu dois juste récupérer des valeurs dans $_SESSION,
La plupart des valeurs à récupérer se trouvent dans des buffer qui vont être déchargés, je ne pense pas pouvoir utiliser cette fonction.

J'aimerai précisé un peu le contexte de l'appel de ma fonction save().
Voici un exemple d'appel sur la page mapage.php:
Code :
'body' => ' onload="lecture_base(' . $_SESSION['id_simu'] . ', \'mapage\');" onunload="save(' . $_SESSION['id_simu'] . ');" '
Vous voyez que cette fonction est appelée dans son principe à chaque fois que l'utilisateur quitte la page mapage.php.
Je ne comprend pas pourquoi lors d'une déconnexion ma fonction renvoie le script de redirection et ne se termine pas "normalement" comme dans tous les autres cas.
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 10h52   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Mets le code de ta page php et surtout la partie renvoyant le script de redirection.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 14h15   #8
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Voici tout d'abord la page appelée lors d'une déconnexion :
Code deconnexion.php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?PHP
    // deconnexion
    define("SANS_IDENTIFICATION", 1);
    session_start();
 
    include ("config.php");
 
    unset($_SESSION['profil']);
    unset($_SESSION['IDENTIFICATION']);
 
    // On détruit la session
    session_unset();
    session_destroy();
?>
 
<script language="javascript" type="text/javascript">
    window.location.href = '/';	// barre url
</script>
 
<?PHP
    die();
 
?>

Un exemple de page ou mes données sont amenées à être sauvegardées grâce à ma fonction de sauvegarde :
Code cession.php :
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
<?php
	include(dirname(__FILE__) . "/../../config.php");
        /*
         * Gestion des droits
         */
	ya_droit('DROITS');
 
        if (isset($_POST['simu'])) {
            $_SESSION['id_simu'] = $_POST['simu'];
        }
 
            include(ROOT . "/design/header.php");
            include(ROOT . "/globals.inc.php");
        $param = Array(
        'title' => 'TITLE',
        'body' => ' onload="lecture_base(' . $_SESSION['id_simu'] . ', \'cession\');" onunload="save(' . $_SESSION['id_simu'] . ');" '
        );
        draw_header(0, $param);
?>
<noscript><h1>Vous devez activer javascript pour pouvoir utiliser cet outil dans son intégralité</h1></noscript>
<div style="width: 900px;"></div>
<script type="text/javascript">
    function acquisition(param){
        [...] Implémentation [...]
    }
</script>
<table>
    <tr>
        <td style="vertical-align: top"><?php include(ROOT . "/menu_simu.php"); ?></td>
        <td> <div class="group">
                <h1>Eléments de cession</h1>
                <table>
                    <tr>
                        <td>
                            <table class="tabbox" style="margin-bottom: 10px;">
                                <tr>
                                  <td><input class="saisie" id="sf_total_equipement" type="text" onkeyup="ajax('cession')" /></td>
                                    [ ... ]  input, select ... permettant la saisie ou l'affichage de mes données [ ... ] 
<?php
draw_footer();
?>

Je vous remet les codes respectifs de la fonction de sauvegarde et de la page qu'elle appelle.
Code mesfonctions.js :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function save(id_simu) {
    var donnees = lecture_saisie();
    var donnees_base = $("#donnee").val();
    var type = 1;
    $.ajax({
        type: "POST",
        async: false,
        url: "/fdc/fdc_base.php",
        data: {
            type:type,
            id_simu:id_simu,
            donnees:donnees,
            donnees_base:donnees_base
        success: function(value) {
           if(value!=1){
                alert('Une erreur est survenue lors de la sauuvegarde');
        }
    });
}
        },
Code :
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
include('globals.fun.php');
 
extract($_POST);
 
//  Type :      Desc :
//  1           Sauvegarde effectuée au changement de page
//
//              Récupération des données json en BDD pour le bilan et pour la simu
//  2           données simu
//  4           données bilan
//
//  3           Sauvegarde pour le bilan de chaque bien
//
//  5           Récupération des données json en BDD pour le bilan des commerces
 
 
 
if($type == 1) {
 
    $t = json_decode($donnees_base, true);
    $donnees = json_decode($donnees, true);
    foreach ($donnees as $key => $value) {
        $t[$key] = $value;
    }
 
    $json = json_encode($t);
    $json = CheckDataStringJSON($json);
    $query = "update fdc_simu set donnee=$json where id_simu=$id_simu";
    sql_query($query);
    sql_close($db0);
    echo('1');
}
Merci pour votre aide, je vous tiens au courant des avancées de mes tests.
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 14h38   #9
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bon il va falloir utiliser ce que je t'ai déjà posté, à savoir un paramètre supplémentaire indiquant qu'au retour de la mise à jour, l'utilisateur souhaite se déconnecter.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function save(id_simu, deconnect) {
    var donnees = lecture_saisie();
    var donnees_base = $("#donnee").val();
    var type = 1;
    $.ajax({
        type: "POST",
        async: false,
        url: "/monFichier.php",
        data: {
            type:type,
            id_simu:id_simu,
            donnees:donnees,
            donnees_base:donnees_base,
            deconnect:deconnect
        },
        success: function(value){
            if(value='redirect') {
               window.location.href = '/identification.php';
            } else if(value!=1) {
                alert('Une erreur est survenue lors de la sauuvegarde');
            }
        }
    });
}
deconnexion.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    // deconnexion
    define("SANS_IDENTIFICATION", 1);
    session_start();
 
    include ("config.php");
 
    unset($_SESSION['profil']);
    unset($_SESSION['IDENTIFICATION']);
 
    // On détruit la session
    session_unset();
    session_destroy();
    echo 'redirect'; // on renvoie le souhait de redirection
    die();
?>
Et le dernier script :
Code :
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
<?php
include('globals.fun.php');
 
extract($_POST);
 
//  Type :      Desc :
//  1           Sauvegarde effectuée au changement de page
//
//              Récupération des données json en BDD pour le bilan et pour la simu
//  2           données simu
//  4           données bilan
//
//  3           Sauvegarde pour le bilan de chaque bien
//
//  5           Récupération des données json en BDD pour le bilan des commerces
 
 
if($type == 1) {
 
    $t = json_decode($donnees_base, true);
    $donnees = json_decode($donnees, true);
    foreach ($donnees as $key => $value) {
        $t[$key] = $value;
    }
 
    $json = json_encode($t);
    $json = CheckDataStringJSON($json);
    $query = "update fdc_simu set donnee=$json where id_simu=$id_simu";
    sql_query($query);
    sql_close($db0);
    echo('1');
}
 
// paramètre supplémentaire lors de l'appel AJAX
if ($deconnect) {
   include 'deconnexion.php';
}
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 15h55   #10
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
La redirection est bien effectuée mais les données ne sont toujours pas sauvegardées lorsque l'on la quitte la page en appuyant sur le lien de déconnexion.
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h06   #11
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par geoffrey34 Voir le message
La redirection est bien effectuée mais les données ne sont toujours pas sauvegardées lorsque l'on la quitte la page en appuyant sur le lien de déconnexion.
C'est normal, dans ton script deconnexion.php il n'y pas une once de code renvoyant vers la sauvegarde.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h35   #12
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par rawsrc
C'est normal, dans ton script deconnexion.php il n'y pas une once de code renvoyant vers la sauvegarde.
Oui il n'y a pas de code de sauvegarde dans ce fichier. Dans mon esprit, la déconnexion me fait quitter la page en cours, entrainant sa sauvegarde grâce au ' Onunload '. Cette même sauvegarde qui me renvoyait le code de redirection et qui ne se termine pas correctement.
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h36   #13
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Pour faire simple si à chaque mouvement de l'utilisateur tu sauvegardes les données, appelle la fonction save() sur le click de Déconnecter ou sur onunload() avec en second paramètre save(...,true);
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 16h43   #14
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Ca me semble bon oui. J'essaye ça au plus vite, je te remercie pour ton attention.
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 15h12   #15
Invité de passage
 
Homme Geoffrey GIROU
Développeur Web
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Geoffrey GIROU
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 1
Points : 1
Bonjour,

J'ai réussi à régler le problème de sauvegarde facilement après ta dernière remarque.

Je te remercie rawsrc. A plus !
geoffrey34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h21.


 
 
 
 
Partenaires

Hébergement Web