Enregistrer valeur case à cocher [Résolu/Fermé]

Signaler
Messages postés
1111
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 novembre 2020
-
Messages postés
1111
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 novembre 2020
-
Bonjour,

J'ai un script qui enregistre la valeur d'une case à cocher dans une table. Si la valeur est nulle dans la table cela ne fonctionne pas; et si la valeur est positive, cela réinitialise bien ma valeur. Aussi je ne vois pas ou se trouve l'erreur si vous voyez quelque chose ?

Merci beaucoup.

 
$updateSQL = sprintf("UPDATE articles SET prix=%s, designation=%s, famillesID=%s, etat='".$_POST['etat']."' WHERE reference=%s",
                       GetSQLValueString($_POST['prix'], "double"),
                       GetSQLValueString($_POST['designation'], "text"),
                       GetSQLValueString($_POST['famillesID'], "int"),
                       GetSQLValueString($_POST['reference'], "text"),
                       GetSQLValueString($_POST['etat'], "int"));

6 réponses


Bonjour

Ton sprintf est incohérent : il y a 4 %s pour 5 variables...
Pourquoi pourquoi mettre $_POST['etat'] au lieu de %s dans la chaîne de format ?

Mais a priori, ça ne devrait pas empêcher ta requête de marcher .
Quand tu parles d'une valeur nulle ou positive, de quelle variable parles-tu ?
As-tu fait un echo $updateSQL; pour t'assurer que la requête est bien celle que tu crois ?
Messages postés
1111
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 novembre 2020
82
Bonjour,

Ma requête fonctionne bien mais quand ma variable etat=0 dans ma table, je ne peux la modifier. Quand elle est égale à 1 (modifiée manuellement dans la table) je peux la désactiver en la décochant dans mon formulaire(=0).

$etat = (isset($_POST['etat']) && $_POST['etat'] == 'on') ? 1 : 0;

$updateSQL = sprintf("UPDATE articles SET prix=%s, designation=%s,    famillesID=%s, etat=%s WHERE reference=%s",
                       GetSQLValueString($_POST['prix'], "double"),
                       GetSQLValueString($_POST['designation'], "text"),
                       GetSQLValueString($_POST['famillesID'], "int"),        
         GetSQLValueString($_POST["etat"], "int"),
         GetSQLValueString($_POST['reference'], "text"));
 }

Tu crées une variable $etat basée sur $_POST['etat'], mais qui vaut 0 ou 1
Mais pour ta requête, au lieu d'utiliser cette variable, tu utilises encore $_POST["etat"]essayes de transformer en int avec la fonction GetSQLValueString.
Je ne connais pas cette fonction car elle n'est pas standard, mais je parie qu'elle te rend toujours 0 si tu lui passes un texte qui ne correspond pas à un nombre.

Utilise donc ta variable $etat à la place de GetSQLValueString($_POST["etat"], "int") dans ta requête, tu l'as créée pour ça (tu ne le savais pas ?)
Messages postés
1111
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 novembre 2020
82
En fait la requête à été générée par DreamWeaver et je pense pouvoir la modifier afin d'ajouter cet état. Mais avec DreamWeaver ou manuellement cela fonctionne toujours pas même en plaçant ma variable dans la requête. Je passe sans doute à côté de quelque chose que je ne vois pas.
Ça ne marche pas, ça ?
if (isset($_POST['etat'])) echo $_POST['etat']; // pour voir la valeur réelle
$etat = (isset($_POST['etat']) && $_POST['etat'] == 'on') ? 1 : 0;

$updateSQL = sprintf("UPDATE articles SET prix=%s, designation=%s,    famillesID=%s, etat=%s WHERE reference=%s",
                       GetSQLValueString($_POST['prix'], "double"),
                       GetSQLValueString($_POST['designation'], "text"),
                       GetSQLValueString($_POST['famillesID'], "int"),        
         $etat,
         GetSQLValueString($_POST['reference'], "text"));
} 
Messages postés
1111
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 novembre 2020
82
Hé si ça marche bien. Merci beaucoup.