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

PHP & Base de données Discussion :

Impossible d'écrire dans une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut Impossible d'écrire dans une table
    Bonjour à tous,

    Je vous souhaite mes meilleurs vœux pour cette année 2009

    Allez j'attaque : Je travaille avec le tuto d'a-pellegrini en version simplifier ^^.
    Ma fonction OpenSession() doit venir écrire dans une table. Tout fonctionnait mais un soir j'ai souhaiter renommer une variable et depuis je n'arrive plus à écrire dans la table session.

    Voici ma fonction (en mod DEBUG):

    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
    function openSession($userid) {
    	global $cnxdb;
    //	
    // Suppression de la session en cours
    //
    	define ("QUERY_DELETE_SESSION", sprintf("DELETE FROM `gv_sessions` WHERE `userid` = '$userid';", mysql_real_escape_string($userid)));
    	$result_delete_session = @mysql_query(QUERY_DELETE_SESSION, $cnxdb);
    //
    // Re-génération du sid &récupération de l'ip et de l'user agent
    //
    	session_regenerate_id();
    	$session_id = session_id();
    	$ipadress = getIP();
    //	$useragent = getUserAgent();
    //
    // On insère le nouvel id de session dans la db
    //
    	define ("QUERY_INSERT_SESSION", "INSERT INTO `gv_sessions` (userid, sessionid, ipadress) VALUES ('$userid', '$session_id', '$ipadress');");
    	print QUERY_INSERT_SESSION;
    	if ($result_insert_session = mysql_query(QUERY_INSERT_SESSION, $cnxdb)) {
    		print "requete OK";
    	}
    	else {
    		print mysql_error();
    	}
    	return TRUE;
    }
    Après mon authentification, la fonction m'affiche donc ma requête + requete OK. Je peux donc en conclure que mon enregistrement s'est bien effectué mais en vérifiant dans la base via PHPMyAdmin, aucun enregistrement n'est présent.

    Mais en regardant les stats de la table, je constate que 56o sont utilisés et que j'ai également une perte de 56o. La dernière modification de la table a bien eu lieu lors de ma tentative d'enregistrement.

    Si j'exécute la requête retourné via PHPMyAdmin, ça fonctionne !

    Quelqu'un aurait une piste ?
    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    Tu ne serais pas en train d'écrire dans une autre base ?

    Gillou.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut
    Voici le code qui appelle la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    			$cnxdb = CnxDB($db_host, $db_login, $db_password, $db_name);
     
    			if (is_resource($cnxdb)){
    				if ($userid = CheckIdent($username, $password)) {
    					dbClean();
    					openSession($userid);
    Je récupère l'id sans problème, j'interroge donc la bonne base.
    En plus la date de modification de la table évolue à chaque tentative.. Et pour terminer, $db_login a seulement le droit d'accès à cette base.

  4. #4
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Peut etre une faute de frappe.
    ipadress. en français, adresse prend un "e" et en anglais address prend 2 "d".
    Mais ca devrait mettre un message d'erreur.

    Essaye d'enlever les @, pour voir les messages. Et ajoute error_reporting(E_ALL).

    Enfin, peux tu afficher QUERY_DELETE_SESSION pour vérifier que tu n'enlèves pas le même enregistrement que celui que tu ajoutes après.

    Gillou

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut
    J'ai vérifier pour "ipadress", no souci. J'ai également suivi à la lettre ce que tu m'as indiqué, résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM `gv_sessions` WHERE `userid` = '1';
    INSERT INTO `gv_sessions` (userid, sessionid, ipadress) VALUES ('1', '2d7bfa77e39603d32eca7ecd996eef82', 'x.x.x.x');requete OK
    Merci LeGilou pour le coup de pouce

  6. #6
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    et avant d'éxécuter ces requetes, le sessionid est le même ?

  7. #7
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut
    Je ne suis pas sûr d'avoir compris ta question, le même que la session précédente ?

    J'ouvre une session à l'ouverture de la page. J'efface éventuellement une session oublié si l'utilisateur n'a pas utilisé la fonction déconnexion en fonction de l'id. Ensuite j'en génère une nouvelle session que je vais aller stocker dans la base.

    Si j'insère manuellement mes informations, la première requête (DELETE FROM) fonctionne parfaitement.

  8. #8
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut
    Grâce à l'affichage des erreurs, je me suis rendu compte que dans mon fichier authentification.php j'avais ma constante QUERY_DELETE_SESSION définie 2 fois..
    Visiblement le problème venait de là puisque ça fonctionne maintenant.

    Un grand merci à toi LeGilou

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

Discussions similaires

  1. [AC-2000] Récupérer NOM Utilisateur pour l'écrire dans une table
    Par goupil14 dans le forum Sécurité
    Réponses: 3
    Dernier message: 17/01/2010, 20h31
  2. Lire un fichier text et écrire dans une table oracle
    Par naima2005 dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/12/2007, 11h35
  3. Réponses: 6
    Dernier message: 27/08/2007, 23h29
  4. Impossible d'écrire dans une classe
    Par NoiBe dans le forum NetBeans
    Réponses: 1
    Dernier message: 28/12/2006, 16h33
  5. Réponses: 1
    Dernier message: 18/04/2006, 23h16

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