Aller au menu - Aller au contenu

Problème upgrade données avec webmatrix

Sacré Webmatrix

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne flo0 # Posté le 09/02/2012 à 21:32:08
"[( Free )]" яι∂єя
Avatar

Études : Polytech Paris Sud

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

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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 :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
@{
    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 :)
Édité le 09/02/2012 à 21:33:21 par flo0

Un sportif français qui gagne, est un français ...
Un sportif français qui perd, est un sportif ... pour ne pas dire plus
[Coluche]
 
Publicité # Posté le 09/02/2012 à 21:32:08

Hors ligne Doel # Posté le 10/02/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

Code : Autre
1
2
3
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 :
Code : Autre
1
2
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.
Hors ligne flo0 # Posté le 10/02/2012 à 13:17:55
"[( Free )]" яι∂єя
Avatar

Études : Polytech Paris Sud

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 :




Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
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à ...
Édité le 10/02/2012 à 13:19:46 par flo0

Un sportif français qui gagne, est un français ...
Un sportif français qui perd, est un sportif ... pour ne pas dire plus
[Coluche]
 
Hors ligne Doel # Posté le 10/02/2012 à 13:37:22

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.
Hors ligne flo0 # Posté le 10/02/2012 à 14:11:02
"[( Free )]" яι∂єя
Avatar

Études : Polytech Paris Sud

apparemment id est égal à zéro tout le temps :( ... enfin, il affiche zéro pour id
Édité le 10/02/2012 à 14:12:41 par flo0

Un sportif français qui gagne, est un français ...
Un sportif français qui perd, est un sportif ... pour ne pas dire plus
[Coluche]
 
Hors ligne Doel # Posté le 10/02/2012 à 14:13:49

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"];
Édité le 10/02/2012 à 14:18:31 par Doel
Hors ligne flo0 # Posté le 10/02/2012 à 14:17:53
"[( Free )]" яι∂єя
Avatar

Études : Polytech Paris Sud

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 :)

Un sportif français qui gagne, est un français ...
Un sportif français qui perd, est un sportif ... pour ne pas dire plus
[Coluche]
 
Hors ligne flo0 # Posté le 12/02/2012 à 14:43:36
"[( Free )]" яι∂єя
Avatar

Études : Polytech Paris Sud

Non décidément j'ai essayé pleins de choses je n'arrive pas au résultat attendu ...

Un sportif français qui gagne, est un français ...
Un sportif français qui perd, est un sportif ... pour ne pas dire plus
[Coluche]
 
Hors ligne flo0 # Posté le 22/02/2012 à 16:49:45
"[( Free )]" яι∂єя
Avatar

Études : Polytech Paris Sud

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 :)

Un sportif français qui gagne, est un français ...
Un sportif français qui perd, est un sportif ... pour ne pas dire plus
[Coluche]
 

Retour au forum "Bases de données" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx