PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 22-05-2009 08:49:59

rob_57
Membre
Inscription : 22-05-2009
Messages : 3

[Résolu] PB insert '

Bonjour à tous,

j'utilise le script ci-dessous pour enrichir une table :

$result=mssql_query("INSERT INTO TABLE_TEST  (NOM) VALUES ('".$_POST['val']."')",$conn);

ou $_POST['val'] est un input de type text.

L'enregistrement se passe correctement, cependant quand je réaffecte la valeur enregistrée dans un input, value prend la valeur ' ' et non '' (présence d'un espace si lors de l'enregistrement  rien n'était saisi dans l'input):

<input type="text" name="val" id="val" value=" ">
au lieu de
<input type="text" name="val" id="val" value="">

J'ai testé la requête ci-dessous qui me donne le même résultat (le pb ne provient donc pas de ma variable) :
$result=mssql_query("INSERT INTO TABLE_TEST  (NOM) VALUES ('')",$conn);

Si lors de l'enregistrement je test la valeur de $_POST['val'] que je remplace par null si vide, le problème ne se pose pas.

Avez-vous une explication à m'apporter sur ce fonctionnement?

En vous remerciant par avance.
+

Hors ligne

#2 22-05-2009 09:48:48

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] PB insert '

Hello,

Est ce que tu es sûr de ne pas avoir défini de valeur par défaut dans ton input ? :

<input type="text" name="val" value=" " />

Si tu met un espace dans ton attribut value alors il sera dans ta variable au moment de la soumission du formulaire.

rob_57 a écrit :

Si lors de l'enregistrement je test la valeur de $_POST['val'] que je remplace par null si vide, le problème ne se pose pas.

Est ce que tu peux mettre le test en question s'il te plait ?


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#3 22-05-2009 10:44:04

rob_57
Membre
Inscription : 22-05-2009
Messages : 3

Re : [Résolu] PB insert '

merci de ta réponse.

Ci-dessous un script de test qui présente le pb :

CREATE TABLE TABLE_TEST(
    CHAMP1 varchar(10)
)

<html>
<body>

<?php

$host = "LOCALHOST";
$user ="root";
$password = "";
$base = "TEST";

$conn= mssql_connect($host,$user,$password);
$db=mssql_select_db('TEST',$conn);

$result=mssql_query("INSERT INTO TABLE_TEST (CHAMP1) VALUES ('')",$conn);

$sql=mssql_query("SELECT CHAMP1 FROM TABLE_TEST",$conn);

$i=0;
while($row=mssql_fetch_array($sql)){

    echo '<input type="text" name="val_'.$i.'" id="val_'.$i.'" value="'.$row['CHAMP1'].'"><br>';
   
    $i++;
   
}
       
?>

</body>
</html>

Sauf erreur de ma part j'enregistre '' et ne devrait donc pas avoir un espace à la place dans le value de l'input.

Encore merci.
+

Hors ligne

#4 22-05-2009 11:21:32

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : [Résolu] PB insert '

Papa de quoi,

Petite remarque en passant, pense à utiliser les marqueurs de code à l'avenir lorsque tu poste un script wink

Je pense que ton problème vient du fait que tu essaye d'insérer une valeur vide dans un champs qui n'est pas prévu pour.
Si le champs de ta table peut être vide, il faut que tu le déclare en tant que NULLABLE dans ton SGBD.
Je m'y connait pas bien en Access mais je pense que ta requête de création de table devrait ressembler à ça :

CREATE TABLE TABLE_TEST(
    CHAMP1 varchar(10) default NULL
)

Parce que là du coup je me demande si c'est pas Access qui remplace ta valeur vide par espace pour faire son insertion.
Mais encore une fois je ne suis pas spécialiste d'Access, mais pour moi ton code PHP est bon en tout cas...
Donc essaye déjà de rendre ton champs NULLABLE et au lieu de faire :
INSERT INTO TABLE_TEST (CHAMP1) VALUES ('')
Fais :
INSERT INTO TABLE_TEST (CHAMP1) VALUES (NULL)

Et regarde si ça corrige le problème.
Parce que encore une fois pour moi le pb vient pas du PHP.


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#5 22-05-2009 13:02:18

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] PB insert '

Saluton,

Moralité, une raison de plus pour abstraire les liaisons avec les SGBD avec PDO.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 22-05-2009 14:05:51

rob_57
Membre
Inscription : 22-05-2009
Messages : 3

Re : [Résolu] PB insert '

Merci pour vos réponses.

Le champ de la table est bien défini pour pouvoir accepter des valeurs null (j'ai posté trop vite mon précédent message).

Pour tester, j'ai recréé la table sous Mysql, le problème ne se présente pas avec ce SQBG (je travaille sous SQLSERVER).

Les solutions que vous m'avez présentées fonctionnent (remplacer par null ou PDO) ; je dois très certainement avoir un pb de config quelque-part.

A+

Hors ligne

Pied de page des forums