mrbacardi Posté(e) le 20 février 2008 Partager Posté(e) le 20 février 2008 Bonjour, Je début en PHP, le meilleur moyen d'apprendre c'est la pratique, donc je me suis fait un petit jeu. J'ai un problème avec ma page connection.php qui traite le mot de passe et login de l'utilisateur. Dans cette page, j'en profite pour lire un champ connection qui contient le timestamp de la dernière connection pour le comparer plus tard avec le timestamp du moment. Pour être exact, j'utilise le timestamp pour calculer la date, en comparant les dates, je peux vérifier qu'il s'agit d'un jour différent ou pas (c'est pour un système de MAJ "quotidienne" d'un compteur à 10). Ensuite, la valeur de connection est écrit dans dernière_connection et le timestamp du moment remplace la valeur de connection. Voici le code, ca sera peut-être plus clair... mysql_connect("XXX", "XXX", "XXX"); mysql_select_db("microcircus"); $reponse = mysql_query("SELECT * FROM stat WHERE pseudo = '".$_SESSION['pseudo']."'"); $donnees = mysql_fetch_array($reponse); $timestamp_auj = time(); $timestamp_der = $donnees['connection']; mysql_query("UPDATE stat SET connection='" . $timestamp_auj . "' WHERE pseudo='" .$_SESSION['pseudo'] . "'"); mysql_query("UPDATE stat SET derniere_connection='" . $timestamp_der . "' WHERE pseudo='" .$_SESSION['pseudo'] . "'"); mysql_close(); Le problème c'est que la valeur de connection reste toujours la même. Pour l'instant les deux champs ont par défaut contiennent le timestamp de l'heure de l'inscription sur le site. J'ai modifié manuellement la valeur de derniere_connection et testé. Sa valeur a bien été remplacé par la valeur de connection, mais connection, lui n'a toujours pas été modifié. J'ai l'impression que le fait d'avoir lu sa valeur m'empêche par la suite de le modifier... Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 21 février 2008 Partager Posté(e) le 21 février 2008 Tu es sûr que la valeur est lue ? Si je demande ça, c'est que tu ne vérifies la valeur de retour d'aucune des fonctions que tu appelles. Si tu faisais ainsi, tu serais capable de déterminer à quel moment ton code foire et, avec l'aide de la fonction mysql_error(), tu pourrais sans doute même pouvoir voir le problème toi-même. Au pire, tu pourras redemander ici (quelqu'un sera capable de t'aider en t'indiquant d'où peut provenir l'erreur dans le cas où le message d'erreur te semble abscons). Laisse-nous savoir comment ça se présente. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mrbacardi Posté(e) le 21 février 2008 Auteur Partager Posté(e) le 21 février 2008 Tu es sûr que la valeur est lue ? Si je demande ça, c'est que tu ne vérifies la valeur de retour d'aucune des fonctions que tu appelles. Si tu faisais ainsi, tu serais capable de déterminer à quel moment ton code foire et, avec l'aide de la fonction mysql_error(), tu pourrais sans doute même pouvoir voir le problème toi-même. Au pire, tu pourras redemander ici (quelqu'un sera capable de t'aider en t'indiquant d'où peut provenir l'erreur dans le cas où le message d'erreur te semble abscons).Laisse-nous savoir comment ça se présente. J'ai fait quelques test en vérifiant les valeurs des variables $timestamp_der et $timestamp_auj avec un bête echo. J'ai aussi réécrit manuellement dans la base de données via phpadmin pour vérifier s'il y avait bien modification. Et seul la valeur du champ "dernier_connection" a été modifié. J'étais pas chez moi ces deux derniers jours, donc j'ai pas pu encore test le mysql_error. Voilà la bête erreur que j'ai... You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'connection = '1203615943' WHERE pseudo='mrbacardi'' at line 1 Etrangement, j'ai fait un copier coller de cette requête, j'ai changé connection par derniere_connection et $timestamp_auj par $timestamp_der, et j'ai pas eu d'erreur pour celle-ci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mrbacardi Posté(e) le 21 février 2008 Auteur Partager Posté(e) le 21 février 2008 J'ai trouvé la solution à mon problème. J'ai tout simplement fait une modification manuellement de ma base de données via phpadmin. Ce qui m'a donné la requête utilisée. Je l'ai ensuite modifiée pour qu'elle corresponde à ce que je voulais. Voilà la requête utilisée par phpadmin: UPDATE `microcircus`.`stat` SET `connection` = '1203343370',`derniere_connection` = '1203343370' WHERE `stat`.`id` =2 Je ne connaissais pas cette syntaxe avec l'utilisation des ` Lien vers le commentaire Partager sur d’autres sites More sharing options...
PiFou86 Posté(e) le 21 février 2008 Partager Posté(e) le 21 février 2008 il manque un espace avant la clause WHERE Lien vers le commentaire Partager sur d’autres sites More sharing options...
mrbacardi Posté(e) le 21 février 2008 Auteur Partager Posté(e) le 21 février 2008 il manque un espace avant la clause WHERE En faisant le copier coller, çà s'est affiché sur 2 lignes, j'ai du supprimer un espace par inadvertance. J'ai fait les tests, çà marche bien, c'est le principal. Cà m'enlève une belle épine du pied. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.