[RESOLU] Fonction de connexion a une base de donnee

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Fonction de connexion a une base de donnee

par AB » 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();
?>

par Invité » 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");
?>

par Hywan » 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.

par chrislabricole » 15 août 2008, 17:33

par Invité » 15 août 2008, 16:45

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

par chrislabricole » 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 :)

par Invité » 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

par chrislabricole » 15 août 2008, 16:11

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

par Invité » 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]

par chrislabricole » 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 :)

Fonction de connexion a une base de donnee

par Invité » 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";
?>