Alors les gars, j'ai un message d'erreur:

Erreur: vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MariaDB pour la bonne syntaxe à utiliser près de '' ')' à la ligne 1


À partir de ces codes, chaque fois que je clique sur le bouton Ajouter
todo.php

<?php
include '../database/database.php';
session_start();

$user_id = $_SESSION['user_id'];

$querydisplay = "SELECT * FROM todo WHERE user_id=$user_id";
$result = mysqli_query($conn, $querydisplay);

?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>To Do List</title>

    <!-- Bootstrap core CSS -->
    <link href="../assets/css/bootstrap.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="../assets/css/custom.css" rel="stylesheet">

  </head>

  <body>

    <div class="container">
      <div class="header clearfix">
        <nav>
          <ul class="nav nav-pills pull-right">
            <li role="presentation" class="active"><a href="#">Home</a></li>
            <li role="presentation"><a href="#">About</a></li>
            <li role="presentation"><a href="#">Contact</a></li>
          </ul>
        </nav>
        <h3 class="text-muted">To Do List <?php echo $_SESSION['name'];?></h3>
      </div>

      <div class="panel panel-default">
        <div class="panel-heading"></div>
        <div class="panel-body">
            <div class="row">
                <div class="col-md-2"></div>
                <div class="col-md-8">
                    <ul class="list-group text-left">
                        <?php while($data=mysqli_fetch_array($result)) :?>
                            <?php if($data['done'] == 0) : ?>
                                <li class="list-group-item"><span class="task_list"><?php echo $data['task'] ?></span><a href="../models/done_process.php?id=<?php echo $data['list_id']?>"><span class="label label-default">Mark As Done</span></a></li>
                            <?php else : ?>
                                <li class="list-group-item"><span class="task_list"><strike><?php echo $data['task'] ?></strike></span><a href="../models/delete_process.php?id=<?php echo $data['list_id']?>"><span class="label label-danger">Delete</span></a></li>
                            <?php endif; ?>
                        <?php endwhile; ?>
                    </ul>

                    <form class="form-horizontal" method="POST" action="../models/newtask_process.php">
                        <div class="form-group">
                            <div class="col-sm-12">
                                <input name="newtask" type="text" class="form-control" placeholder="Enter New Task">
                            </div>
                        </div>                       
                        <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                                <button name="submit" type="submit" class="btn btn-sm btn-primary">Add</button>
                            </div>
                        </div>
                    </form>

                </div>
                <div class="col-md-2"></div>
            </div>
        </div>
        </div>

      <footer class="footer text-center">
        <p>&copy; Company 2017</p>
      </footer>

    </div> <!-- /container -->

  </body>
</html>

newtask_process.php

<?php
include '../database/database.php';
session_start();

if(isset($_POST['submit']))
    $user_id = $_SESSION['user_id'];
    $task = mysqli_real_escape_string($conn, $_POST['newtask']);

if(!isset($user_id) || $user_id = "" || !isset($task) || $task = "")
{
    echo '<script language="javascript">alert("You Write an Empty Task. Process Failed.");
              document.location="../views/todo.php";</script>';
}
else
{
    $queryinsert = "INSERT INTO todo (user_id, task) VALUES ($user_id, '$task')";

    if(mysqli_query($conn, $queryinsert))
    {
        header("Location: ../view/todo.php");
        exit();

    }
    else
    {
        die ('Error : ' .mysqli_error($conn));
    }

}


mysqli_close($conn);

?> 


Aidez-moi à déboguer cette requête d'insertion ou quelque chose comme ça.

Je n'ai même pas encore migré vers la requête de mise à jour ou de suppression.

Je regarde déjà la question similaire comme celle-ci, et je les essaie déjà, mais sans succès,

Il y a peut-être quelque chose qui me manque

Je sais que ce n'est pas un moyen sûr d'exécuter une requête (je n'utilise pas PDO ou quelque chose comme ça).

Mais j'essaie juste de comprendre, peut-être que plus tard je passerai au concept AOP et POO.

-1
phapha pha 1 mai 2017 à 15:50

3 réponses

Meilleure réponse

Comme mentionné dans mon commentaire, cette ligne réécrit vos variables:

if(!isset($user_id) || $user_id = "" || !isset($task) || $task = "")

Modifiez-le pour utiliser la fonction vide à la place:

if(empty($user_id) || empty($task))

À moins que l'un d'entre eux ne soit nul ou nul, cela fonctionnera et vos variables passeront.

2
aynber 1 mai 2017 à 13:23

Cela pourrait fonctionner $querydisplay = "SELECT * FROM todo WHERE user_id='$user_id'";

-2
Learnator 1 mai 2017 à 13:01

Peut-être ceci:

$queryinsert = "INSERT INTO todo (user_id, task) VALUES ('" . $user_id . "', '" . $task . "')";
-2
Arie B. 1 mai 2017 à 13:03