Enregistrer valeur case à cocher

Résolu
barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   -  
barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Utilisateur anonyme
     
    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
  2. barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   113
     
    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
  3. Utilisateur anonyme
     
    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
  4. barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   113
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Ç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
  7. barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   113
     
    Hé si ça marche bien. Merci beaucoup.
    0