Php/pear/mysql

[Résolu]
Signaler
Messages postés
66
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
20 avril 2006
-
Messages postés
66
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
20 avril 2006
-
Bonjours à toi source de connaissances.



j'ai une erreur :




"Fatal error: Call to a member function on a non-object in c:\program files\easyphp1-7\www\projetsitesérica\biblio-images\phpbazimg.php on line 39".



mon script est le suivant :



<?php

require_once 'DB.php';

require_once "HTML/QuickForm.php";

require_once 'HTML/QuickForm/link.php';

////////////////////////////////////////////////////////////////

//___DB Connection & requetes SQL__//

///////////////////////////////////////////////////////////////

$user = 'root';

$pass = '';

$host ='localhost';

$db_name ='Wparam';

$dsn = "mysql://$user:$pass@$host/$db_name";//connection au serveur puis à la base avec authentification

$db = DB::connect($dsn);

if (DB::isError($db)):

die ($db->getMessage());

endif;

//_________par fonction_______//

/////////////////////////////////////////////////////

function AjoutImg()

{

echo ">>>>>>OK
";

$nom = "Nur tempo";

$img =
"/imagesMachines/Nur.jpg";


$sql = "INSERT INTO `Machines` (`Nom_m`, `Img_m`)




VALUES
('$nom','$img')";


$result = $db->query($sql);

//var_dump ($result);

}

AjoutImg();

?>



Ma ligne 39 étant :



$result = $db->query($sql);



c'est la premiere fois que je suis face à ce message!!

bien que je comprenne ce qu'il veut dire je ne trouve pas la cause!!



qui voit mon enorme erreur svp .

merci beaucoup.

4 réponses

Messages postés
66
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
20 avril 2006

Bon ok je suis un gros naZZZZ



voila la soluce :



Dans ma fonction


function AjoutImg()

{

echo ">>>>>>OK
";

$nom = "Nur tempo";

$img =
"/imagesMachines/Nur.jpg";


$sql = "INSERT INTO `Machines` (`Nom_m`, `Img_m`)




VALUES
('$nom','$img')";


$result = $db->query($sql);

//var_dump ($result);

}



Juste après l'accolade ouvrante...' { '... il me faut déclarer global $db;

Ben oui ....

Merci Malalam de m'aider à réflechir.



A+
Messages postés
66
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
20 avril 2006

Il faut que je réalise une base dans laquelle sont stockée des photos et commentaires, ...

puis que je lie cette base à une visionneuse flash.

classique!! mais pas si simple!!

si vous avez des tutos ou C.S. sur ce sujet je suis preneur.



ps: j'ai 6 semaine pour livrer l'appli web qui comprend d'autres modules bien entendu.

je suis en stage pour valider ma formation de DI et doit investir flash car jamais fait

bref ya du taf au ranch!!



Merci d'exister belle communauté.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,



je n'ai jamais essaye d'appeler dans une "simple" fonction, une methode d'une classe exterieure.

Mais a priori ton probleme vient de la.

Dans ta fonction, tu utilises une variable, $db qui sort d'on ne sait
ou. Certes, tu l'as declare EN DEHORS de ta fonction... mais dans ta
fonction, les variables sont generiques.



Si je fais :



$i = 1;



function boucle() {

while ($i < 5) {

echo 'blabla';

$i ++;

}

}

je vais avoir un probleme. Le $i qui est a l'interieur de ma fonction n'a aucun rapport avec le $i qui est a L'exterieur.



Et heureusement !! Sinon on serait bien emmerde pour faire des
fonctions...parce qu'on prendrait le risque qu'elles soient utilisees
dans des pages ou une variable de meme nom qu'une des variables
utilisee par notre fonction ait ete declaree, avec une valeur
particuliere etc...voire de type different!



Donc ton probleme me semble tres logique.



Soit tu programmes objet, soit fonctionnel, mais ne melange pas les 2 (pas de cette maniere en tous cas).
Messages postés
66
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
20 avril 2006

$db est une variable system Pear, que je peux appeler grace à : require_once 'DB.php';



pour ton example $i je vois c'est ce que l'on appel un effet de bord je
crois ? et la je ne cherchepas ca car j'ai deja un code source qui
tourne avec un script plus étoffé que celui ci_dessus.



je reste donc sans solution pour le moment & reste a l'ecoute....