使用php和phpmyadmin更改数据库中的日期

使用php和phpmyadmin更改数据库中的日期,php,mysql,Php,Mysql,**大家好,首先我想道歉我的英语不是很好。我目前正在从事数据库和php方面的工作。我解释我的问题,我想在用户每次注册或连接时插入当前日期,用当前日期替换旧日期,然后收集并创建连接历史记录。 谢谢你潜在的帮助 我的数据库有5个字段:1 id,int(11),自动增量 邮件varchar(255) 伪varchar(25) mdp字符(32) 日期 register.php $ AfficherFormulaire=1; //traitement du formulaire: if(iss

**大家好,首先我想道歉我的英语不是很好。我目前正在从事数据库和php方面的工作。我解释我的问题,我想在用户每次注册或连接时插入当前日期,用当前日期替换旧日期,然后收集并创建连接历史记录。 谢谢你潜在的帮助

我的数据库有5个字段:1

  • id,int(11),自动增量
  • 邮件varchar(255)
  • 伪varchar(25)
  • mdp字符(32)
  • 日期
register.php

$ AfficherFormulaire=1;
//traitement du formulaire:   
if(isset($_POST['pseudo'],$_POST['mdp'],$_POST['mail'])){//l'utilisateur à cliqué sur "S'inscrire", on demande donc si les champs sont défini avec "isset"
if(empty($_POST['mail'])){//le champ mail est vide
    echo '<a id="annotation">le champ mail est vide.</a>';
} elseif(empty($_POST['pseudo'])){//le champ pseudo est vide, on arrête l'exécution du script et on affiche un message d'erreur
    echo '<a id="annotation">le champ pseudo est vide.</a>';
} elseif(!preg_match("#^[a-z0-9]+$#",$_POST['pseudo'])){//le champ pseudo est renseigné mais ne convient pas au format qu'on souhaite qu'il soit, soit: que des lettres minuscule + des chiffres (je préfère personnellement enregistrer le pseudo de mes membres en minuscule afin de ne pas avoir deux pseudo identique mais différents comme par exemple: Admin et admin)
    echo '<a id="annotation">Le Pseudo doit être renseigné en lettres minuscules sans accents, sans caractères spéciaux.</a>';
} elseif(strlen($_POST['pseudo'])>15){//le pseudo est trop long, il dépasse 25 caractères
    echo '<a id="annotation">Le pseudo est trop long, il dépasse 15 caractères.</a>';
} elseif(empty($_POST['mdp'])){//le champ mot de passe est vide
    echo '<a id="annotation">Le champ Mot de passe est vide.</a>';
} elseif(mysqli_num_rows(mysqli_query($mysqli,"SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."'"))==1){//on vérifie que ce pseudo n'est pas déjà utilisé par un autre membre
    echo '<a id="annotation">Ce pseudo est déjà utilisé.</a>';
} elseif(mysqli_num_rows(mysqli_query($mysqli,"SELECT * FROM membres WHERE mail='".$_POST['mail']."'"))==1){//on vérifie que ce mail n'est pas déjà utilisé par un autre membre
    echo '<a id="annotation">Ce mail est déjà utilisé.</a>';
} else {
    
    // INSERT INTO membres VALUES('', 'mail', 'pseudo', 'mdp', NOW);
    if(!mysqli_query($mysqli,"INSERT INTO membres SET pseudo='".$_POST['pseudo']."',mail='".$_POST['mail']."', mdp='".md5($_POST['mdp'])."'", ")){
        echo "Une erreur s'est produite: ".mysqli_error($mysqli);
    } else {
        echo '<a id="annotation">Vous êtes inscrit avec succès!</a>';
        header("Location: postedecontrole.php");
    }
}
}
?>

在更新当前时间戳时,将日期列的属性保留为

在连接时更新任何行之前,请从日期列获取值以获取旧日期

我相信这应该行得通

编辑:

注册:注册期间,您将创建一个新行,因此日期列将获得一个值。这是您的注册时间

连接/登录:在同一个表中创建另一列,该列将保留用户的状态,即已登录或已注销。您可以在用户每次登录或注销时更新此状态。日期单元格将得到更新,因为它在更新当前时间戳属性时具有


但是,您可以通过多种方式实现这一点。这只是一种方法。我个人不喜欢cookies/js,因此不建议这样做。

您需要函数日期('Y-m-d'),但我更喜欢microtime(true),并将日期保存为十进制13,3。对于collect,您必须创建另一个表。感谢您的帮助,但是如果我有两个不同的表,我如何才能将成员的昵称与他的日期联系在一起?每个批次都需要一个表,id,date,id\u用户(外键)谢谢您快速回答。我按照您在我的数据库中告诉我的更改,但我不明白您何时告诉我更新行。@Nico现在检查。我已更新我的回复。如果有帮助,请单击回复左侧的复选标记将其变为绿色。:)
session_start(); // à mettre tout en haut du fichier .php, cette fonction                 propre à PHP servira à maintenir la $_SESSION
if(isset($_POST['connexion'])) { // si le bouton "Connexion" est appuyé
// on vérifie que le champ "Pseudo" n'est pas vide
// empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
if(empty($_POST['pseudo'])) {
    echo "Le champ Pseudo est vide.";
} else {
    // on vérifie maintenant si le champ "Mot de passe" n'est pas vide"
    if(empty($_POST['mdp'])) {
        echo "Le champ Mot de passe est vide.";
    } else {
        // les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
        $Pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES, "ISO-8859-1"); // le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
        $MotDePasse = htmlentities($_POST['mdp'], ENT_QUOTES, "ISO-8859-1");
        //on se connecte à la base de données:
        $mysqli = mysqli_connect("localhost", "root", "", "domoserre");
        //on vérifie que la connexion s'effectue correctement:
        if(!$mysqli){
            echo "Erreur de connexion à la base de données.";
        } else {
            // on fait maintenant la requête dans la base de données pour rechercher si ces données existe et correspondent:
            $Requete = mysqli_query($mysqli,"SELECT * FROM membres WHERE pseudo = '".$Pseudo."' AND mdp = '".$MotDePasse."'");//si vous avez enregistré le mot de passe en md5() il vous suffira de faire la vérification en mettant mdp = '".md5($MotDePasse)."' au lieu de mdp = '".$MotDePasse."'
            // si il y a un résultat, mysqli_num_rows() nous donnera alors 1
            // si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
            if(mysqli_num_rows($Requete) == 0) {
                echo "Le pseudo ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
            } else {
                // on ouvre la session avec $_SESSION:
                $_SESSION['pseudo'] = $Pseudo; // la session peut être appelée différemment et son contenu aussi peut être autre chose que le pseudo
                header("Location: postedecontrole.php");
            }
        }
    }
}