Page 1 sur 1

problème en ACCESS

Posté : 26 déc. 2005, 22:38
par Skit
pfiou je risque la dépression sur ce coup là
après des heures à me triturer la cervelle je ne comprends toujours pas dans
 $ID= "SELECT UserID FROM PlayingCharacters WHERE PlayerName='$Perso'";
    $DetectID = odbc_do($cnx, $ID) or die( "odbc_error(ID)" ) ;
	  odbc_close( $cnx);
pourquoi $ID ne prends pas une valeur (un chiffre donc) à la place de prendre SELECT UserID FROM PlayingCharacters WHERE PlayerName='$Perso' comme valeur

quelqun sait me dire où j'ai foiré? snif snif

et joyeux noël en passant (même si c'est un peu tard)

Posté : 26 déc. 2005, 22:44
par ouckileou
Salut,

c'est normal, dans $ID tu met le code de ta requête SQL.
Et c'est la fonction odbc_do qui va exécuter cette requête et renvoyer le résultat dans $DetectID.

Résultat qui sera surement à traiter avec une autre fonction comme odbc_fetch_row pour pouvoir récupérer les valeurs ;)

Posté : 26 déc. 2005, 23:11
par Skit
vi j'avais essayé aussi $DetectID mais le résultat n'était pas mieux
(bon ben ça explique également pourquoi la vérification de mot de passe ne marche pas)

mici beaucoup :-)

Posté : 26 déc. 2005, 23:29
par Skit
Euh... c'est re-moi!

Code : Tout sélectionner

$Ancien = "SELECT Password FROM T4Cusers WHERE Account='$Account'"; $requete2 = odbc_do($cnx, $Ancien) or die( "odbc_error(Ancien)" ) ; $Ancien2= odbc_fetch_row($requete2); echo $Ancien2;
il m'écrit;
1

j'avoue que c'est pas terrible comme mot de passe... cette fois-ci où ai-je foiré? :?

Posté : 27 déc. 2005, 00:15
par Truc
Salut,
as tu regardé la doc pour ces fonctions, tu trouveras par toi meme les explication :wink:

Posté : 27 déc. 2005, 01:29
par Skit
pfiou après un gros travail voila mon code totalement débuggé
seule petite chose qui subsiste c'est que pour une update dans la base de données j'ai besoin de préciser deux paramètres dans le where et il refuse plus d'un paramètre hors je veux définir où User_ID=$ID et FlagID='x'

j'ai essayé la virgule, la parenthèse et le AND
y'a bien une technique qui me permettrait de définir les deux non?

Posté : 27 déc. 2005, 01:30
par ouckileou
Bien sûr que tu peuxmettre 2 conditions

Si tu nous montrais ce que tu as essayé avec le AND ? ça serait plus facile pour t'aider :)

Et quand tu trouves la solution tout seul, poste ton code, ça pourra toujours aider quelqu'un un jour

Posté : 27 déc. 2005, 01:55
par Skit
pour mon système de vérification du compte c'était ça
  //Vérification et reprise du compte:
 $Ancien =  "SELECT Password FROM Users WHERE Account='$Account'";
   $requete2 = odbc_do($cnx, $Ancien) or die( "odbc_error(Ancien)" ) ;
   $requete3=odbc_fetch_row($requete2);
   $Ancien= odbc_result($requete2, "Password");
  //ferme la connection:
  odbc_close( $cnx);
   if ($Password==$Ancien)
   {
   }
  else
   {
   }
vala si ça peut en aider

et mon problème
   $value13 = "UPDATE Flags SET FlagValue=0 WHERE UserID=$ID AND FlagID=30026" ;
il dit qu'il y'a un paramètre de trop :?

Posté : 27 déc. 2005, 02:01
par Skit
désolé pour le double post mais je détaille un peu mon code pour simplifier
  //Vérification et reprise du compte:
 $Ancien =  "SELECT Password FROM Users WHERE Account='$Account'";// Je selectionne la table Password de la base de donnée Users où le champs Account vaut la variable $Account (préalablement entrée par l'utilisateur)
   $requete2 = odbc_do($cnx, $Ancien) or die( "odbc_error(Ancien)" ) ;// Je me connecte à la base par l'ODBC puis j'effectue l'action attachée à la variable $Ancien
   $requete3=odbc_fetch_row($requete2);//Je lui demande d'aller me chercher le numéro de la ligne associée à la $requete2
   $Ancien= odbc_result($requete2, "Password");// je lui demande de placer dans la variable $Ancien la valeur comprise dans la ligne numéro $requete2 et dans le champs nommé Password
  //ferme la connection:
  odbc_close( $cnx);//Je ferme la connection avec l'ODBC
   if ($Password==$Ancien)//Si la valeur $Password corresponds à la valeur $Ancien
   {
   }
  else//Si ce n'est pas le cas
   {
   }

Posté : 27 déc. 2005, 02:06
par ouckileou
On peut voir le message d'erreur ? je comprend pas là

Et utilise plutôt les balises
 que [code] pour poster du code PHP, c'est plus lisible

Inscirs-toi, comme ça tu pourras éditer tes messages ;)
Je le fais pour ceux là

Posté : 27 déc. 2005, 02:16
par Skit
voila voila
donc le message d'erreur
Warning: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu., SQL state 07001 in SQLExecDirect in d:\documents and settings\user\mes documents\phptest\fichier02.php on line 97

Posté : 27 déc. 2005, 02:42
par Truc
tu est sur de l'orthographe des champs de la requete que tu nous a donné ?!
$value13 = "UPDATE Flags SET FlagValue=0 WHERE UserID=$ID AND FlagID=30026" ;

Posté : 27 déc. 2005, 02:54
par ouckileou
Et là il ne dit pas qu'il y en a trop, il dit qu'il n'y en a pas assez :lol:
Et qu'il en attend 1... donc a priori tu ne lui en passes aucun

Essaye donc d'afficher le code SQL de la requête que tu envoies, pour voir ce qu'il y a dedans
$value13 = "UPDATE Flags SET FlagValue=0 WHERE UserID=$ID AND FlagID=30026" ;
echo $value13;
A tous les coups ta variable $ID est vide ;)

Posté : 28 déc. 2005, 22:44
par Skit
non étrangement le probleme venait du fait qu'il y'avait deux conditions après le WHERE

m'enfin merci quand même je me suis arrangé autrement et une bonne année à tous :wink: