Page 1 sur 1

variable dans un include

Posté : 14 juil. 2008, 10:49
par rufus_
Bonjour

j'ai un fichier var.php avec dedans
$server = "localhost";
$username = "root";
$password = "";
$database = "rufus";
dans mon index.php
include "var.php";
dans une fonction de test
function writeMyNameFromDB()
{ect ...}
si je fais
$con = mysql_connect($server,$username,$password);
j'obtiens l'erreur

Code : Tout sélectionner

Access denied for user ''@'localhost' to database 'rufus' 1044
si je fais
$con = mysql_connect($server,"root","");
ça marche


comment inclure des variables stockées une seule fois et qui marchent ?
merci

Posté : 14 juil. 2008, 11:23
par Hywan
Hey :),

Tu as un fichier dans lequel tu déclares tes variables. Ensuite tu inclus ce fichier, les variables se propagent à ce même niveau. En revanche, si tu essayes d'accéder à ces variables dans une fonction, ça ne marchera pas car une fonction est un autre niveau. On parle alors de portée de variable.

Si tu veux que tes variables soient disponibles/accessibles dans ta fonction, tu as deux solutions :
  1. soit tu déclares les variables comme global ; attention, on a une fâcheuse tendance à détester ça : la sécurité est amoindrie et c'est très souvent une solution de bidouille ;
  2. soit tu passes tes variables à ta fonction en tant que paramètres ; solution que l'on va retenir.
Ainsi, tu aurais :
// var.php
<?php

$server = 'localhost';
$username = 'root';
$password = '';
$database 'rufus';

// index.php
<?php

include 'var.php';

function writeMyNameFromDB ( $server, $username, $password, $database) {

    $con = mysql_connect($server, $username, $password, $database);
    // etc.
}

// Enfin, on appelle notre fonction, et on lui donne nos variables en paramètres.
writeMyNameFromDB($server, $username, $password, $database);
Est-ce que tu es familier avec les paramètres des fonctions ? Si non, je détaille mon code si tu le souhaites :).

Posté : 14 juil. 2008, 11:56
par rufus_
si tu fais ca tu dois lefaire 2 fois
a la creation de ta fonction et quand tu l'utilises ?

<?php writeMyNameFromDB ( $server, $username, $password, $database); ?>

j'ai l'habitude du code en .net et il est tres facile puisque le code est compile d'avoir accès a tout depuis partout

il n'y a aucun autre moyen ? les variables globale pour une connexion me semblent pourtant une tres bonne idee

merci

Posté : 14 juil. 2008, 12:35
par Hywan
Si tu définies les variables en global, elles seront accessibles partout dans ton programme, et il est très facile de l'écraser sans faire exprès. Après, tu peux voir apparaître des bugs très étranges.

De plus, utiliser les paramètres pour une fonction est quand même beaucoup plus propre. Tu sais exactement ce dont a besoin la fonction, c'est nettement plus propre et plus cohérent.

Posté : 14 juil. 2008, 13:27
par rufus_
merci

Posté : 14 juil. 2008, 14:13
par zeus
Modération :
rufus_, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.

Posté : 14 juil. 2008, 15:58
par rufus_
Modération :
rufus_, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.
ceci est un post different les autres ont marques resolus