Recupérer une valeur d'une requete

Fermé
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008 - 16 avril 2008 à 13:51
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008 - 16 avril 2008 à 15:21
Bonjour,

J'ai un formulaire, qui après être rempli, les informations sont enregistrées dans une base de donnée sous access.
Pour vérifié qu'un pseudo ne soit pas utilisé 2 fois, j'ai écrit cela :

$dsn="chassetresor";
$lien=odbc_connect($dsn,"","");

$pseudo=$_POST['txtpseudo'];
$mdp=$_POST['txtmdp'];
$mdp2=$_POST['txtmdp2'];
$prenom=$_POST['txtprenom'];
$nom=$_POST['txtnom'];
$classe=$_POST['txtclasse'];
$fonction=$_POST['txtfonction'];
$mail=$_POST['txtmail'];
$prof=$_POST['txtprof'];

$req2 =odbc_result("SELECT Pseudo FROM JOUEUR WHERE Pseudo = '".$pseudo."'");
odbc_exec($lien,$req2);
if ($req2 != $pseudo)
{
$req="INSERT INTO JOUEUR VALUES('".$pseudo."','".$mdp."','".$nom."','".$prenom."','".$mail."','".$classe."','".$fonction."','".$prof."')";
odbc_exec($lien,$req);

echo "Inscription effectuée<br>";
echo " Votre pseudo est : '".$pseudo."', et votre mot de passe est : '".$mdp."'<br>";
}
else
{
echo "Erreur";
}
?>

Je n'arrive pas à insérer la valeur de la requete dans $req2.

Voila le message d'erreur :

Warning: Wrong parameter count for odbc_result() in d:...\valid.php on line 33

Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access]Utilisation non valide de pointeur null , SQL state S1009 in SQLExecDirect in d:...valid.php on line 34

Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez., SQL state 23000 in SQLExecDirect in d:\...valid.php on line 38
Inscription effectuée


Merci de me repondre

4 réponses

Utilisateur anonyme
16 avril 2008 à 14:30
Bonjour,
Warning: Wrong parameter count for odbc_result() in d:...\valid.php on line 33
si la ligne 33 de valid.php correspond à cette ligne :
$req="INSERT INTO JOUEUR VALUES('".$pseudo."','".$mdp."','".$nom."','".$prenom."','".$mail."','".$classe."','".$fonction."','".$pr­of."')";

cel veut dire que le nombre de valeur est différent du nombre de champs dans la table.
0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:32
Ma requête est correcte, elle fonctionne, mais je veux faire afin qu'il soit impossible qu'il y ait 2 fois le même pseudo dans la base de donnée. Merci pour ta réponse
0
Utilisateur anonyme > sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:34
il faut faire une requête pour vérifier s'il n'y est pas déjà
car il semble que pseudo soit indexé ou défini en clé primaire.
0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:35
Je veux justement que le message d'erreur ne soit pas affiché, et que la requête ne soit pas exécuter, mais la, je sèche un peu.
PS la ligne 33 : odbc_exec($lien,$req2);
0
Utilisateur anonyme > sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:38
message n° 3

0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:39
C'est ce que je fais.
Je fais une requête qui cherche si le nom est dans la base; si oui, la variable prend ce nom, et je compare, mais je pense avoir trouver une autre solution, merci pour votre aide.
0
Utilisateur anonyme
16 avril 2008 à 14:42
c'est là if ($req2 != $pseudo)

$req2 n'est sans doute pas le pseudo mais un tableau.
mais si vous avez une autre solution OK
0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008 > Utilisateur anonyme
16 avril 2008 à 14:47
Ma solution fonctionne pas. Je voudrai que $req2 prenne la valeur de la requête ("SELECT Pseudo FROM JOUEUR WHERE Pseudo = '".$pseudo."'");

Comme cela, si le pseudo existe déjà, il en prendra la valeur ce qui me permettra de la comparer, et si il existe pas, je pourrai donc l'ajouter, mais je ne sais pas comment on fait pour affecter à une valeur, le résultat d'une requête avec une base access.
J'ai essayer odbc_result, ou MySQL_query mais cela ne marche pas.

Merci beaucoup de m'aider
0
Utilisateur anonyme > sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:49
avant le if ajoute ce code pour voir ce que renvoit la requête

echo "<pre>"; print_r($req2);echo "</pre>";
on saura alors où est le pseudoi retourné.
0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008 > Utilisateur anonyme
16 avril 2008 à 14:52
Voila le message d'erreur :
Warning: Wrong parameter count for odbc_result() in d:\bts\action pro\girardot\valid.php on line 32

pour cette ligne : $req2 =odbc_result("SELECT Pseudo FROM JOUEUR WHERE Pseudo = '".$pseudo."'");
0
Utilisateur anonyme > sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 14:54
essaies de la décomposer en
$requete = "SELECT Pseudo FROM JOUEUR WHERE Pseudo = '".$pseudo."'");
$req2 =odbc_result($requete);
0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 15:09
Est ce qu'il y a pas un équivalent de ODBC_result, car je pense que cela vient de sa.
0
Utilisateur anonyme
16 avril 2008 à 15:19
perso je travaille sous mysql mais le principe reste le même.

après une connexion à la base, on lance une requête et on récupère un résultat.
voir la syntaxe de ODBC_exec qui est peut être ODBC_do
et ODBC_result

regardes là : http://www.commentcamarche.net/forum/affich 5964376 probleme php access
0
sebounet25 Messages postés 10 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 15:21
Sa change rien, je laisse tombé pour le moment, je chercherai cette nuit. Merci beaucoup
0