Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MENU PHP CLASS/PHP5


Information sur la source

Catégorie :Class et Objet ( POO ) Niveau : Initié Date de création : 06/07/2004 Date de mise à jour : 16/06/2005 17:20:46 Vu / téléchargé: 12 015 / 612

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
vola il y a 3j je voulai changé de menu bin voila c fait ;)

 

Source

  • //Fichier reconstitute_url.inc.php
  • function reconstitute_url($exclude_get='none')
  • {
  • $url=$_SERVER['SCRIPT_NAME']."?";
  • if(isset($_GET)==TRUE)
  • {
  • foreach($_GET as $key=>$val)
  • {
  • if ($key!=$exclude_get)
  • {
  • $url.=$key."=".$val."&";
  • }
  • }
  • }
  • return $url;
  • }
  • //Fichier Class.dossier.php
  • // a besoin de reconstitue url pour fonctionner (ds notre cas j assure la dependance ds menu.php.)
  • Class Doscount
  • {
  • public static $cptdos=0;
  • function __construct()
  • {
  • /*
  • **
  • */
  • }
  • }
  • Class Dossier extends Doscount //ouvre l'ecriture d'un tableau contenant dossier
  • {
  • public $dossier; //contiendra le nom du dossier dans le quel nous placeron les fichier
  • public $link_dos;
  • function __construct($dossier) // petit constructeur
  • {
  • $this->dossier=$dossier; //contiendra la fameuse id du dossier
  • parent::$cptdos++; //envera en get donc meme po besoin de le mettre dans un form
  • $this->link_dos="<a class=\"mini_menu\" href=\"".reconstitute_url('ID_dos')."ID_dos=".parent::$cptdos."\"><img src=\"rep_parent.jpg\"></img>".$this->dossier."</a>";
  • }
  • function Deb_Table()
  • {
  • //la on commence un tableau parceke c plus chouettos tu vois?
  • echo "<table border=\"0\">\n";
  • }
  • function affiche_dossier()//la on va généré un ligne contenant deux cellules
  • {
  • echo "<tr>\n";
  • //cellule avec image
  • echo "<td></td>\n";
  • //cellule avec lien te nom
  • echo "<td colspan=2>".$this->link_dos."</td>\n";
  • echo "</tr>\n";
  • }
  • function Fin_Table()
  • {
  • //là on termine le tableau quoi ^^
  • echo "</table>";
  • }
  • }
  • Class Fichier extends Dossier
  • {
  • //class qui contiendra les fichier et leurs info mais qui hérite de dossier pour garder son id par exemple ^^
  • public $str_nom;
  • public $cible;
  • public $link_fic;
  • public function Linked($str_fic, $url_fic)
  • { //a l'appel de linked il fodra avoir le nom et l'url pour tracer le lien
  • $this->str_nom=$str_fic;
  • $this->cible=$url_fic; //ici on met la cible du fichier
  • $this->link_fic="<a class=\"mini_menu\" href=\"".$this->cible."\">".$this->str_nom."</a>\n";
  • }
  • public function affiche_fichier($str_fic, $url_fic)
  • {
  • self::Linked($str_fic, $url_fic); //on appel la methode Linked qui definits le lien
  • echo "<tr>\n";
  • echo "<td align=right>&nbsp;</td>\n";
  • echo "<td width=16><img src=\"ppoint.jpg\"></td>\n";
  • echo "<td>".$this->link_fic."</td>\n";
  • echo "</tr>\n";
  • }
  • public function Develloped($str_fic, $url_fic) // cette méthode va nous servir à dévelloper....
  • {
  • if(( isset($_GET['ID_dos'])==true) )
  • {
  • if(parent::$cptdos==$_GET['ID_dos'] )//si l'id est posté on dev ^^
  • {
  • //et là bin on appel l'éxécution de la function affiche_Fichier à la condition que l'id du fichier soit égale a l'id du fichier^^
  • Fichier::affiche_Fichier($str_fic, $url_fic);
  • }
  • }
  • }
  • }
  • Fichier "menu.php" par exemple
  • //Voyons ce que cela donne
  • require('reconstitute_url.inc.php');
  • require{'Class.dossier.php'}
  • Donc pour avoir le résultat escompté j'appel mes class ainsi
  • $cpt=new Doscount();
  • $Partie1= new Fichier("partie1");
  • //on donne c val au constructeur de la class Dossier (héritage)
  • $Partie1->Deb_Table();//on commence le tableau bin vi c plus propre ;)
  • $Partie1->affiche_Dossier();
  • $Partie1->Develloped("Nom du Lien 1","url_Lien_1");//On donne
  • $Partie1->Develloped("Nom du Lien 2","url_Lien_2");
  • $Partie1->Develloped("Nom du Lien 2","url_Lien_3");
  • //$Partie1->Fin_table();//pas obligé de fermé mais c plus propre et plus lisible ...
  • $Partie2= new Fichier("partie2");//attention a l'id il doit etre different...
  • //$Partie2->Deb_Table();//on commence le tableau bin vi c plus propre ;)
  • $Partie2->affiche_Dossier();
  • $Partie2->Develloped("Nom du Lien 1","url_Lien_1");//On donne
  • $Partie2->Develloped("Nom du Lien 2","url_Lien_2");
  • $Partie2->Develloped("Nom du Lien 3","url_Lien_3");
  • $Partie2->Develloped("Nom du Lien 4","url_Lien_4");
  • $Partie2->Develloped("Nom du Lien 5","url_Lien_5");
  • $Partie2->Fin_table();
//Fichier reconstitute_url.inc.php

	function reconstitute_url($exclude_get='none')
	{
	 $url=$_SERVER['SCRIPT_NAME']."?";
		if(isset($_GET)==TRUE)
		{
			foreach($_GET as $key=>$val)
			{
				if ($key!=$exclude_get)
				{
				 $url.=$key."=".$val."&";
				}
			}
		}
		return $url;
	}

//Fichier Class.dossier.php
// a besoin de reconstitue url pour fonctionner (ds notre cas j assure la dependance ds menu.php.)
Class Doscount
 {

	public static $cptdos=0;
	
	function __construct()
	{
	/*
	**
	*/
	}
 }

Class Dossier extends Doscount //ouvre l'ecriture d'un tableau contenant dossier
 {
  public $dossier;				//contiendra le nom du dossier dans le quel nous placeron les fichier
  public $link_dos;
 
  
   function __construct($dossier)	// petit constructeur
    {
       $this->dossier=$dossier;  	  	 //contiendra la fameuse id du dossier
     parent::$cptdos++;		    	 //envera en get donc meme po besoin de le mettre dans un form
     $this->link_dos="<a class=\"mini_menu\" href=\"".reconstitute_url('ID_dos')."ID_dos=".parent::$cptdos."\"><img src=\"rep_parent.jpg\"></img>".$this->dossier."</a>";                              
    }
    
   function Deb_Table()
    {
     //la on commence un tableau parceke c plus chouettos tu vois?
     echo "<table border=\"0\">\n";
    }
    
 
    
   function affiche_dossier()//la on va généré un ligne contenant deux cellules
    {
     echo "<tr>\n";
     //cellule avec image
     echo "<td></td>\n";
     //cellule avec lien te nom
     echo "<td colspan=2>".$this->link_dos."</td>\n";
     echo "</tr>\n";
    }
    
   function Fin_Table()
   {
   //là on termine le tableau quoi ^^
    echo "</table>";
   }
   
  
 
 }


 Class Fichier extends Dossier 
  {
	//class qui contiendra les fichier et leurs info mais qui hérite de dossier pour garder son id par exemple ^^
   public $str_nom;
   public $cible;	
   public $link_fic;
   
    public function Linked($str_fic, $url_fic)
      { 								      	//a l'appel de linked il fodra avoir le nom et l'url pour tracer le lien
       	$this->str_nom=$str_fic;
        $this->cible=$url_fic; 					//ici on met la cible du fichier
        $this->link_fic="<a class=\"mini_menu\" href=\"".$this->cible."\">".$this->str_nom."</a>\n"; 
      }

    public function affiche_fichier($str_fic, $url_fic)
      {
      	self::Linked($str_fic, $url_fic); //on appel la methode Linked qui definits le lien
        
      	echo "<tr>\n";
        echo "<td align=right>&nbsp;</td>\n";
        echo "<td width=16><img src=\"ppoint.jpg\"></td>\n";
        echo "<td>".$this->link_fic."</td>\n"; 
        echo "</tr>\n";
      }	
    
 
    public function Develloped($str_fic, $url_fic)	// cette méthode va nous servir à dévelloper.... 
      {
		if(( isset($_GET['ID_dos'])==true) )
		{
			if(parent::$cptdos==$_GET['ID_dos'] )//si l'id est posté on dev ^^
			{ 
			//et là bin on appel l'éxécution de la function affiche_Fichier à la condition que l'id du fichier soit égale a l'id du fichier^^
				Fichier::affiche_Fichier($str_fic, $url_fic);
			}
		}
      }
   }


Fichier "menu.php" par exemple
//Voyons ce que cela donne

require('reconstitute_url.inc.php');
require{'Class.dossier.php'}
Donc pour avoir le résultat escompté j'appel mes class ainsi

$cpt=new Doscount();

$Partie1= new Fichier("partie1");
//on donne c val au constructeur de la class Dossier          (héritage)
$Partie1->Deb_Table();//on commence le tableau bin vi c plus propre ;)
$Partie1->affiche_Dossier();
$Partie1->Develloped("Nom du Lien 1","url_Lien_1");//On donne
$Partie1->Develloped("Nom du Lien 2","url_Lien_2");
$Partie1->Develloped("Nom du Lien 2","url_Lien_3");
//$Partie1->Fin_table();//pas obligé de fermé mais c plus propre et plus lisible ...

$Partie2= new Fichier("partie2");//attention a l'id il doit etre different... 
//$Partie2->Deb_Table();//on commence le tableau bin vi c plus propre ;)
$Partie2->affiche_Dossier();
$Partie2->Develloped("Nom du Lien 1","url_Lien_1");//On donne
$Partie2->Develloped("Nom du Lien 2","url_Lien_2");
$Partie2->Develloped("Nom du Lien 3","url_Lien_3");
$Partie2->Develloped("Nom du Lien 4","url_Lien_4");
$Partie2->Develloped("Nom du Lien 5","url_Lien_5");
$Partie2->Fin_table();

Conclusion

ds le zip vous trouverez
net.jpg & rep_parent.jpg pour les img...
Merci à Toxx pour les images...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

16 juin 2005 17:20:46 :
j ai appliqué quelque conseils -> ajout d'un compteur static ainsi plus besoin de mettre les numéros ds l'appel dans la class parent DosCount -> il y avais un bug merci 'USANFR' -> ajout de la function reconstitute_url (libre à vous d'en faire une méthode de dossier..) -> merci a bdorbo...

Commentaires et avis

signaler à un administrateur
Commentaire de damne le 08/07/2004 10:44:49

Bonne source !

Cependant, depuis que PHP5 gère beaucoup mieux le modèle
objet, il est préférable de protéger tes attributs :

'var' devient 'private','protected' ...

;-)

signaler à un administrateur
Commentaire de tchoutchouni le 10/08/2004 15:07:03

Bonjour,

J'ai installé les scripts class.Dossier.php et menu.php comme prévu. Résultat : un écran blanc dans le navigateur !.
Je suis en PHP 4.3.5, est-ce la raison ?.
Merci par avance de votre aide!.

signaler à un administrateur
Commentaire de windu le 10/08/2004 23:10:03

tchoutchouni->il me semble que oui.... en effet,certaines fonctions ou mots réservés ne sont reconnus qu'à partir de PHP5. ex:'__construct' me semble-t-il... Le fait est que PHP5 a beaucoup évolué sur le plan de la P.O.O. (c'est meme la principale évolution...) ce qui fait que certaines fonctions ou classes ne passeront pas sur PHP 4.x!
Résultat: soit quelqu'un adapte le code pour en faire une version compatible PHP 4, soit tu passes sur PHP5 (la version stable est maintenant disponible depuis le 13 juillet)

signaler à un administrateur
Commentaire de jonguignolo le 11/08/2004 06:39:30

Merci Windu
tu as tout compris, par contre je ne compte pas faire passer mon code en php4.3 en effet je toruve stupide de descendre de version, par contre des que j'ai le tps je l'ameliore parceke comme l'a dit damne c'est po ça quoi ;) ++

signaler à un administrateur
Commentaire de tijuan le 23/11/2004 02:28:48

euh, c une classe version PHP5, donc c normal que çà tourne pas sous PHP4  :))

signaler à un administrateur
Commentaire de usanfr le 02/04/2005 07:08:55

Voila un class en PHP5 ( avec private, public etc... )

----------------------------------------------------------------


class Dossier //ouvre l'ecriture d'un tableau contenant dossier
{
    public $dossier;
    public $link_dos;
    public $int_id;
    
    public function __construct($str_nom,$int_identif)
    {
        $this->dossier=$str_nom;
        $this->int_id=$int_identif;
        $this->link_dos  = "<form method=post name=\"phpeteur".$this->int_id."\" >\r\n";
        $this->link_dos .= "<input type=\"hidden\" name=\"ID_dos\" value=\"".$this->int_id."\">\r\n";
        $this->link_dos .= "</form> \r\n";
        $this->link_dos .= "<a href=\"#\" onClick=\"window.phpeteur".$this->int_id.".submit()\">".$this->dossier."</a>\r\n";
            
    }

    public function Deb_Table()
    {
        echo "<table border=\"0\">\r\n";
    }

    public function affiche_dossier()
    {
        echo "<tr>\n";
        echo "<td><img src=\"rep_parent.jpg\"></td>\n";
        echo "<td colspan=2>" . $this->link_dos . "</td>\n";
        echo "</tr>\n";
    }

    public function Fin_Table()
    {
        echo "</table>";
    }
}


class Fichier extends Dossier
{
    //on aurait pu prendre dossier mais je veu le garder ça peu servir ^^
    private $str_nom;

    private function Linked($str_fic, $url_fic)
    {

        $this->str_nom=$str_fic;
        $this->cible=$url_fic;
        $this->link1="<a href=\"".$this->cible."\">".$this->str_nom."</a>\n";
    }

    private function affiche_fichier($str_fic, $url_fic)
    {
        Fichier::Linked($str_fic, $url_fic);

        echo "<tr>\n";
        echo "<td align=right>|-</td>\n";
        echo "<td width=16><img src=\"net.jpg\"></td>\n";
        echo "<td>".$this->link1."</td>\n";
        echo "</tr>\n";
    }

    // cette fonction va nous servir à dévelloper....
    public function Develloped($str_fic, $url_fic)
    {
        global $_POST;
        if( isset ( $_POST['ID_dos'] ) and $this->int_id == $_POST['ID_dos'] )//si l'id est posté on dev ^^
        {
            Fichier::affiche_Fichier($str_fic, $url_fic);
        }
    }
}

----------------------------------------------------------------

signaler à un administrateur
Commentaire de bdorbo le 05/06/2005 19:35:14

salut,

super ce script de menu mais incompatible firefox et netscape??

Comment faire por ces navigateurs??

Merci d'avance.

bdorbo

signaler à un administrateur
Commentaire de windu le 05/06/2005 20:14:06

Par contre, je remarque une chose (je n'avais pas fait attentin la première fois): tu utilises souvent des guillemets " " alors que des simple cotes ' ' pourraient faire l'affaire...
Pourquoi? parce que PHP analyse ce qui se touve entre des guillemets mais pas ce qui se trouve entre simple cotes... Donc pour des chainse de carctères il est préférable de privilégier les simples cotes
Exemple: ta fonction __contruct pourrait devenir ceci:

function __construct($str_nom,$int_identif)
{
     $this->dossier=$str_nom;
     $this->int_id=$int_identif;
     $this->link_dos='<form method="POST" name="phpeteur'.$this->int_id.'">
<input type="hidden" name="ID_dos" value="'.$this->int_id.'">
</form>
<a href="#" onClick="window.phpeteur'.$this->int_id.'.submit()">'.$this->dossier.'</a>';                      
                      
     }

signaler à un administrateur
Commentaire de iomega le 07/07/2006 11:04:45

Bonjour à tous,
Je voudrai savoir si quelqu'un pourrait modifier ce code pour qu'il soit utilisabe sous php 4
ça serait sympas
Je voudrai bien le faire mais je suis débutant
Merci

signaler à un administrateur
Commentaire de iomega le 10/07/2006 09:53:50

Bonjour à vous tous,
Quelqu'un pourrais-me dire comment développé au démarrage un menu
une valeur en paramêtre que l'on pourrait ajouter pour indiquer quelle menu doit être affiché.
Merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.