Enregistrer une valeur NULL (vide) issue d'un formulaire
Lorsque je ne saisis rien dans le champ du formulaire, je souhaite que la base de données SQL indique 'NULL' dans le champ correspondant. Pour celà, j'ai paramétré la ligne de cette donnée à la valeur par défaut = 'NULL'. Malgré ça, c'est la valeur '0' qui est enregistrée.J'ai essayé plusieurs types de variables (text, number dans le formulaire et varchar, float dans la table). Rien n'y fait, Je joins le scripts de mon banc d'essai:?
Je joins d'abord le script du formulaire de saisie
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<article class="sous_centrale4"id="sous_centrale4">
<?php
// Rapport d'erreurs activé:
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
<table>
<form action="testFloatval.php" method="post">
<tr>
<th><label for="variable">VARIABLE</label> :</th>
<td><input type="text" name="variable" id="variable"/></td>
</tr>
<tr>
<th><label for="variable">TYPE</label> :</th>
<td><select type="text" name="type" id="type"/>
<option value="Text">Text</option>
<option value="NumberFloat">NumberFloat</option>
<option value="NumberVarchar">NumberVarchar</option>
</select></td>
</tr>
<th><label for="Envoyer"></label> </th>
<td><input type="submit" value="ENREGISTRER" /></td>
</form>
</table>
</article>
</html> |
Je joins ensuite le script PhpMySql de transfert vers la bdd
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?php
$variable1=$_POST['variable'];
$variable2= floatval($variable1);
echo '<p>VARIABLE 1 = '.$variable1.'</p>';
echo '<p>VARIABLE 2 = '.$variable2.'</p>';
?>
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=varchar_float;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Rapport d'erreurs activé:
ini_set('display_errors',1);
error_reporting(E_ALL);
$req=$bdd->prepare('INSERT INTO variableForeceeNull (variableText, variableNumberFloat, variableNumberVarchar) VALUES (:variableText, :variableNumberFloat, :variableNumberVarchar)');
$req->execute(array(
'variableText'=>$variable2,
'variableNumberFloat'=>$variable2,
'variableNumberVarchar'=>$variable2
));
?> |
Merci de toute suggestion. CaptainChistian
Enregistrer une valeur NULL (vide) issue d'un formulaire
A l'attention de Seb
J'ai simplifié le script. J'ai tenté d'appliquer la fonction SQL NULLIF() mais ça ne marche pas; Je joins les nouveaux scripts
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<article class="sous_centrale4"id="sous_centrale4">
<?php
// Rapport d'erreurs activé:
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
<table>
<form action="testFloatval.php" method="post">
<tr>
<th><label for="variable">VARIABLE</label> :</th>
<td><input type="text" name="variable" id="variable"/></td>
</tr>
<th><label for="Envoyer"></label> </th>
<td><input type="submit" value="ENREGISTRER" /></td>
</tr>
</form>
</table>
</article>
</html> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <?php
$variable1=$_POST['variable'];
echo '<p>VARIABLE 1 = '.$variable1.'</p>';
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=varchar_float;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Rapport d'erreurs activé:
ini_set('display_errors',1);
error_reporting(E_ALL);
$req=$bdd->prepare('INSERT INTO variableForeceeNull (variableText) VALUES (NULLIF(:variableText,''))');
$req->execute(array(
'variableText'=>$_POST['variable']
));
?> |
Merci de ton aide. Captainchristian