Php/pear/mysql

Résolu
manymal Messages postés 66 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 20 avril 2006 - 31 mars 2005 à 16:39
manymal Messages postés 66 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 20 avril 2006 - 1 avril 2005 à 10:09
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

manymal Messages postés 66 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 20 avril 2006
1 avril 2005 à 10:09
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+
3
manymal Messages postés 66 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 20 avril 2006
31 mars 2005 à 17:13
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é.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 mars 2005 à 17:49
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).
0
manymal Messages postés 66 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 20 avril 2006
1 avril 2005 à 09:58
$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....
0
Rejoignez-nous