Enregistrer valeur case à cocher

Résolu/Fermé
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 - Modifié par barale61 le 17/06/2013 à 14:40
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 - 18 juin 2013 à 15:40
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"));
A voir également:

6 réponses

Utilisateur anonyme
17 juin 2013 à 15:41
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 ?
0
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 110
Modifié par barale61 le 17/06/2013 à 22:04
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"));
 }
0
Utilisateur anonyme
17 juin 2013 à 22:33
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 ?)
0
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 110
18 juin 2013 à 11:50
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ç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"));
} 
0
barale61 Messages postés 1192 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 17 avril 2024 110
18 juin 2013 à 15:40
Hé si ça marche bien. Merci beaucoup.
0