[PHP-MYSQL] J'ai un problème que je n'arrive pas à résoudre SVP

J'ai un problème que je n'arrive pas à résoudre SVP [PHP-MYSQL] - PHP - Programmation

Marsh Posté le 02-05-2003 à 11:21:48    

Bonjour voilà j'ai un soucis pour mon site que je suis en train de réaliser. J'ai déjà fait 2 sites et je n'ai jamais eu ce problème et je vois pas du tout à quoi c'est dû.
 
Quand je fais des "SELECT" il n'y a aucun soucis tout s'affiche bien mais le problème c'est quand j'utilise un formulaire qui est censé faire une mise à jour du profil de l'utilisateur. Voilà ce que me retourne le code php quand je click sur le bouton :

Warning: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\easyphp\www\monsite\fonctions.php on line 35
 
Warning: MySQL Connection Failed: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\easyphp\www\monsite\fonctions.php on line 35
 
Warning: MySQL: A link to the server could not be established in c:\easyphp\www\monsite\fonctions.php on line 35


 
 
A la ligne 35 de mon fonctions.php j'ai ce code là :

mysql_query ($maRequete) ;


 
 
Ma variable $maRequete contient :

update t_membre set pseudo = 'toto' where id = 1


 
 
Si je lance cette requête dans mysql elle passe sans problème.
Je vois pas du tout le pb :(
pourtant le user est bien root, le serveur est localhost et il n'y a aucun mot de passe :(
 
Si quelqu'un pouvait m'aider ça serait cool pcq je cherche depuis vendredi.

Reply

Marsh Posté le 02-05-2003 à 11:21:48   

Reply

Marsh Posté le 02-05-2003 à 11:37:05    

il faut recharger mysql [:tinostar]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 02-05-2003 à 11:49:16    

Dinbougre888 a écrit :

Bonjour voilà j'ai un soucis pour mon site que je suis en train de réaliser. J'ai déjà fait 2 sites et je n'ai jamais eu ce problème et je vois pas du tout à quoi c'est dû.
 
Quand je fais des "SELECT" il n'y a aucun soucis tout s'affiche bien mais le problème c'est quand j'utilise un formulaire qui est censé faire une mise à jour du profil de l'utilisateur. Voilà ce que me retourne le code php quand je click sur le bouton :

Warning: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\easyphp\www\monsite\fonctions.php on line 35
 
Warning: MySQL Connection Failed: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\easyphp\www\monsite\fonctions.php on line 35
 
Warning: MySQL: A link to the server could not be established in c:\easyphp\www\monsite\fonctions.php on line 35


 
 
A la ligne 35 de mon fonctions.php j'ai ce code là :

mysql_query ($maRequete) ;


 
 
Ma variable $maRequete contient :

update t_membre set pseudo = 'toto' where id = 1


 
 
Si je lance cette requête dans mysql elle passe sans problème.
Je vois pas du tout le pb :(
pourtant le user est bien root, le serveur est localhost et il n'y a aucun mot de passe :(
 
Si quelqu'un pouvait m'aider ça serait cool pcq je cherche depuis vendredi.


D'après tes erreurs, on dirait que le serveur ne prend pas en compte les infos de connexion à mysql.
Il te dit que tu ne peux pas te connecter en tant ODBC@localhost etc..
Faut que tu reconnectes à la base :  
mysql_connect("localhost","root","" );

Reply

Marsh Posté le 02-05-2003 à 11:54:58    

est-ce que tu as donné les droits en INSERT à l'utilisateur que tu utilises sur la base en question ?  :sarcastic:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 02-05-2003 à 12:10:08    

backdafuckup a écrit :


D'après tes erreurs, on dirait que le serveur ne prend pas en compte les infos de connexion à mysql.
Il te dit que tu ne peux pas te connecter en tant ODBC@localhost etc..
Faut que tu reconnectes à la base :  
mysql_connect("localhost","root","" );


 
mais pk il faut me reconnecter ? puisque si à la suite de ça je fais un click sur un menu ki m'affiche des infos de mysql ça marche sans pb donc la connexion est encore là je pense :(

Reply

Marsh Posté le 02-05-2003 à 12:11:18    

simogeo a écrit :

est-ce que tu as donné les droits en INSERT à l'utilisateur que tu utilises sur la base en question ?  :sarcastic:  


 
je viens de regarder et tout est coché :(
 

Modifier  Effacer  Autres privilèges  localhost  root  Non  Select Insert Update Delete Create Drop Reload Shutdown Process File Grant References Index Alter  

Reply

Marsh Posté le 02-05-2003 à 13:53:47    

tiens une question, pk eskil me met :

Accès refusé pour l'utilisateur: 'ODBC@localhost'


 
pk le ODBC?

Reply

Marsh Posté le 02-05-2003 à 13:57:54    

Dinbougre888 a écrit :

tiens une question, pk eskil me met :

Accès refusé pour l'utilisateur: 'ODBC@localhost'


 
pk le ODBC?  


 
hello ...  
ben c'est plutôt a toi qu'il faut le demander  :heink:  
c'est toi qui gères les utilisateurs.....
t'as des drivers ODBC sur ta machine ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 02-05-2003 à 14:13:53    

Dinbougre888 a écrit :

tiens une question, pk eskil me met :

Accès refusé pour l'utilisateur: 'ODBC@localhost'


 
pk le ODBC?  


ODBC est aussi l'utilisateur mis par défaut sur easyphp (je connais que celui la)

Reply

Marsh Posté le 02-05-2003 à 14:19:39    

backdafuckup a écrit :


ODBC est aussi l'utilisateur mis par défaut sur easyphp (je connais que celui la)
 


 
 
backdafuckup   [:troa]  
ca serait pas une grosse connerie ça ? :sarcastic:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 02-05-2003 à 14:19:39   

Reply

Marsh Posté le 02-05-2003 à 14:24:45    

simogeo a écrit :


 
 
backdafuckup   [:troa]  
ca serait pas une grosse connerie ça ? :sarcastic:  


ben vu que d'habitude c'est root@localhost, et que j'ai eu droit a "impossible gnagnagna ODBC@localhost", j'en ai déduit que, en l'absence du nom d'user, easyphp remplace par ODBC... c'est tout
 
 
 
EDIT:
Dinbougre888> Tu as quoi dans les 5 lignes précédant la ligne 35 ? Si tu pouvais le poster, il y a peut etre une erreur qui t'a échappé et qu'on pourrait déceler...


Message édité par backdafuckup le 02-05-2003 à 14:50:24
Reply

Marsh Posté le 02-05-2003 à 15:01:46    

function Sql_Maj_Profil($profil_id, $pseudo, $pays, $ville, $dt_naissance, $icq, $msn, $mail, $connexion, $fai) {
 $reqsql = "update t_membre set " ;
 $reqsql = $reqsql . "pseudo = '$pseudo', " ;  
 $reqsql = $reqsql . "pays = '$pays', " ;
 $reqsql = $reqsql . "ville = '$ville', " ;
 $reqsql = $reqsql . "dt_naissance = '$dt_naissance', " ;
 $reqsql = $reqsql . "icq = '$icq', " ;
 $reqsql = $reqsql . "msn = '$msn', " ;
 $reqsql = $reqsql . "mail = '$mail', " ;
 $reqsql = $reqsql . "connexion = '$connexion', " ;
 $reqsql = $reqsql . "fai = '$fai' " ;
 $reqsql = $reqsql . "where obj_id = $profil_id" ;  
 mysql_query ($reqsql) ;
}


 
Ma ligne 35 correspond à  

mysql_query ($reqsql) ;


 
En fait dans ma question j'ai raccourci la requête et voici la requête dans la totalité. Toutes les variables sont bien passés en paramètres pourtant donc pas d'histoire de variable global à déclaré ou quoi que ce soit.
 
ps : dans l'action de mon formulaire j'ai ceci  

<form method="post" action="action.php?page=maj_profil">


 
dans action.php j'ai une condition qui est la suivante

if ($page=="maj_profil" ) {
   Sql_Maj_Profil (...) ;
}


 
et j'ai regardé toutes les variables sont bien passés :(

Reply

Marsh Posté le 02-05-2003 à 15:10:06    

Dinbougre888 a écrit :

function Sql_Maj_Profil($profil_id, $pseudo, $pays, $ville, $dt_naissance, $icq, $msn, $mail, $connexion, $fai) {
 $reqsql = "update t_membre set " ;
 $reqsql = $reqsql . "pseudo = '$pseudo', " ;  
 $reqsql = $reqsql . "pays = '$pays', " ;
 $reqsql = $reqsql . "ville = '$ville', " ;
 $reqsql = $reqsql . "dt_naissance = '$dt_naissance', " ;
 $reqsql = $reqsql . "icq = '$icq', " ;
 $reqsql = $reqsql . "msn = '$msn', " ;
 $reqsql = $reqsql . "mail = '$mail', " ;
 $reqsql = $reqsql . "connexion = '$connexion', " ;
 $reqsql = $reqsql . "fai = '$fai' " ;
 $reqsql = $reqsql . "where obj_id = $profil_id" ;  
 mysql_query ($reqsql) ;
}


 
Ma ligne 35 correspond à  

mysql_query ($reqsql) ;


 
En fait dans ma question j'ai raccourci la requête et voici la requête dans la totalité. Toutes les variables sont bien passés en paramètres pourtant donc pas d'histoire de variable global à déclaré ou quoi que ce soit.
 
ps : dans l'action de mon formulaire j'ai ceci  

<form method="post" action="action.php?page=maj_profil">


 
dans action.php j'ai une condition qui est la suivante

if ($page=="maj_profil" ) {
   Sql_Maj_Profil (...) ;
}


 
et j'ai regardé toutes les variables sont bien passés :(


 
La a froid, je ne vois pas d'erreur. Afin d'éviter d'éventuelles erreurs de syntaxe, je préfère ne faire qu'un seul update à la fois (enfin c'est mon choix, bon ou mauvais), mais ca ne résout en rien ton problème.
Il y a deux raisons à ton erreur : erreur de ta requete (mais ca m'étonnerai)
                                   la connexion avec la base n'a pas été correctement établie
 
Pour ce dernier cas, j'avais été obligé, pour mon dernier site, à faire passer les paramètres $user, $mdp, $host $db dans toutes mes pages (c'était avant que je ne découvre les variables de cession). Bref, chaque page a besoin de se connecter à la base...
Après je vois pas

Reply

Marsh Posté le 02-05-2003 à 15:14:43    

on veut le echo de ta requête .... :bounce:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 02-05-2003 à 16:00:37    

Voici le echo de la requête :
 

update t_membre set pseudo = 'Dinbougre', pays = 'France', ville = 'Paris', dt_naissance = '', icq = '13511751', msn = 'dinbougre@hotmail.com', mail = 'dinbougre@hotmail.com', connexion = 'ADSL', fai = 'Wanadoo' where obj_id = 1


 
mais il n'y a pas d'erreur dedans j'en suis sûr pcq je l'ai passé sous mysql et la modif se passe sans soucis.
 
Par contre j'avais utilisé une première méthode en utilisant des fonctions génériques.
voici ma fonction de connexion à la base à l'époque :

function m_Sql_OuvreCn($CnStr,$Uid="",$Pwd="",$Db="" ) {
 global $cnx_id ;  
 $cnx_id = mysql_connect($CnStr,$Uid,$Pwd) ;
 if ($Db<>"" ) mysql_select_db($Db,$cnx_id) ;
}


 
et je l'appellai dans mon index.php comme ceci :

m_Sql_OuvreCn($cnx_srv, $cnx_uid, $cnx_pwd, $cnx_db) ;


 
Et sur le site pour mon boulot ça passe sans pb à la différence qu'au lieu d'utiliser mysql_connect j'utilise mssql_connect. Pour mon site perso juste en changeant ça, ça avait l'air de marché jusqu'à ce formulaire :(
 
Et j'avais fait un echo de mon $cnx_id qui normalement me retourne un truc du style "#Ressource 1" et arrivé au formulaire où il plante il était à vide. Je pense que cela signifie qu'il perde la connexion mais je vois pas pk :(

Reply

Marsh Posté le 02-05-2003 à 16:04:41    

Dinbougre888 a écrit :

Voici le echo de la requête :
 

update t_membre set pseudo = 'Dinbougre', pays = 'France', ville = 'Paris', dt_naissance = '', icq = '13511751', msn = 'dinbougre@hotmail.com', mail = 'dinbougre@hotmail.com', connexion = 'ADSL', fai = 'Wanadoo' where obj_id = 1


 
mais il n'y a pas d'erreur dedans j'en suis sûr pcq je l'ai passé sous mysql et la modif se passe sans soucis.
 
Par contre j'avais utilisé une première méthode en utilisant des fonctions génériques.
voici ma fonction de connexion à la base à l'époque :

function m_Sql_OuvreCn($CnStr,$Uid="",$Pwd="",$Db="" ) {
 global $cnx_id ;  
 $cnx_id = mysql_connect($CnStr,$Uid,$Pwd) ;
 if ($Db<>"" ) mysql_select_db($Db,$cnx_id) ;
}


 
et je l'appellai dans mon index.php comme ceci :

m_Sql_OuvreCn($cnx_srv, $cnx_uid, $cnx_pwd, $cnx_db) ;


 
Et sur le site pour mon boulot ça passe sans pb à la différence qu'au lieu d'utiliser mysql_connect j'utilise mssql_connect. Pour mon site perso juste en changeant ça, ça avait l'air de marché jusqu'à ce formulaire :(
 
Et j'avais fait un echo de mon $cnx_id qui normalement me retourne un truc du style "#Ressource 1" et arrivé au formulaire où il plante il était à vide. Je pense que cela signifie qu'il perde la connexion mais je vois pas pk :(


 
C'est au niveau du passage de tes paramètres. Ils sont vides à cause de l'en tete de ta fonction (qui met par défaut les paramètres à "" ).
le #ressource1 est le resultat d'une requete de selection :  
 
$var = mysql_query("select * from machin" );
echo $var; // affiche "#Ressource1"

Reply

Marsh Posté le 02-05-2003 à 16:20:17    

backdafuckup a écrit :


 
C'est au niveau du passage de tes paramètres. Ils sont vides à cause de l'en tete de ta fonction (qui met par défaut les paramètres à "" ).
le #ressource1 est le resultat d'une requete de selection :  
 
$var = mysql_query("select * from machin" );
echo $var; // affiche "#Ressource1"


 
oui mais cette fonction est appelé une fois au début du index.php et c'est tout. A mon travail je fais exactement la même chose et ça passe sans problème.
En plus je lui envoie une valeur donc le pb n'est pas ici. Le pb se trouve o moment où l'on arrive dans la fonction Sql_Modif_Profil où l'on n'a plus la connexion apparement :(

Reply

Marsh Posté le 02-05-2003 à 16:25:12    

Dinbougre888 a écrit :


 
oui mais cette fonction est appelé une fois au début du index.php et c'est tout. A mon travail je fais exactement la même chose et ça passe sans problème.
En plus je lui envoie une valeur donc le pb n'est pas ici. Le pb se trouve o moment où l'on arrive dans la fonction Sql_Modif_Profil où l'on n'a plus la connexion apparement :(


 
Sql_Modif_Profil elle est dans index.php ou dans une autre feuille ?
Parce qu'il faut toujours que tes $cnx_blabla soient ou passés en paramètres par un form ou bien des variables de session.

Reply

Marsh Posté le 02-05-2003 à 17:00:30    

backdafuckup a écrit :


 
Sql_Modif_Profil elle est dans index.php ou dans une autre feuille ?
Parce qu'il faut toujours que tes $cnx_blabla soient ou passés en paramètres par un form ou bien des variables de session.


 
Sql_Modif_Profil est dans une autre page qui s'appel FONCTIONS.PHP.
Je mets

global $cnx_id ;  


dans la fonction Sql_Modif_Profil c'est bien ça?

Reply

Marsh Posté le 02-05-2003 à 17:06:18    

Dinbougre888 a écrit :


 
Sql_Modif_Profil est dans une autre page qui s'appel FONCTIONS.PHP.
Je mets

global $cnx_id ;  


dans la fonction Sql_Modif_Profil c'est bien ça?


je ne sais pas, je n'ai jamais utilisé "global".
Moi je faisais des variables de cession, c'est plus simple, et en plus il n'y a besoin ni de les déclarer ni de les faire passer de feuille en feuille (ce qui peut génerer des oublis, donc des corrections incessantes)

Reply

Marsh Posté le 02-05-2003 à 17:08:04    

Voilà la méthode ci-dessus était l'ancienne méthode.
Je vous mets maintenant le début de mon index.php
 

<?
 $cnx = mysql_connect($url,$u,$p) or die("impossible de se connecter" ) ;      
 mysql_select_db($db) or die("impossible d'accéder à la base de données" ) ;    
 echo "connexion id => " . $cnx;
?>


 
Et mon

echo "connexion id => " . $cnx;


me retourne

connexion id => Resource id #1


quand je click sur une page qui m'affiche des infos qui sont dans la base de données. Et kan je click sur le bouton de mon formulaire qui fait la mise à jour j'ai toujours l'erreur mais mon connexion id me retourne tjrs Resource id #1 donc la connexion est encore là ou koi? :cry:

Reply

Marsh Posté le 02-05-2003 à 17:11:03    

Dinbougre888 a écrit :

Voilà la méthode ci-dessus était l'ancienne méthode.
Je vous mets maintenant le début de mon index.php
 

<?
 $cnx = mysql_connect($url,$u,$p) or die("impossible de se connecter" ) ;      
 mysql_select_db($db) or die("impossible d'accéder à la base de données" ) ;    
 echo "connexion id => " . $cnx;
?>


 
Et mon

echo "connexion id => " . $cnx;


me retourne

connexion id => Resource id #1


quand je click sur une page qui m'affiche des infos qui sont dans la base de données. Et kan je click sur le bouton de mon formulaire qui fait la mise à jour j'ai toujours l'erreur mais mon connexion id me retourne tjrs Resource id #1 donc la connexion est encore là ou koi? :cry:


 
Comme je te l'ai dit Ressource id#1 ne renseigne pas sur la connexion, la requete a été effectuée, et ce "Ressource..." est stocké ainsi. Si la requete de connexion avait échoué, $cnx contiendrait ce que tu as mis dans le die();
 
Essaie de faire une connexion dans la fonction qui te pose problème, dans un premier temps avec des variables, et dans un deuxieme temps en rentrant les vraies valeurs entre guillemets

Reply

Marsh Posté le 02-05-2003 à 17:16:21    

argh ! ça marche :(
 
j'ai rajouté dans ma fonction Sql_Modif_Profil :
 

include("cfg.php" );  
 $cnx = mysql_connect($url,$u,$p) or die("impossible de se connecter" ) ;      
 mysql_select_db($db) or die("impossible d'accéder à la base de données" ) ;  


 
Mon cfg.php contient les valeurs des variables $url, $u, $p, $db
 
Donc c'est bien ça alors il a plus la connexion :(
comment faire pour kil attrape la connexion active? Je trouve ça bof bof de passer ça dans une variable de session :(

Reply

Marsh Posté le 02-05-2003 à 17:18:17    

Dinbougre888 a écrit :

argh ! ça marche :(
 
j'ai rajouté dans ma fonction Sql_Modif_Profil :
 

include("cfg.php" );  
 $cnx = mysql_connect($url,$u,$p) or die("impossible de se connecter" ) ;      
 mysql_select_db($db) or die("impossible d'accéder à la base de données" ) ;  


 
Mon cfg.php contient les valeurs des variables $url, $u, $p, $db
 
Donc c'est bien ça alors il a plus la connexion :(
comment faire pour kil attrape la connexion active? Je trouve ça bof bof de passer ça dans une variable de session :(


 
ben il faut lui passer l'identifiant de connexion en parametres  [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 02-05-2003 à 17:26:34    

Dinbougre888 a écrit :

argh ! ça marche :(
 
j'ai rajouté dans ma fonction Sql_Modif_Profil :
 

include("cfg.php" );  
 $cnx = mysql_connect($url,$u,$p) or die("impossible de se connecter" ) ;      
 mysql_select_db($db) or die("impossible d'accéder à la base de données" ) ;  


 
Mon cfg.php contient les valeurs des variables $url, $u, $p, $db
 
Donc c'est bien ça alors il a plus la connexion :(
comment faire pour kil attrape la connexion active? Je trouve ça bof bof de passer ça dans une variable de session :(


 
moi je trouve ca très pratique [:spamafote]
Car ce sont des valeurs (root, localhost, password, database) qui sont réutilisées dès qu'il y a communication avec la base, donc dans presque toutes les pages !
C'est pour ca que les variables de session sont la !
Sinon faut passer en paramètre de feuille à feuille, de fonction à fonction :/

Reply

Marsh Posté le 02-05-2003 à 17:34:40    

ahhhhhhhhhhhhhhh j'ai trouvé !
Je sais pk ça marche à mon boulot et pas chez moi :D
 
tin chui trop con putain :fou: j'y suis dessus depuis vendredi !!!
 
En fait sur mon index.php là où je fais le
 

$cnx = mysql_connect($url,$u,$p) or die("impossible de se connecter" ) ;      
 mysql_select_db($db) or die("impossible d'accéder à la base de données" ) ;


 
j'ai oublié de vous précisez ke juste avant ça y a un include de ma page qui fait appel à la fonction Sql_Modif_Profil. En fait fallait faire le include après la connexion :(
chui vrmt trop con pcq c'est logique comme truc !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed