Rechercher : dans
Par :

Pb de gestion de classe !! help me !!!!!!!

Dernière réponse le 29 avr 2007 à 13:01:07 frederic92, le 21 nov 2005 à 11:16:07 
 Signaler ce message aux modérateurs

Bonjour,
je me lance dans la programmation objet en php mais je suis pas encore tout a fais au point c pour cela je vous poste ce message.

( j'utilise php 4 )

Voila mon pb j'ai une 2 classe et un formulaire

la première classe es mysql :

<?php

class mysql
{
var $sql_serveur;
var $sql_utlisateur;
var $sql_password;
var $sql_bd;
var $connection_sql;
var $select_bd;
var $resultat;
var $sql_debug;
var $connection_verif;
var $nb_requete;
var $erreur;
var $message_erreur;

//constructeur
function mysql($serveur, $utlisateur, $password, $bd, $debug, $erreur)
{
$this->sql_serveur = $serveur;
$this->sql_utilisateur = $utlisateur;
$this->sql_password = $password;
$this->sql_bd = $bd;
$this->sql_debug = $debug;
$this->message_erreur = $erreur;
$this->resultat = array();
$this->connection_verif = 0;
$this->connection();
}

//fonction de connecti+on a mysql
function connection()
{
if($this->connection_verif == "0")
{
$this->connection_sql = @mysql_connect($this->sql_serveur, $this->sql_utilisateur, $this->sql_password);
if(!$this->connection_sql)
{
$this->mysql_erreur();
}
else
{
$this->selection_bd();
}
}
}

//fonction de selection de la base de donnée
function selection_bd()
{
$this->select_bd = @mysql_select_db($this->sql_bd, $this->connection_sql);
if(!$this->select_bd)
{
$this->mysql_erreur();
}
else
{
$this->connection_verif = 1;
}
}

//fonction de déconnexion de la base de donnée
function deconnexion()
{
mysql_close($this->connection_sql);
}

//fonction d'execution de requête
function requete($requete, $p)
{
$this->resultat[$p] = mysql_query($requete);
$this->nb_requete++;
if(!$this->resultat[$p])
{
$this->mysql_erreur();
}
}

//fontion qui retourne les donnée dans un tableau grace a fetch array
function resultat($p)
{
return @mysql_fetch_array($this->resultat[$p]);
}
//fontion qui retourne une ligne de résultat MySQL sous la forme d'un objet
function resultat_object($p)
{
return @mysql_fetch_object($this->resultat[$p]);
}

//fontion qui retourne une ligne de résultat MySQL sous la forme d'un tableau associatif
function resultat_assoc($p)
{
return @mysql_fetch_assoc($this->resultat[$p]);
}
//fonction permettant de compter le nombre de resultat trouvé
function nb_resultat($p)
{
return @mysql_num_rows($this->resultat[$p]);
}
//function d'affichage des erreur mysql
function mysql_erreur()
{
if($this->sql_debug == 0)
{
echo $this->message_erreur;
}
elseif($this->sql_debug == 1)
{
$this->erreur = @mysql_error($this->connection_sql);
$message = "une erreur mysql est survenue : <br /> <form name='mysql'><textarea rows='15' cols='60'>".$this->erreur."</textarea></form>";
echo $message;
}
}
}


/*
--__Information sur la classe__--

connection : automatique

deconnection : $sql->deconnexion()

requete : $sql->requete($requete,$p)

fetch_array : $sql->resultat($p)
$p es numero de la requette

nb_resultat : sql->nbresultat($p)

nb de requete :$sql->nb_requete
*/

?>

La seconde es pays :

<?php

include("../classes/mysql.class.php");

class pays
{
//listage de tout les pays present en base
var $id;
var $nom_pays
function pays($id)
{
// recuperation des variables

}
function list_all()
{
$this->$db = new mysql;
$this->$result=$db->requete("SELECT nom_pays FROM pays ORDER BY nom_pays ASC",0);
return $result;

}
}
?>


Le code php de la liste déroulante de mon formulaire :


Et voici le champ de formulaire sur quoi joue ces 2 classes, je veut alimenter grâce a ce script une liste déroulante avec des nom de pays pressent en base de données

<tr>
<td>
<div class="attributename">Pays</div></td>
<td class="attributeinput">

<select name="pays">
<?
include("../classes/pays.class.php");
$pays= new pays();
print_r($pays->list_all());


if( $result = result(0) )
{
echo "<option>".$val["nom_pays"]."</option>\n";
}

?>
</select>
</tr>

Je vous remercie par avance de votre aide !!

Frederic

Configuration: php 4

Meilleures réponses pour « pb de gestion de classe !! help me !!!!!!! » dans :
Gestionnaire de périphériques VoirCet article a pour but de vous aider à manipuler le gestionnaire des périphériques... :-) Vous pouvez utiliser le Gestionnaire de périphériques pour mettre à jour les pilotes (ou les logiciels) des périphériques matériels, modifier les paramètres...
Désactiver le gestionnaire ORANGE/WANADOO VoirVoici une manipulation très utile pour ceux qui utilisent une connexion Wanadoo / Orange. Il est très intéressant de remarquer que les programmes de ce FAI (gestionnaire Orange, Navigateur Orange) sont certes pratiques pour les débutants, mais sur...
Gestion du profil sous Mozilla Thunderbird VoirGestion du profil sous ThunderBird Localiser le profil Le profil utilisateur de Mozilla Thunderbird est stocké dans un répertoire utilisateur par défaut dont l'emplacement dépend du système d'exploitation : Sous Windows XP/2000, le chemin est...
Méthodologie de gestion de projet VoirLa gestion de projet - La nécessité d'une méthodologie claire On appelle « gestion de projet » (éventuellement « conduite de projet ») l'organisation méthodologique mise en œuvre pour faire en sorte que l'ouvrage réalisé par le maître...
Enterprise Resource Planning (ERP) - Progiciel de Gestion Intégr VoirIntroduction aux ERP Les ERP (en anglais Enterprise Resource Planning), aussi appelés Progiciels de Gestion Intégrés (PGI), sont des applications dont le but est de coordonner l'ensemble des activités d'une entreprise (activités dites verticales...
Customer RelationShip Management (CRM) - Gestion de la relation VoirIntroduction à la gestion de la relation client Le client est généralement la principale source de revenus pour les entreprises. Or, avec le changement de l'économie dû notamment à l'intégration des nouvelles technologies dans les relations client...

1

Luffy =), le 21 nov 2005 à 12:07:07

Salut =)

et quel est le problème ?
ça ne marche pas ? un message d'erreur peut-être ? Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

2

Zep3k!GnO, le 21 nov 2005 à 12:08:42


( j'utilise php


Ca n'est pas Php 5 qui inclus la notion de classe ? ! ! !


Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."

Répondre à Zep3k!GnO

3

Luffy =), le 21 nov 2005 à 12:14:01

Non, c'est bien la version 4, par contre la version 5 apporte des choses comme le constructeur, les variables privées, etc... Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

4

frederic92, le 21 nov 2005 à 12:14:31

Php 4 gere egalement les classe,

le pb que j'ai es que ma liste deroulante ne s'allimente pas, alors qu'elle le devrais avec le resultat de la requette.

Répondre à frederic92

5

Zep3k!GnO, le 21 nov 2005 à 12:23:23

Pour moi le soucis vient p'tet du fait que dans ta classe pays au sein de la fonction list_all tu fais $this->$db = new mysql;

le soucis est que tu fais appel a une fonction qui n'est pas définie dans ta classe (en + tu mets un $this ) alors que l'attribut $db ne fais pas partit de ta classe 'pays'.
je pense que tu devrais donc voir un peu du coté de l'héritage, ce qui te permettrai d'avoir accès aux fonction de ta classe mysql au sein de ta classe pays..

au fait aussi tu mets // constructeur dans ta classe mysql mais c'est un abbus de langage car dans le cas présent ça n'en est pas un vrai étant donné qu'il ne s'éxécute pas lors de l'instantiationde ta classe...

Voilà pour moi ;P

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."

Répondre à Zep3k!GnO

6

Luffy =), le 21 nov 2005 à 12:29:32

Et pour moi, la liste html ne fonctionne pas comme tu l'as fait :

<SELECT>
<OPTION value='opopop'>OPOPOP
<OPTION value='opopop2'>OpOpOp 2
</SELECT>

on a pas besoin de refermer la balise.
Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

7

Zep3k!GnO, le 21 nov 2005 à 14:15:04

on a pas besoin de refermer la balise.

t'es sur pour la select ? ! ? !

Moi à la rigueur pour etre puritain j'aurai mis :

<SELECT name="menu">
<OPTION value='opopop'/>OPOPOP
<OPTION value='opopop2'/>OpOpOp 2
</SELECT>


Mais je pense que le soucis vient pas mal aussi de ce que j'ai signalé + haut . ..

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."

Répondre à Zep3k!GnO

8

frederic92, le 21 nov 2005 à 14:42:05

<select name="pays">
<?
include("../classes/pays.class.php");
$pays=new pays();
$test = $pays->result;
print_r($test);


if( $result = result(0) )
{
echo "<option value =".$val["nom_pays"]."/>".$val["nom_pays"]."\n";
}
?>

</select>



ce serais plus ca selon vous alors ?

Répondre à frederic92

9

Zep3k!GnO, le 21 nov 2005 à 14:47:59

print_r($test);

Ca t'affiches quelque chose ça ?!?!

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."

Répondre à Zep3k!GnO

10

frederic92, le 21 nov 2005 à 15:02:12

Toujours rien ! sniffffffffff la liste ne remplis pas !!

Répondre à frederic92

11

Zep3k!GnO, le 21 nov 2005 à 15:21:01

Yes c'est bien ce que je pensais donc pour le moment le code du menu déroulant en html n'a rien a voir ... je te conseillerai de relire mon message n° 5 car je pense que je n'y ai pas dit que des conneries :D
t'es partis sur la piste du html qui ne servait a rien . . . :P

dis ce que t'en penses de mon message. . .


Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."

Répondre à Zep3k!GnO

12

Luffy =), le 21 nov 2005 à 15:27:39

Alors, pour ce qui est des balises, il faut bien fermer la </SELECT> mais pas les <OPTION>.
mais comme tu dis, rien à voir avec le souci du moment...

je suis d'accord avec toi, $db ne fais pas parti de la classe pays,donc ça ne peux pas marcher. D'ailleurs il dervait s'afficher un message d'erreur.

mais je ne ferais pas d'héritage, du point de vue objet ça n'aurait pas de sens.

et pour le constructeur, je m'étais trompé, il y en avait aussi en php4, je viens d'aller voir sur le net (http://www.portix.be/wiki/index.php/La_programmation_Orient%C3%A9e_Objet_en_PHP4#Le_constructeur.2C_l.27instanciation)
Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

13

Luffy =), le 21 nov 2005 à 15:33:09

Tu fais ça également :

 $this->$result=$db->requete(...
mais tu remarqueras que ta fonction requete() ne renvoie rien...
donc tu ne peux pas récupérer tes pays.
Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

14

Zep3k!GnO, le 21 nov 2005 à 16:31:19

Affirmatif mon colonel :P


juste "je ne ferais pas d'héritage, du point de vue objet ça n'aurait pas de sens"--> pourquoi ?! ?!

Zep3k!GnO
-->kurtis jackson:"On est des rangers mec, des rangers."

Répondre à Zep3k!GnO

15

Luffy =), le 21 nov 2005 à 16:47:29

Ben il faut traduire des diagrammes en français :
- "le pays hérite de la base de données" :-/
- "le pays utilise la base de données" :-D c'est mieux !

en fait s'il y aurait héritage, ce serait par exemple qu'il y aurait une classe continent, et là la classe pays pourrait hériter de continent.

Mais dans ce cas-là, il n'y aucune raison de faire un héritage.

Enfin du moins, c'est ce que je ferais ;-) Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

16

frederic92, le 21 nov 2005 à 17:09:32

C claire qu'au point de vue logique de l'héritage tu as entièrement raison Luffy !! Après, c vrais que s'il un aévais héritage ça simplifierais un peut le code

Répondre à frederic92

17

Zep3k!GnO, le 21 nov 2005 à 17:10:13

Okay c'est une question de philosophie de l'héritage , c'est bien vrai ce que tu dis la ... Zy avait pô penser ^^ hi hi hi

Mais ça peut se faire non ?! meme si c'est pas super top moumouthe ...

Zep3k!GnO
-->kurtis jackson:"On est des rangers mec, des rangers."

Répondre à Zep3k!GnO

18

frederic92, le 21 nov 2005 à 17:14:02

Lol oui je crois c la façon la plus simple même si ça va pas plaire Luffy !!

L’application va fonctionner ! Mais c après si je veut réutiliser les classe dans une autre appli ça n'auras plus trop de sens !!

Répondre à frederic92

19

Luffy =), le 21 nov 2005 à 17:34:36

lol oui je crois c la façon la plus simple même si ça va pas plaire Luffy !!
ha ha, bon ça va, je ne vais pas être trop vexé, t'inquiètes pas !

Pour des petites applis web comme ça, c'est pas trop grave ! mais quand c'est un gros projet, il vaut mieux faire une bonne étude des classes avant de se lancer dans le code !

Mais pour en revenir à ton problème ça avance ? Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)