Fonction dans fonction: conservé les variables
Résolu/Fermé
ntaie41
Messages postés
18
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
4 mai 2013
-
2 mai 2013 à 16:33
ntaie41 Messages postés 18 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 4 mai 2013 - 2 mai 2013 à 16:58
ntaie41 Messages postés 18 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 4 mai 2013 - 2 mai 2013 à 16:58
A voir également:
- Fonction dans fonction: conservé les variables
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction remplacer dans word - Guide
- Fonction ms dos non valide - Forum Windows 8 / 8.1
6 réponses
Utilisateur anonyme
Modifié par kyser soze le 2/05/2013 à 16:37
Modifié par kyser soze le 2/05/2013 à 16:37
Salut salut,
Dans ta fonction bddconnect() , ajoute
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]
Dans ta fonction bddconnect() , ajoute
return $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]
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
2 mai 2013 à 16:38
2 mai 2013 à 16:38
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.
c'est normal, une variable créée dans une fonction a une porte privée, elle n'est pas visible hors de cette fonction.
ntaie41
Messages postés
18
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
4 mai 2013
2 mai 2013 à 16:39
2 mai 2013 à 16:39
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 ?
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'); ?>
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
2 mai 2013 à 16:45
2 mai 2013 à 16:45
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.
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
ntaie41
Messages postés
18
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
4 mai 2013
2 mai 2013 à 16:49
2 mai 2013 à 16:49
J'ai corrigé mais même erreur:
et mon code:
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'); ?>
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
2 mai 2013 à 16:51
2 mai 2013 à 16:51
c'est quoi cette fonction addfriends ? Elle sort d'où ?
En tout cas, je t'ai suggéré 2 choses, et je ne vois aucune des 2 dans ton code.
De toute manière, ta fonction insert n'est appelée nulle part
En tout cas, je t'ai suggéré 2 choses, et je ne vois aucune des 2 dans ton code.
De toute manière, ta fonction insert n'est appelée nulle part
ntaie41
Messages postés
18
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
4 mai 2013
2 mai 2013 à 16:53
2 mai 2013 à 16:53
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>
//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>
ntaie41
Messages postés
18
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
4 mai 2013
2 mai 2013 à 16:55
2 mai 2013 à 16:55
L'erreur est donc
PHP Notice: Undefined variable: cnx in - on line 18 PHP Fatal error: Call to a member function prepare() on a non-object in - on line 18
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
2 mai 2013 à 16:55
2 mai 2013 à 16:55
et là ça met un message d'erreur ?
la ligne $cnx=bddconnect(); serait mieux placée à la place de ton bddconnect() dans la fonction j'imagine, d'autant plus que tu essayes d'utiliser un hypothétique $cnx dedans.
la ligne $cnx=bddconnect(); serait mieux placée à la place de ton bddconnect() dans la fonction j'imagine, d'autant plus que tu essayes d'utiliser un hypothétique $cnx dedans.
ntaie41
Messages postés
18
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
4 mai 2013
2 mai 2013 à 16:58
2 mai 2013 à 16:58
Merci beaucoup tout marche.
Comment ça marche, c'est génial :)
Comment ça marche, c'est génial :)