Problème de syntaxe sur une classe

Problème de syntaxe sur une classe - PHP - Programmation

Marsh Posté le 22-02-2005 à 12:28:55    

Bonjour, je souhaiterais créer une classe "composant" qui contiendrait le numero du composant ainsi qu'un tableau de pointeurs (références) qui pointeraient vers d'autres élément de type "composant"  
 
Le probleme c'est que j'ai pas la moindre idée de la rédaction en php...
 

Code :
  1. class composant
  2.     {
  3.  
  4.     var $numero_du_composant;
  5.     composant & $sous_composant[];
  6.  
  7.     }


 
Donc la syntaxe c'est absoluement n'importe quoi, mais ca reflete le fond de ma pensée...
 
++ et merci d'avance :bounce:

Reply

Marsh Posté le 22-02-2005 à 12:28:55   

Reply

Marsh Posté le 22-02-2005 à 12:41:07    

[quote=989687,0,1,232335]Le probleme c'est que j'ai pas la moindre idée de la rédaction en php...[/quote]
un petit tour ici s'impose ;)

Reply

Marsh Posté le 22-02-2005 à 13:15:11    

j'en ai deja fait le tour ... mais l'obstacle pour moi c'est le melange avec des références... c'est beaucoup moins clair qu'en C++ ...

Reply

Marsh Posté le 22-02-2005 à 14:40:57    

et bein j'ai regarder 50 tutoriaux, mais aucun ne parle de système où on utiliserait un pointeur sur une classe comme composant de la classe..
 
Donc la ... on peut le dire, je suis a la rue...  :whistle:

Reply

Marsh Posté le 22-02-2005 à 14:42:57    

En php les variables ne sont pas typées...donc

Code :
  1. var $sous_composant;


et c'est tout


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-02-2005 à 14:45:42    

[quote=989841,0,4,232335]on utiliserait un pointeur sur une classe comme composant de la classe[/quote]
ca ne se gere pas dans la déclaration mais dans le constructeur ou autre fonction à laquelle tu passeras en parametre une reference

Reply

Marsh Posté le 22-02-2005 à 15:37:37    

oukiii  
 
Juste une tite question, un constructeur récursif c'est possible?
 
c'est a dire que dans ton constructeur, ce même constructeur est rappelé pour créer une sous classe.
 
En fait dans l'esprit, si ca pouvait marcher ca me ferait une classe enorme avec plein de classe intégrées dedans

Reply

Marsh Posté le 22-02-2005 à 15:45:26    

[quote=989919,0,7,232335]pour créer une sous classe.[/quote]
je n'ai pas vu d'héritage dans ton code, donc sous-classe n'est pas le mot approprié

Reply

Marsh Posté le 22-02-2005 à 15:52:09    

oui c'est vrai c'est pas une sous classe mais la meme classe présente au niveau inférieur...
 
mais la question reste entiere est ce ke cela peut marcher un constructeur avec une recurrence dans ce style :
 

Code :
  1. <?php
  2. class composant
  3.     {
  4.     var $numero;
  5.     var $sous_composant;
  6.    
  7.     var $quantite;
  8.    
  9.     function composant ($num)
  10.            {
  11.            $this->numero=$num;
  12.       
  13.             
  14.            /*Recuperation des numéro des sous composants*/
  15.           
  16.            $mysql_connexion = mysql_connect("localhost", "zorg9", "foxzob" );
  17.       $sql = "
  18.                    SELECT DISTINCT art.num, nomen.quantite
  19.             FROM art, nomen
  20.               WHERE nomen.composant=art.num
  21.               AND nomen.compose='$num'
  22.               ";
  23.       $result = mysql_db_query("zorg9_db", $sql, $mysql_connexion);
  24.       $j=0; 
  25.       while ($row = mysql_fetch_array($result, MYSQL_NUM))
  26.                      {
  27.             composant($row[0]);
  28.             }
  29.      
  30.          }
  31. }
  32. $sys= new composant('B89959017');
  33. ?>


 
Le probleme c'est que pour l'insatnt y me dit que la fonction n'existe pas...


Message édité par boojhot le 22-02-2005 à 15:53:16
Reply

Marsh Posté le 22-02-2005 à 15:55:21    

verifie la ligne 32  ;)

Reply

Marsh Posté le 22-02-2005 à 15:55:21   

Reply

Marsh Posté le 22-02-2005 à 15:55:32    

De toute manière tu vas te faire bouler quand tu vas essayer d'utiliser le lien mysql à la création de ton premier sous-composant, non?:o
Enfin au mieux tu te fais bouler, au pire il dit rien mais tu te retrouve à skipper des tas de composants...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-02-2005 à 15:58:02    

[quote=989974,0,11,46149]De toute manière tu vas te faire bouler quand tu vas essayer d'utiliser le lien mysql à la création de ton premier sous-composant, non?[/quote]
bien vu, pas "bouler" mais ça risque de creer une nouvelle connex a chaque appel donc il ferait mieux de mettre la connex ailleur

Reply

Marsh Posté le 22-02-2005 à 16:00:42    

[quote=989983,0,12,195330]bien vu, pas "bouler" mais ça risque de creer une nouvelle connex a chaque appel donc il ferait mieux de mettre la connex ailleur[/quote]
Non, pas une nouvelle, la même, et c'est pour ça qu'il risque de paumer plein de composants en route :
http://www.nexen.net/docs/php/anno [...] onnect.php

Citation :


 Si un second appel à mysql_connect  est fait avec les mêmes arguments, PHP ne va pas ouvrir une nouvelle connexion, mais va retourner l'identifiant de la connexion déjà ouverte.


 
 
[edit]
 
Quoi que, je sais pas exactement ce qui peut bien se passer quand on fait ça, tiens...[:urd]


Message édité par skeye le 22-02-2005 à 16:02:46

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-02-2005 à 16:01:22    

hum... bein la blague, c'est que je sait ke le probleme vient de cette ligne mais je voit pas d'ou vient l'erreur...  
si ce n'est du fait que le constructeur n'est pas totalement défini, mais c'est normalement le principe de base d'une fonction récursive nan?

Reply

Marsh Posté le 22-02-2005 à 16:04:07    

ha oauis c'est clair pour le coup de la connection... mais bon c'est juste déplacé une ligne...  (ca vient du c/c d'un programme que j'ai deja essayé de faire tourner avant ... qui marchait pas nan plus lol)

Reply

Marsh Posté le 22-02-2005 à 16:06:21    

[quote=989994,0,14,232335]hum... bein la blague, c'est que je sait ke le probleme vient de cette ligne mais je voit pas d'ou vient l'erreur... [/quote]comment appelle-t-on un constructeur ? tu as la reponse dans ton code ligne 38 ;)

Reply

Marsh Posté le 22-02-2005 à 16:07:17    

Tu vas te retrouver avec autant de requêtes en cours de traitement en même temps que tu as de niveaux à ton arborescence de composants, là...c'est surtout ça qui m'inquiète...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-02-2005 à 16:08:34    

haaaaaaaaaaaaa pinaiseeeee  :love:  :pt1cable:  
 
c'est assez spécial la syntaxe php quand même...
 
bein je vais me tenter ca tout de suite  
 
merci  :jap:

Reply

Marsh Posté le 22-02-2005 à 16:09:22    

[quote=990013,0,17,46149]Tu vas te retrouver avec autant de requêtes en cours de traitement en même temps que tu as de niveaux à ton arborescence de composants, là...c'est surtout ça qui m'inquiète...:o[/quote]
+1

Reply

Marsh Posté le 22-02-2005 à 16:20:45    

bon bein ca a l'air  de tourner... le reste plus k'a trouver un moyen d'exploiter correctement cette super classe  :bounce:  
 
Merci encor  ;)

Reply

Marsh Posté le 22-02-2005 à 16:22:48    

Vérifie bien que tu ne perds rien quand tu as plusieurs sous-composants ayant chacun plusieurs sous-composants, quand même...;)
Ca fait partie des choses que je n'ai jamais pris le temps de tester, en fait...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-02-2005 à 16:29:42    

et aussi le fait que si un sous-composant fait partie de plusieurs composants il sera créé autant de fois...

Reply

Marsh Posté le 22-02-2005 à 16:31:02    

[quote=990066,0,22,195330]et aussi le fait que si un sous-composant fait partie de plusieurs composants il sera créé autant de fois...[/quote]
Très juste! J'y avais pas pensé, à celui-là...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-02-2005 à 10:20:50    

Re bonjour tout le monde...
 
 
J'ai encore un ptit souci... j'arrive pas à rentrer dans mes sous-objet...
 
 
voila mon tit script  
 

Code :
  1. <?php
  2. class composant
  3.     {
  4.     var $numero;
  5.     var $sous_composant;
  6.    
  7.     var $quantite;
  8.    
  9.     function composant ($num)
  10.            {
  11.            $this->numero=$num;
  12.       
  13.             
  14.            /*Recuperation des numéro des sous composants*/
  15.           
  16.            $mysql_connexion = mysql_connect("localhost", "zorg9", "foxzob" );
  17.       $sql = "
  18.                    SELECT DISTINCT art.num, nomen.quantite
  19.             FROM art, nomen
  20.               WHERE nomen.composant=art.num
  21.               AND nomen.compose='$num'
  22.               ";
  23.       $result = mysql_db_query("zorg9_db", $sql, $mysql_connexion);
  24.        
  25.       while ($row = mysql_fetch_array($result, MYSQL_NUM))
  26.                      {
  27.                      $num2=$row[0];
  28.             $this->sous_composant[] = new composant($num2);
  29.    
  30.             }
  31.      
  32.          }
  33. }
  34. $sys= new composant('B89959017');
  35. for ($i=0 ;$i<5 ; $i++)
  36.        {
  37.        $p=2;
  38.       
  39.        $test[$i]=$sys->sous_composant[$p]->sous_composant[$i]->numero;
  40.   }
  41. print_r($test);
  42. ?>


 
 
Ce que je ne comprend pas c'est que j'arrive bien a récuperer le numero  
 
lorsque je cherche sur le premier niveau de cete maniere :
 

Code :
  1. for ($i=0 ;$i<5 ; $i++)
  2.        {
  3.              
  4.        $test[$i]=$sys->sous_composant[$i]->numero;
  5.   }
  6. print_r($test);


 
Mais lorsque je rajoute un niveau (cf cidessous) plus rien ne fonctionne...
 
 

Code :
  1. for ($i=0 ;$i<5 ; $i++)
  2.        {
  3.        $p=2;
  4.       
  5.        $test[$i]=$sys->sous_composant[$p]->sous_composant[$i]->numero;
  6.   }
  7. print_r($test);


 
 
Donc voila, je refais appel à votre maitrise  ;)  
 
++
 

Reply

Marsh Posté le 23-02-2005 à 10:22:18    

et si tu fais un print_r($sys->sous_composant[$p]) tu as bien quelquechose?


Message édité par skeye le 23-02-2005 à 10:22:31

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-02-2005 à 10:28:44    

hum c'est possible qu'il y ait un prbleme ...  
voila ce ke j'obtient...

Code :
  1. composant Object ( [numero] => 41725017 [sous_composant] => [quantite] => )


 
a priori, mon second niveau de sous composants  n'est pas rempli ...
 
Bon bein faut que je creuse ca alors...

Reply

Marsh Posté le 23-02-2005 à 10:29:58    

En effet ça risque pas de marcher, là...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-02-2005 à 10:43:28    

en fait je suis un énorme boulet... il ne retournait pas de solution puisque dans le cas du composant de test, c'est a partir du 13 eme sous composant qu'il y a un sous sous composant... moralité, la je recherchais un truc qui n'existait pas...
 
/me mode un neurone ... :o  
 
bon je continue mes essais alors...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed