Page 1 sur 2

Prob avec fonction de connection

Posté : 17 mai 2007, 18:02
par supercanard
Bonjour,
JE tente de faire une fonction de connection mais je galère... je vois pourtant pas l'erreur. A moins que j'ai mal compris la création de fonctions :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); } connection();
:?

Posté : 17 mai 2007, 18:15
par thehawk
tu n'aurait pas oublier les argument pour la fonctions ?
connection(); 
=> deviendrait :

connection("localhost","root",""); 
Et puis tu as oubliér la de renseigner la variable $base

Posté : 17 mai 2007, 18:25
par supercanard
Les argument....
J'ai oublié de préciser que j'avais déclaré les variables comme ceci :
$serveur= 'blabla' ect... dans un fichier config inclu en haut de page.
Donc il faut que je passe les argument de cette façon ? :

Code : Tout sélectionner

connection($serveur,$utilisateur,ect...);

Posté : 17 mai 2007, 18:38
par thehawk
enfaite dans une fonction seul les varible dite globale peuvent y acceder donc il faut soit declarer tes varibles comme global soit les mettre entre les ()

Posté : 17 mai 2007, 19:47
par supercanard
Sans dire de bêtise je pense que j'ai déjà des variables globales...

Dans mon fichier config :

Code : Tout sélectionner

$serveur= 'sql.blabla.com'; $utilisateur= 'supercanard1'; $passe= 'blabla'; $base= 'supercanard1';
dans mon fichier fonctions :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); }
Et j'apelle tout ça de cette manière :

Code : Tout sélectionner

include '../config.php'; include 'fonctions.php'; connection();
Et j'ai une belle erreur :

Code : Tout sélectionner

Warning: Missing argument 1 for connection() in ./fonctions.php on line 2
suivie e plein d'autres...

Posté : 17 mai 2007, 19:54
par thehawk
une variable global est defini ainsi :

Code : Tout sélectionner

global $obj;

Posté : 17 mai 2007, 20:06
par supercanard
Donc si j'ai bien compris c'est juste dans la fonction qu'il faut faire ceci :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect(global $serveur,global $utilisateur,global $passe); mysql_select_db(global $base,$db); }
Enfin je crois... car j'ai une petite erreur : Parse error: parse error, expecting `')'' in ./fonctions.php on line 2

En tous cas j'aurrais appris quelquechose aujourdhui =) merci

Posté : 17 mai 2007, 20:13
par thehawk
et non malheureux ca servirait a rien ^^

il faut que tu fasse :
global $serveur = '...';

// puis ta fonction de connection :

function connection($serveur,$utilisateur,$passe) {
$db= mysql_connect($serveur,$utilisateur,$passe);
mysql_select_db($base,$db);
}

connection(); 

Posté : 17 mai 2007, 21:09
par supercanard
Toujours une erreur...

Code : Tout sélectionner

Parse error: parse error, expecting `','' or `';'' in ../config.php on line 2
Pourtant rie na signaler :cry:

Posté : 17 mai 2007, 21:51
par thehawk
si tu monter la ligne 2 ca iré plus vite

Posté : 17 mai 2007, 22:06
par supercanard
Ah wi pardon mais en fait c'est la même chose que plus haut ^^

Code : Tout sélectionner

global $serveur= 'sql.blabla.com';

Posté : 17 mai 2007, 23:54
par supercanard
En résumé...

Dans mon fichier config :

Code : Tout sélectionner

global $serveur= 'sql.blabla.com'; global $utilisateur= 'supercanard1'; global $passe= 'blabla'; global $base= 'supercanard1';
dans mon fichier fonctions :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); }
Et on appelle... :

Code : Tout sélectionner

include '../config.php'; include 'fonctions.php'; connection();
Et l'erreur : Parse error: parse error, expecting `','' or `';'' in ../config.php on line 2
la ligne 2 correspond à : global $utilisateur= 'supercanard1';

Soit j'ai rien compris soit ben... je donne ma langue au chat :?

Posté : 18 mai 2007, 00:00
par thehawk
essaie mais vu l'heur j'ai plus les yeux en face des trous
$serveur= 'sql.blabla.com'
global $serveur;
etc

@ demain thehawk

Posté : 18 mai 2007, 00:19
par supercanard
Y'a du mieux :D

Mainenant l'erreur donne :

une serie de : Warning: Missing argument 1 for connection() in ./fonctions.php on line 2

ensuite :

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in ./fonctions.php on line 3

D'ou sort le root@localhost ?? Ma variable $serveur ne passe donc pas...

Et j'ai aussi ça :
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in ./fonctions.php on line 4

C'ets donc dans ma fonction que ça cloche maintenant non ?

Code : Tout sélectionner

<?php function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); } ?>

Posté : 18 mai 2007, 01:35
par Sékiltoyai
Quand tu appelles les fonction mysql_connect() ou mysql_select_db(), tu les appelles sans arguments ? En fait, php n'est pas devin, il n'est pas encore capable de deviner les arguments des fonctions tout seul, donc de la même manière qu'aux fonctions prédéfinies, tu passes des arguments, tu dois aussi en passer dans tes propres fonctions.

Prenons une fonction qui aura été définie ainsi :
function machin($arg1, $arg2)
{
return arg1*$arg2;
}
Elle devra être appelée ainsi :
$truc=machin($var1, $arg2);
Ou bien ainsi :
echo machin(5, 6);
Et comme tu as vu, le nom des arguments n'a aucune influence. C'est à dire que les arguments de la fonctions sont des variables qui n'existent que dans la fonction :
function machin($arg1)
{
echo $arg1; // OK, $arg1 est défini à l'intérieur de la fonction, car elle a été définie lors de l'appel de la fonction.
$var='test';
echo $var; // OK, on vient juste de définir la variable.
}
echo $var; //erreur, ce n'est pas défini ici, ca n'était défini que dans la fonction
echo $arg1; //idem
Bref, le nom de l'argument de la fonction ne sert qu'à permettre l'utilisation de l'argument dans la fonction.

Je t'invite à lire le manuel pour plus de renseignements. http://fr2.php.net/manual/fr/functions.arguments.php