Pb de gestion d'une classse php pour l'alimentation 'une liste deroulante d'appr

fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006 - 18 nov. 2005 à 14:57
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 21 nov. 2005 à 13:58
Bonjour,

j'ai une classe Pays, et une classe MySQL qui me renvoy un tableau array de la liste de tout les pays present en base.

j'arrive pas gere ces classe pour pouvoir alimenter une liste deroulante sur un formulaire :

voici mon code :

vive PHP !!!, vive la prog !!!

liste deroulante de mon formulaire :
<td>

Pays
</td>
<td class="attributeinput">

<select name="pays">
<?
include("../classes/mysql.class.php");
include("../classes/pays.class.php");

$tab_pays = pays::list_all();
while ($tab_pays)
{
echo "<option>".$tab_pays["nom_pays"]."</option>\n";
}

?>
</select>


</tr>
<tr>

classe pays :
<?php


class pays extends mysql
{


//listage de tout les pays present en base


var $id;
var $nom_pays

function pays($id)
{
// recuperation des variables

}

function list_all()
{
$querry="SELECT nom_pays FROM pays ORDER BY nom_pays ASC";
$resulult=requete($querry);

return $resulult;
}


}



?>

classe 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 :
<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
*/


?>

je debute en objet avec php je suis larguer, si vous pouviez m'aider ce serais cool.

Merci

5 réponses

fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
18 nov. 2005 à 15:16
je tenais a preciser que la classe Pays herite de la classe MySQL

voila pour la petite precision

vive PHP!!!, vive la prog !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 nov. 2005 à 16:50
Hello,

je tenais a preciser que la classe Pays herite de la classe MySQL
=> class pays extends mysql
on avait cru comprendre... ;-)

Déjà :

function list_all()
{
$querry="SELECT nom_pays FROM pays ORDER BY nom_pays ASC";
$resulult=requete($querry);

return $resulult;
}

=>

function list_all()
{
$querry="SELECT nom_pays FROM pays ORDER BY nom_pays ASC";
$resulult=$this -> requete($querry);

return $resulult;
}
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
20 nov. 2005 à 17:47
"je tenais a preciser que la classe Pays herite de la classe MySQL"
Il est ou le lien entre MySQL et Pays ?
L'utilisation de la BDD ? Si c'est ce que tu penses, alors tu as un mauvais concept de la programmation orientée objet.

Pays se doit d'etre une classe à part, car elle n'apporte rien à ta classe SQL.
Pour récupérer ta classe SQL dans ta classe pays, tu devras faire comme ca :
<?php
// PHP 5 (adapte pour PHP4)
class Pays {

private $db;

public function __construct() {

$this->db = new mysql;

}

}
?>
Et tu utilises $this->db pour faire tes requetes. Par exemple :
$this->db->requete($truc,$p);
Et zoup !

Mais tu n'as pas a faire hérité Pays de la classe SQL... hors de question !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 nov. 2005 à 12:58
http://www.developpez.net/forums/viewtopic.php?t=420521

lol...(lire les derniers messages, FhX).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
21 nov. 2005 à 13:58
Ouais, bah alors si l'autre commence à lui dire n'importe quoi ! Ou va t'on lol !

De toute facon, y'a trop de propriétés d'objet déclarés dans ses classes...
Je te conseil ==> visionne les scripts PHP5 pour une classe MySQL. J'en avais fait une, bien qu'un peu compliqué parce que j'utilise certaines nouvelles fonctions de PHP5 (__ToString, __destruct, gestion d'exceptions, try{}catch{}...).

Ou alors, regarde les scripts orienté objet en PHP4, Antho en avait fait un, GRenard aussi si je me souviens bien !

Et ensuite, ca roule tout seul !

Concevoir en objet n'est pas du tout la même chose que de concevoir avec des fonctions qui se suivent à la queueleuleu :D
0
Rejoignez-nous