Requète dans une fonction

Eléphant du PHP | 294 Messages

27 oct. 2007, 09:52

Bonjour ma question est - pour le moment - théorique : as t'on le froit de faire une requete mysql dans une fonction ?
j'ai un problème avec une requête qui fonctionne parfaitement lorsque je la sort de la fonction mais qui me met une erreur :" Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link r...", lorsque je l'introduit a l'identique dans la fonction...
Merci

Eléphant du PHP | 443 Messages

27 oct. 2007, 10:02

Salut,

Ton problème n'a pas grand chose à voir avec MySQL.
Pour trouver ta réponse, lis cette partie de la doc php


Tracker.

ViPHP
AB
ViPHP | 5818 Messages

27 oct. 2007, 15:09

Salut,

Autre possibilité, il faut que tu passes tes variables comme argument dans tes fonctions si tu veux pouvoir les utiliser à l'intérieur de tes fonctions.

Pour répondre directement à ta question : no problème. Faut juste approfondir ta connaissance des fonctions et le lien donné par Tracker fait partie des pré requis :wink:

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2007, 11:10

je crois comprendre, merci, par contre ce qui semble etre mom problème est donc de redefinir les variable de connections a la base de donnée "dans" la fonction, et pas d'utiliser la variable que j'utilise globalement sur tous le site...je vais bosser la dessus

Eléphant du PHP | 61 Messages

28 oct. 2007, 12:31

Tu veux faire une fonction connexion ?

Rien de plus simple!
<?php
function connexion()
{
    mysql_connect("localhost", "login", "pass");
    mysql_select_db("base de donnees");
}
?>
Voilà ;)
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 oct. 2007, 11:38

Il s'agit effectivement d'une question de portée des variables. Par défaut, une variable définie en dehors d'une fonction n'est pas visible à l'intérieure de celle-ci. L'exception est faite pour les variables globale (comme $_POST, $_SERVER, etc.) et les constantes que tu as définies avec la fonction define().

Le mieux est donc selon moi de définir tes informations de connexion dans des constantes pour pouvoir en disposer partout à tout moment sans te poser de question. Ceci étant, il t'est tout de même possible de définir comme globale une variable à l'intérieur d'une fonction :
$var1 = 1;
$var2 = 1;

function maFonction() {
  global $var1; // on indique qu'il s'agit de la variable externe

  $var1++; // incrémente la variable externe
  $var2++; // incrémente un variable locale
}

maFonction(); // appel à la fonction
echo $var1; // affiche "2", la variable var1 a bien été lue et modifiée par la fonction
echo $var2; // affiche "1", la variable var2 incrémentée par la fonction n'est pas liée à celle-ci
Tu peux donc à l'intérieur d'une fonction déclarer comme globales les variables contenant tes informations de connexion et les utiliser pour te connecter sans avoir à les passer en paramètre :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...