variable dans un include

Eléphant du PHP | 109 Messages

14 juil. 2008, 10:49

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

ViPHP
ViPHP | 4674 Messages

14 juil. 2008, 11:23

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 :).
« 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).

Eléphant du PHP | 109 Messages

14 juil. 2008, 11:56

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

ViPHP
ViPHP | 4674 Messages

14 juil. 2008, 12:35

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.
« 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).

Eléphant du PHP | 109 Messages

14 juil. 2008, 13:27

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 juil. 2008, 14:13

Modération :
rufus_, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 109 Messages

14 juil. 2008, 15:58

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