Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème upgrade données avec webmatrix

Sacré Webmatrix

Sujet résolu
    9 février 2012 à 21:32:08

    Bonjour à tous :)

    Je code actuellement sur webmatrix qui est assez génial je dois dire cependant son langage quelque peu différent de ce que l'on apprends sur le tuto du sdz php/mysql fait que ... je bloque un peu sur une requête de modification de ma base de données.

    Ce que j'ai :

    Une base de données qui contient une table appelée questionMembre, qui contient en première colonne questionId, qui s'auto incrémente, et une colonne question et une colonne valide, qui est un booléen.

    Ce que je souhaite faire :

    Afficher toutes les questions (je le fais et ça marche très bien) et en plus j'affiche un bouton à côté de chaque question que j'appelle "valider" si la valeur de "valide" correspondant à la question est 0 et le bouton devient "retirer" si mon booléen valide est à 1. Concernant l'affichage aucun soucis c'est bel et bien la requête qui coince. Je souhaite modifier la valeur de "valide", le passer de 0 à 1 quand je clique sur "valider" et de 1 à 0 quand je clique sur "retirer".

    Le problème


    Ma requête ne me permet de valider qu'une seule fois ! En gros l'étape "mise à jour de ma variable valide de zéro à 1" ne se fait qu'une seule fois ... après de multiples testes je vois bien que c'est ma requête d'upgrade qui pose problème mais je ne trouve pas le soucis c'est pourquoi après avoir bien cherché je m'en remet à vous. J'ai également dl un pdf gratuit d'explications des requêtes avec webmatrix cependant la seule possibilité qu'ils expliquent c'est le passage d'un paramètre par l'url et ça j'aimerai l'éviter ...

    Voici mon code

    <div class="questionReponse">
                                    <fieldset class="question">
                                                                        
                                        <span style="margin-left:30px;">@row.question</span><br />              
                                        <input class="repondre" type="submit" value="Répondre" />
                                         @if(@row.valide==0){
                                            <form method="post" action="">
                                                <input type="hidden" name="truc" id="@row.questionId" value="@row.questionId" />
                                                <input class="repondre" type="submit" value="Validation" />
                                            </form>
                                        }
                                        
                                        @if(@row.valide!=0){
                                            <form method="post" action="">
                                                <input type="hidden" name="truc" value="@row.questionId" />
                                                <input class="repondre" type="submit" value="Retirer" />
                                            </form>
                                        }
                                        
                                    </fieldset>
                                    
                                </div>
    


    ça c'est pour l'affichage, et pour le traitement, ce qui ne va pas :

    @{
        Layout = "~/accueil.cshtml";
        Page.Title = "Accès réservé";
        var db = Database.Open("StarterSite");
        var selectQueryString = "SELECT * FROM questionMembre";
              
        var questionId= Request["questionId"];
                //var range = db.QuerySingle(selectQueryString, questionId);
                
                var row2 = db.QuerySingle(selectQueryString, questionId);
                var id = row2.questionId;
                
                if (IsPost) {
                    id=Request["questionId"];
                    
                    var updateQueryString ="UPDATE questionMembre SET valide=1 WHERE questionId=@0" ;
                    db.Execute(updateQueryString, 1);
                    
                    
                    } 
    }
    


    J'ai essayé pleins de chose donc là je l'avoue c'est un peu brouillon m'enfin :/ ...

    Ici par exemple ça ne modifie QUE la ligne 1 de ma table, donc en gros, j'appuie sur n'importe quel bouton valider, ça mettra la variable de la ligne 1, cad ou questionId = 1, à 1 (valide = 1) puis si je reclique ailleurs pour valider une autre ligne rien ne se passera puisqu'il va trouver à nouveau qu'on lui demande de modif valide à 1 à la ligne 1 or c'est déjà le cas.

    Bref c'est la loose :euh:

    En vous remerciant,
    Flo0 :)
    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2012 à 10:37:46

      salut,
      je ne connaissais pas du tout webmatrix, j'ai donc zieuté un peu sur le net et je suis tombé sur ca :
      http://rdonfack.developpez.com/tutorie [...] t-tout/#LVI-F

      on peut clairement voir un exemple d'insertion dans une bdd

      var sqlreq = "INSERT INTO clients (Nom, Prenom, Email) " +
                      "VALUES (@0, @1, @2)";
      db.Execute(sqlreq, Nom, Prenom, Email);


      à la maniere de PDO, on crée une equete avec l'emplacement des variables, puis on l'execute avec ces variables.

      Dans ton cas :
      var updateQueryString ="UPDATE questionMembre SET valide=1 WHERE questionId=@0" ;
      db.Execute(updateQueryString, 1);


      tu crées bien la requete en mettant la variable "@0", sauf que au moment de l'executer, tu mets "1" comme valeur de variable, la modification se fera donc avec questionId = 1.

      la solution serait, je pense
      db.Execute(updateQueryString, id);

      Enfin je me repete, je ne connais pas du tout webmatrix, il y a peut etre d'autres erreurs.
      • Partager sur Facebook
      • Partager sur Twitter
        10 février 2012 à 13:17:55

        Salut Doel merci de prendre quelques min pour m'aider :)

        Je suis tout à fait d'accord sur le principe j'ai d'ailleurs déjà essayé cela cependant lorsque je fais ça j'ai l'erreur suivante lors de l’exécution :




        Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. 
        
        Détails de l'exception: System.ArgumentNullException: La requête paramétrable attend une valeur de paramètre qui n'est pas fournie.
        Nom du paramètre : 0
        
        Erreur source: 
        
        
        Ligne 20 : 
        Ligne 21 : var updateQueryString ="UPDATE questionMembre SET valide=1 WHERE questionId=@0" ;
        Ligne 22 : db.Execute(updateQueryString, id);
        Ligne 23 : 
        Ligne 24




        j'aurai du le préciser avant veuillez m'excuser.
        Du coup je ne sais trop quoi faire, surtout que d'habitude l'affichage des erreurs me guide mais là ...
        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2012 à 13:37:23

          ah, c'est bizare.
          Ta variable "id" récupère bien la valeur que tu souhaites ?
          Essaye de l'afficher, a la place de la requete pour voir si c'est bien ca.
          Parce que vu l'erreur on dirait que "id" n'a aucune valeur.
          • Partager sur Facebook
          • Partager sur Twitter
            10 février 2012 à 14:11:02

            apparemment id est égal à zéro tout le temps :( ... enfin, il affiche zéro pour id
            • Partager sur Facebook
            • Partager sur Twitter
              10 février 2012 à 14:13:50

              d'ou le probleme, apres effectivement je ne connais pas assez webmatrix pour t'aider plus que ca.
              Regarde du coté de Request["questionId"];

              edit, en supposant que Request est un équivalent de $_POST, et récupére donc le formulaire, ton input à comme nom "truc", donc c'est $_POST['truc'] qu'il aurait fallut utiliser "normalement", peut etre peux tu essayer Request["truc"];
              • Partager sur Facebook
              • Partager sur Twitter
                10 février 2012 à 14:17:54

                Ouep j'vais creuser de ce côté ! Je ne connais pas super bien webmatrix non plus :p En fait en dehors de ça il est d'une simplicité déconcertante et c'est loin d'me déplaire, mais là ... je bute ^^

                En tout cas merci Doel !
                J'repost quand j'ai du nouveau :)
                • Partager sur Facebook
                • Partager sur Twitter
                  12 février 2012 à 14:43:37

                  Non décidément j'ai essayé pleins de choses je n'arrive pas au résultat attendu ...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 février 2012 à 16:49:46

                    ENFIN ça marche ^^ C'était en fait un soucis depuis mon code html dans lequel le "name" d'une balise input ne collait pas avec ce que je demandais de récupérer ... :-°:lol:

                    Du coup j'commence à bien connaître webmatrix :)

                    Si certains ont des soucis j'peux y répondre volontiers ;)

                    A bientôt les zéros et merci :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème upgrade données avec webmatrix

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown