[RESOLU] Fonction de connexion a une base de donnee

Invité
Invité n'ayant pas de compte PHPfrance

15 août 2008, 01:06

bonjour,

J'ai mis une fonction de connexion a une base de donnee, mais ca aura l aire de ne pas marcher, ca me donne l'erreur "Erreur:":
<?php 
function connexion() 
{ 
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() 

);
mysql_select_db($db) or die ('Erreur :'.mysql_error());
}

?> 
<?
$host = '';
$user = '';
$pass = '';
$db = '';

include ("functiontest.php");

connexion(); 

echo "connexion a $host reussi";
?>

Mammouth du PHP | 959 Messages

15 août 2008, 04:01

Je pense que c'est parce-que tes varaibles qui contiennent tes identifiants de connexion à la BdD sont or de ta fonction, essais de faire comme ça :

fichier functions.php (par exemple)
<?php
function connexion(){ 

	$host = '...';
	$user = '...';
	$pass = '...';
	$db = '...'; 

	$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
	mysql_select_db($db, $link) or die ('Erreur :'.mysql_error());
}
?>
ton fichier "normal":
<?php
/* Inclusion du fichier de fonctions */
include('./functions.php');

// Connexion à la base
connexion();

/*
 * Tes requêtes etc...
 */

// Fermeture de la connexion à la BdD
mysql_close($link);
?>
Ça devrait marcher :)

Invité
Invité n'ayant pas de compte PHPfrance

15 août 2008, 16:04

Code : Tout sélectionner

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in ...... on line 13 [quote][/quote]

Mammouth du PHP | 959 Messages

15 août 2008, 16:11

Alors essaie d'enlever le $link dans le mysql_close()...

Invité
Invité n'ayant pas de compte PHPfrance

15 août 2008, 16:20

C fait, je pense que je dois placer mes info de login $host,.. dans le 2eme fichier qui appelle a ma fonction, j ai mis ainsi:
<?php
/* Inclusion du fichier de fonctions */
include('functions.php');

// Connexion à la base
connexion();

echo 'connexion a' .$host. 'resussie';


// Fermeture de la connexion à la BdD
mysql_close();
?> 

donne: connexion a resussie

Mammouth du PHP | 959 Messages

15 août 2008, 16:27

$host ne renvoi rien à l'extérieur de ta fonction car dans les fonctions, par défauts, les variables sont en privé, il faut les définir en global pour que ça marche :)

Invité
Invité n'ayant pas de compte PHPfrance

15 août 2008, 16:45

ca veut dire que je dois les declarer en chaque page que je declare ma fonction?

Mammouth du PHP | 959 Messages

15 août 2008, 17:33


ViPHP
ViPHP | 4674 Messages

15 août 2008, 19:44

Hey :),

Attention, les variables ne sont pas déclarées en privé mais en local (pas la même notion).
En programmation fonctionnelle (et autres) on a la notion de portée de variable. Quand tu déclares une variable dans une fonction, elle ne serait pas disponible à l'extérieure de la fonction. De la même manière qu'une variable déclarée dans une boucle ne sera pas disponible à l'extérieure, etc.

Attention avec l'utilisation des variables globales, ça peut être dangereux dans certains cas. On préférera ne pas mettre de données sensibles en global. On pourra par contre utiliser des constantes définies à la racine de l'application.

Chrislabricole — en parlant de variable privée — a sans doute fait une confusion avec la visibilité des données en programmation orientée objet.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Invité
Invité n'ayant pas de compte PHPfrance

16 août 2008, 07:40

Hey :),

Attention, les variables ne sont pas déclarées en privé mais en local (pas la même notion).
En programmation fonctionnelle (et autres) on a la notion de portée de variable. Quand tu déclares une variable dans une fonction, elle ne serait pas disponible à l'extérieure de la fonction. De la même manière qu'une variable déclarée dans une boucle ne sera pas disponible à l'extérieure, etc.

Attention avec l'utilisation des variables globales, ça peut être dangereux dans certains cas. On préférera ne pas mettre de données sensibles en global. On pourra par contre utiliser des constantes définies à la racine de l'application.

Chrislabricole — en parlant de variable privée — a sans doute fait une confusion avec la visibilité des données en programmation orientée objet.
ca veut dire je dois mettre mes variable comme suite:
<?php
define("host", "localhost");
define("user", "username");
define("password", "****");
define("db", "dbase");
?>


ViPHP
AB
ViPHP | 5818 Messages

16 août 2008, 09:04

On a l'habitude de mettre les constantes en majuscules.

Maintenant tu t'embêtes pas mal pour rien puisqu'en utilisation courante tu n'as généralement pas à afficher echo 'connexion a' .$host. 'resussie';
mais tu affiches directement le résultat de ta requête. Donc pas besoin de $host qui est définie en local dans la fonction connexion(); Ou si tu y tiens vraiment tu peux simplement mettre
<?php
/* Inclusion du fichier de fonctions */
include('functions.php');

// Connexion à la base
connexion();

echo 'connexion à la base de donnée réussie';


// Fermeture de la connexion à la BdD
mysql_close();
?>