J'ai un problème que je n'arrive pas à résoudre SVP [PHP-MYSQL] - PHP - Programmation
Marsh Posté le 02-05-2003 à 11:37:05
il faut recharger mysql
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û.
|
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","" );
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 ?
Marsh Posté le 02-05-2003 à 12:10:08
backdafuckup a écrit : |
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
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 ? |
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 |
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?
Marsh Posté le 02-05-2003 à 13:57:54
Dinbougre888 a écrit : tiens une question, pk eskil me met :
|
hello ...
ben c'est plutôt a toi qu'il faut le demander
c'est toi qui gères les utilisateurs.....
t'as des drivers ODBC sur ta machine ?
Marsh Posté le 02-05-2003 à 14:13:53
Dinbougre888 a écrit : tiens une question, pk eskil me met :
|
ODBC est aussi l'utilisateur mis par défaut sur easyphp (je connais que celui la)
Marsh Posté le 02-05-2003 à 14:19:39
backdafuckup a écrit : |
backdafuckup
ca serait pas une grosse connerie ça ?
Marsh Posté le 02-05-2003 à 14:24:45
simogeo a écrit : |
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...
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) { |
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" ) { |
et j'ai regardé toutes les variables sont bien passés
Marsh Posté le 02-05-2003 à 15:10:06
Dinbougre888 a écrit :
|
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
Marsh Posté le 02-05-2003 à 15:14:43
on veut le echo de ta requête ....
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="" ) { |
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
Marsh Posté le 02-05-2003 à 16:04:41
Dinbougre888 a écrit : Voici le echo de la requête :
|
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"
Marsh Posté le 02-05-2003 à 16:20:17
backdafuckup 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
Marsh Posté le 02-05-2003 à 16:25:12
Dinbougre888 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.
Marsh Posté le 02-05-2003 à 17:00:30
backdafuckup 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?
Marsh Posté le 02-05-2003 à 17:06:18
Dinbougre888 a écrit :
|
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)
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
<? |
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?
Marsh Posté le 02-05-2003 à 17:11:03
Dinbougre888 a écrit : Voilà la méthode ci-dessus était l'ancienne méthode.
|
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
Marsh Posté le 02-05-2003 à 17:16:21
argh ! ça marche
j'ai rajouté dans ma fonction Sql_Modif_Profil :
include("cfg.php" ); |
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
Marsh Posté le 02-05-2003 à 17:18:17
Dinbougre888 a écrit : argh ! ça marche
|
ben il faut lui passer l'identifiant de connexion en parametres
Marsh Posté le 02-05-2003 à 17:26:34
Dinbougre888 a écrit : argh ! ça marche
|
moi je trouve ca très pratique
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
Marsh Posté le 02-05-2003 à 17:34:40
ahhhhhhhhhhhhhhh j'ai trouvé !
Je sais pk ça marche à mon boulot et pas chez moi
tin chui trop con putain 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" ) ; |
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 !
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.