2017-08-11 1 views
0

Première création d'un site et je souhaite que cette "page de suivi" (index.php) soit un formulaire HTML dans lequel je soumets mes informations d'entraînement. Après la soumission, je souhaite que la page soit actualisée et prête pour la prochaine soumission. Mon problème est que j'ai une page login.php et le deuxième qu'il va de login.php à mon index.php il insère une ligne nulle dans la base de données. Mes tentatives de solution récentes ont fait en sorte que $ excercisename ne puisse pas être nul, mais en tant que VARCHAR, il est soumis automatiquement à DB. J'ai essayé de fixation, mais à certains des commentaires ne travaille :(Quelqu'un at-il des solutions idéales pour résoudre ce s'il vous plaît? Ne pas poster HTML que je pense que c'est question de PHP? Mais je suis Noob.PHP Insertion automatique des données dans le désagrément de la base de données

<?php 

//Connect to database 
include('database.php'); 

//grab user logged in for database insertion 

    $user_check = $_SESSION['login_user']; 

    $ses_sql = mysqli_query($dbcon,"select username from t_login where username = '$user_check' "); 

    $row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC); 

    $login_session = $row['username']; 

// Create DB Variable 
    $login_session = $row['username']; 
//if(empty($_POST['exercisename'])) {return null;} ELSE {$_POST['excercisename'];} 
//$excercisename = (empty($_POST['$excercisename']) ? $_POST['$excercisename'] : null); 
    $excercisename = (isset($_POST['excercisename']) ? $_POST['excercisename'] : null); 
    $setcount = (isset($_POST['setcount']) ? $_POST['setcount'] : null); 
    $rep1 = (isset($_POST['rep1']) ? $_POST['rep1'] : null); 
    $weight1 = (isset($_POST['number1']) ? $_POST['number1'] : null); 
    $comments = (isset($_POST['comments']) ? $_POST['comments'] : null); 

    $sql = "INSERT INTO t_workout (username, excercisename, setcount, set1reps, set1weight, comments) 
VALUES ('$login_session', '$excercisename', '$setcount', '$rep1', '$weight1', '$comments')"; 

if ($dbcon->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Waiting for entry."; 
    //echo "Error: " . $sql . "<br>" . $dbcon->error; 
} 
$dbcon->close(); 
?> 
+0

Dans vos commentaires, vous avez essayé 'return'. Vous ne pouvez pas l'utiliser si vous n'êtes pas dans une fonction, si vous voulez simplement terminer le script, vous pouvez utiliser 'exit' ou' die'. normalement n'est pas une solution idéale. – jh1711

+2

** Attention ** Votre code contient plusieurs vulnérabilités d'injection SQL. Basculer vers des requêtes paramétrées. – jcaron

Répondre

0

essayez ceci:

if(isset($excercisename) and !empty($excercisename)){ 
    $sql = "INSERT INTO t_workout (username, excercisename, setcount, set1reps, set1weight, comments) 
    VALUES ('$login_session', '$excercisename', '$setcount', '$rep1', '$weight1', '$comments') 
} 

Soyez prudent avec la sécurité, je vois que vous n'utilisez pas pdo ou sql-li pour prévenir les attaques d'injection, c'est basique !!

+1

Vous n'avez pas besoin de 'isset' et'! Empty'. 'empty' vérifie si la variable est définie. – Barmar

+1

De plus, '$ exercisename' est toujours défini. – Barmar

+0

Cela a fonctionné pour moi. J'apprécie vraiment cela :) –