简体   繁体   English

PHP表单检查字段是否为空如果不更改mysql表中的值

[英]PHP form check if fields are empty if not change value in mysql table

Could someone help me with this code!!!谁能帮我这个代码!!! So I'm trying to do a change user info part on my website, there's everything working except the change username part.所以我试图在我的网站上做一个更改用户信息部分,除了更改用户名部分外,一切正常。 In this part I have to check if the newUsername is not taken and then change it (if its not already taken), but when I launch my code it doesn't enter the (else if) statement after the (echo "username deja utiliser").在这部分中,我必须检查 newUsername 是否未被占用,然后更改它(如果它尚未被占用),但是当我启动我的代码时,它不会在 (echo "username deja utiliser" 之后输入 (else if) 语句”)。 Can someone explain why it does that and give me a way to correct this problem有人可以解释为什么会这样,并给我一种方法来纠正这个问题

//change.php

$newUsername = $_POST['changeUsername'];
$newNom = $_POST['changeNom'];

$currentId = $_SESSION['id'];
$currentName = $_SESSION['name'];

//fonction that doesn't work
if(empty($newUsername)){
    echo "username is empty";   
    }else if ($stmt = $con->prepare('SELECT username from users where USERNAME = ? ')) {
    $stmt->bind_param('s', $newUsername);
    $stmt->execute();
    $stmt->store_result();
    if ($stmt->num_rows > 0) {
        $stmt->bind_result($checkUsername);
        $stmt->fetch();
        if ($checkUsername === $newUsername) {
           echo "username deja utiliser";
        }else if($stmt = $con->prepare("UPDATE users SET USERNAME = '$newUsername' WHERE ID = ? ")){
            $stmt->bind_param('s', $currentId);
            $stmt->execute();
            echo "les valeur on été modifier";
            session_regenerate_id();
            $_SESSION['name'] = $newUsername;
        }else{
            echo "les valeurs n'ont pas été modifier";
        }
    }
}

//function that works
if(empty($newNom)){
    echo "nom is empty";
}else if($stmt = $con->prepare("UPDATE users SET NOM = '$newNom' WHERE ID = ? ")){
    $stmt->bind_param('s', $currentId);
    $stmt->execute();
    echo "les valeur on été modifier";
}else{
    echo "les valeurs n'ont pas été modifier";
}
    //editProfile.php

    <form action="change.php" method="POST">
     
      <table>
        <tr>
          <td>Username:</td>
          <td>
            <label for="username"></label>
            <input type="text" name="changeUsername" placeholder="<?php echo $_SESSION['name'] ?>" id="changeUsername">
          </td>
        </tr>
        <tr>
          <td>Nom:</td>
          <td>
            <label for="nom"></label>
            <input type="text" name="changeNom" placeholder="<?php echo $nom ?>" id="changeNom">
          </td>
        </tr>
      </table>
    <input type="submit" value="modfier">
    </form>

For info, I changed my code to this and now it works.有关信息,我将代码更改为此,现在可以使用了。

//change username
if(empty($newUsername)){
    echo "username is empty";   
    }else if($newUsername != $_SESSION['name']){
        if($stmt = $con->prepare("UPDATE users SET USERNAME = ? WHERE ID = ? ")){
            $stmt->bind_param('si', $newUsername, $currentId);
            $stmt->execute();
            echo "les valeur on été modifier";
            session_regenerate_id();
            $_SESSION['name'] = $newUsername;
        }else{
            echo "les valeurs n'ont pas été modifier";
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM