Fonction dans fonction: conservé les variables
Résolu
ntaie41
Messages postés
18
Statut
Membre
-
ntaie41 Messages postés 18 Statut Membre -
ntaie41 Messages postés 18 Statut Membre -
Bonjour,
J'ai créer deux fonction:
-une pour me connecter à ma base (bddconnect)
-une autre pour entrer une information dans la base.
Le problème étant que la variable de la base ne se conserve pas.
La page m'affiche:
Je vous donne le code:
Merci d'avance.
J'ai créer deux fonction:
-une pour me connecter à ma base (bddconnect)
-une autre pour entrer une information dans la base.
Le problème étant que la variable de la base ne se conserve pas.
La page m'affiche:
PHP Notice: Undefined variable: bdd in - on line 15 PHP Notice: Undefined variable: bdd in - on line 18 PHP Fatal error: Call to a member function prepare() on a non-object in - on line 18.
Je vous donne le code:
<?php
//Fonction de connexion à la base de donnée
function bddconnect ()
{
$dns = 'mysql:host=localhost;dbname=mabase';
$utilisateur = 'root';
$motDePasse = 'root';
$bdd = new PDO( $dns, $utilisateur, $motDePasse );
}
function insert()
{
bddconnect ($bdd);
$requete = "INSERT INTO Membre (id_user, user) VALUES (:unNom, :unPrenom)";
$stmt = $bdd->prepare($requete);
$nom = 'Dupont';
$prenom = 'Jean';
$stmt->bindParam('unNom', $nom);
$stmt->bindParam('unPrenom', $prenom);
//On ajoute Jean Dupont
$stmt->execute();
//On modifie la valeur des variables
$nom='Duval';
$prenom='Robert';
//On ajoute Robert Duval
$stmt->execute();
}
addfriends('1','2');
?>
Merci d'avance.
6 réponses
-
Salut salut,
Dans ta fonction bddconnect() , ajoutereturn $bdd;
du coup tu feras $cnx=bddconnect(); hors de la fonction insert
et dans ta fonction insert passe lui en paramètre la variable $cnx lorsque tu l'utilises
Résolu? ===> [RESOLU] -
Salut,
c'est normal, une variable créée dans une fonction a une porte privée, elle n'est pas visible hors de cette fonction. -
Bonjour,
Merci d'avoir répondu aussi vite mais ça ne marche pas. J'ai du mal comprendre et mal placés tes explications. Peux-tu me corriger ?<?php //Fonction de connexion à la base de donnée function bddconnect () { $dns = 'mysql:host=localhost;dbname=mabase'; $utilisateur = 'root'; $motDePasse = 'root'; $bdd = new PDO( $dns, $utilisateur, $motDePasse ); return $bdd; } $cnx=bddconnect(); //Ajout d'un amis function insert() { bddconnect ($bdd); $requete = "INSERT INTO Membre (id_user, user) VALUES (:unNom, :unPrenom)"; $stmt = $bdd->prepare($requete); $nom = 'Dupont'; $prenom = 'Jean'; $stmt->bindParam('unNom', $nom); $stmt->bindParam('unPrenom', $prenom); //On ajoute Jean Dupont $stmt->execute(); //On modifie la valeur des variables $nom='Duval'; $prenom='Robert'; //On ajoute Robert Duval $stmt->execute(); } addfriends('1','2'); ?> -
c'est un peu mieux, mais dans la même logique, dans ta 2ème fonction, tu essayes d'appeler une variable qui n'existe pas au niveau de la fonction : $bdd
déjà, il serait plus logique d'utiliser le $cnx que tu viens de faire, tu ne crois pas ?
Et dans tous les cas, pour que cette variable soit accessible, soit tu la passes en argument de ta fonction, soit tu fais un global $cnx en début de fonction. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
J'ai corrigé mais même erreur:
PHP Fatal error: Call to undefined function addfriends() in - on line 35
et mon code:<?php //Fonction de connexion à la base de donnée function bddconnect () { $dns = 'mysql:host=localhost;dbname=tomorrow'; $utilisateur = 'root'; $motDePasse = 'root'; $bdd = new PDO( $dns, $utilisateur, $motDePasse ); return $bdd; } $cnx=bddconnect(); //Ajout d'un amis function insert ($id_user, $id_user_invite) { bddconnect (); $requete = "INSERT INTO Membre (id_user, user) VALUES (:unNom, :unPrenom)"; $stmt = $cnx->prepare($requete); $nom = 'Dupont'; $prenom = 'Jean'; $stmt->bindParam('unNom', $nom); $stmt->bindParam('unPrenom', $prenom); //On ajoute Jean Dupont $stmt->execute(); //On modifie la valeur des variables $nom='Duval'; $prenom='Robert'; //On ajoute Robert Duval $stmt->execute(); } addfriends('1','2'); ?>-
-
si justement j'ai omis de le faire dans le sujet mais la fonction addfriend correspond à insert.<code<?php
//Fonction de connexion à la base de donnée
function bddconnect ()
{
$dns = 'mysql:host=localhost;dbname=tomorrow';
$utilisateur = 'root';
$motDePasse = 'root';
$bdd = new PDO( $dns, $utilisateur, $motDePasse );
return $bdd;
}
$cnx=bddconnect();
//Ajout d'un amis
function insert ($id_user, $id_user_invite)
{
bddconnect ();
$requete = "INSERT INTO Membre (id_user, user) VALUES (:unNom, :unPrenom)";
$stmt = $cnx->prepare($requete);
$nom = 'Dupont';
$prenom = 'Jean';
$stmt->bindParam('unNom', $nom);
$stmt->bindParam('unPrenom', $prenom);
//On ajoute Jean Dupont
$stmt->execute();
//On modifie la valeur des variables
$nom='Duval';
$prenom='Robert';
//On ajoute Robert Duval
$stmt->execute();
}
insert('1','2');
?></code> -
-
-
-
Merci beaucoup tout marche.
Comment ça marche, c'est génial :)