Bonjour,

Bonjour,

j'aimerai créer une session à partir d'un INT dans mysql en l’occurrence ici avec "numero_calcul".

Jusqu'a maintenant j'arrive à créer ma session grâce à "sChi1 " qui est un $_POST

comme ceci :

Ccalcul.php

function calcul_box()
        {

            $sChi1 = $GLOBALS'MySQL']->escape($_POST'n1']);
            $sSi1 = $GLOBALS'MySQL']->escape($_POST'si1']);
            $sChi2 = $GLOBALS'MySQL']->escape($_POST'n2']);
            $sVotresultat_1 = $GLOBALS'MySQL']->escape($_POST'result']);
            $sVotre_temps = $GLOBALS'MySQL']->escape($_POST'chronotime']);

        if ($sChi1 != "" && $sSi1 != "" && $sChi2 != "" && $sVotresultat_1 != "" && $sVotre_temps != "")

            {

                $bRf = $GLOBALS'MySQL']->res("INSERT INTO `addition` SET
                    `chiffre1` = '{$sChi1}',
                    `signe1` = '{$sSi1}',
                    `chiffre2` = '{$sChi2}',
                    `votresultat` = '{$sVotresultat_1}',
                    `chronotime` = '{$sVotre_temps}'

                    "
                    );

                $GLOBALS'CLogin']->performLogin($sChi1);
                return ($bRf) ? 1 : 3;

            }

        }

Clogin.php

function performLogin($sChi1) {
        $this->performLogout();

        // make variables safe
        $sChi1 = $GLOBALS'MySQL']->escape($sChi1);

        $aProfile = $GLOBALS'MySQL']->getRow("SELECT * FROM `addition` WHERE `chiffre1`='{$sChi1}'");
        // $sPassEn = $aProfile'password'];
        $iPid = $aProfile'numero_calcul'];

        $_SESSION'member_numero_calcul'] = $iPid;
        $_SESSION'member_chiffre1'] = $sChi1;
    }

Comme "numero_calcul" est un int et n'est pas poster comment le récupérer?

Merci de m'éclairer

3 réponses


jeanmaki
Auteur
Réponse acceptée

j'ai trouvé! enfin je crois, j'obtiens ce que je voulais en tout cas..

J'ai remplacé

$aProfile = $GLOBALS'MySQL']->getRow("SELECT * FROM `addition` WHERE `chiffre1`='{$sChi1}'");

dans Clogin.php
Par

$aProfile = $GLOBALS'MySQL']->getRow("SELECT * FROM `addition` ORDER BY numero_calcul DESC LIMIT 1");

En effet, je voulais que ma base de donné enregistre des lignes de calcul indépendantes les unes des autres. Or dans le premier "$aprofile" proposé et bien à chaque fois que le même "chiffre1" était enregistré et bien les dernières informations personnelles (nom et adresse email) remplaçaient celles qui étaient enregistrées auparavant.. la solution est donc de passer par numero_calcul car celui-ci est unique à chaque calcul enregistré.

La solution était donc de faire appel au numero_calcul correspondant au dernier calcul enregistré.

Merci

Je comprends pas "créer une session a partir d'un int".
Une session est créée dès que tu fais un session_start(). Elle n'est pas créée a partir de quelque chose. Une fois que tu l'as fait tu peux y stocker tout ce que tu veux comme variable.

Si tu mets bien ton session_start() au début de tes pages, tu peux stocker un id dès la connection, et y accéder par le suite sans qu'il soit posté depuis un formulaire.

jeanmaki
Auteur

je crée ma session grâce a performlogin et ensuite je la récupère comme ceci dans une autre page :

Cprofiles.php

function registerProfile() {
        $sNom = $GLOBALS'MySQL']->escape($_POST'nom']);
        $sPrenom = $GLOBALS'MySQL']->escape($_POST'prenom']);
        $sPseudo = $GLOBALS'MySQL']->escape($_POST'pseudo']);
        $sNaiss = $GLOBALS'MySQL']->escape($_POST'datenaiss']);
        $sEmail = $GLOBALS'MySQL']->escape($_POST'email']);
        $sCEmail = $GLOBALS'MySQL']->escape($_POST'confirmail']);
        $sAdresse = $GLOBALS'MySQL']->escape($_POST'adresse']);
        $iPid = (int)$_SESSION'member_numero_calcul'];
        if ($sNom && $iPid ) {

            $bRg = $GLOBALS'MySQL']->res("UPDATE `addition` SET 

                    `nom` = '{$sNom}',
                    `email` = '{$sEmail}'
                    WHERE `numero_calcul`= '{$iPid}'

                    "
                    );

                if ($sEmail != "" )

    {
            $requete = mysql_query("SELECT nom FROM addition WHERE `numero_calcul`= '{$iPid}' ");
            $ul= mysql_fetch_array($requete);

            $MailTo = "To: ".$ul[nom]." <".$sEmail.">";
            $MailSubject = "message du site monsite.com nom \n\n";
            $From = "From: webmaster <webmaster@gmail.com>";
            $MailBody = "Votre identifiant : ".$ul'nom'];
            mail($MailTo, $MailSubject, $MailBody, $From);
    }           

            return ($bRg) ? 1 : 3;

                // autologin c'est la que l on crée une session cf CLOGIN
                /*$GLOBALS'CLogin']->performLogin($sUsername, $sPassword); (faire comme ceci pour dire le classement a la fin de 
                fin de l'inscription ou alors un return
                )*/

        }
    }

Cela fonctionne. Mais lorsque j'enregistre un calcul un chiffre 1 déjà enregistré dans ma base de donné imaginons :

1+2=3 jean jeanpat@gmail.com --> fonctionne
1+3=4 ---> calcul enregistré mais le nom et l'adresse mail non enregistré, et la nouveau nom et la nouvelle adresse email remplace l'ancienne
car le premier chiffre 1 est présent dans les deux calculs.

C'est pourquoi j'aimerai mettre à jour les informations complémentaires (nom et adresse mail) grâce au numéro_calcul car celui-ci est unique mais le problème c'est qu'il est de type INT dans ma base de donnée et je ne sais pas comment faire appel à lui dans php.

Merci