comment recuperer un identifiant de la classe mère

comment recuperer un identifiant de la classe mère - PHP - Programmation

Marsh Posté le 15-08-2006 à 21:33:34    


 
 
bonsoir à tous!
je travaille sous php4 .
je souhaiterai savoir comment récuperer l' ID de la classe mere qui est auto_increment, pour l'inserer dans la classe fille cas d'héritage?
 
merci d'avance!

Reply

Marsh Posté le 15-08-2006 à 21:33:34   

Reply

Marsh Posté le 16-08-2006 à 09:48:08    

bonjour à tous !
je crois que personne parmi vous n'utilise l'héritage en php,
 
toutes explication sur l'héritage en php 4 m'interesse car la doc sur internet m'a pas beaucoup aidé.
 
merci !

Reply

Marsh Posté le 16-08-2006 à 09:59:46    

Bonjour,
 
Je crois que tu confonds, lorsque l'on parle d'héritage, c'est uniquement sur les classes et non sur les instances. Donc un Identifiant pour une INSTANCE de ta classe mère sera unique puisqu'il est auto incrémenté, et donc une INSTANCE de la clase fille pourra également récuperer un identifiant mais pas le même. Ou alors on ne parle plus d'héritage au sens "programmation"  
Je sais pas si j'ai été clair

Reply

Marsh Posté le 16-08-2006 à 10:07:24    

zana74 a écrit :

je souhaiterai savoir comment récuperer l' ID de la classe mere qui est auto_increment, pour l'inserer dans la classe fille cas d'héritage?


Houston? we have a problem here ...
Es tu sur de bien savoir/comprendre de quoi tu parles?
A vu de nez je dirais que l'ID dont tu parles est celui d'une table de ta base de donnée ( table ayant un champs id en auto_incremenet) et que tu souhaites le récupérer pour l'inserer dans un table ayant une clé étrangère vers l'id précédent... Ce qui n'a STRICTEMENT RIEN A VOIR avec des objets et de l'héritage.
Maintenant peut-être que je lis mal entre les lignes [:spamafote]
 
Mais sinon montre donc où-tu en es dans ton code, il nous sera plus facile de comprendre ce que tu veux faire!

Reply

Marsh Posté le 16-08-2006 à 10:24:17    

jbourdellon a écrit :

Bonjour,
 
Je crois que tu confonds, lorsque l'on parle d'héritage, c'est uniquement sur les classes et non sur les instances. Donc un Identifiant pour une INSTANCE de ta classe mère sera unique puisqu'il est auto incrémenté, et donc une INSTANCE de la clase fille pourra également récuperer un identifiant mais pas le même. Ou alors on ne parle plus d'héritage au sens "programmation"  
Je sais pas si j'ai été clair


 
merci de ta réponse!
 
je souhaiterai avoir plus d'info sur l'héritage car je crois en conception  je l'ai compris mais pas en en programmation.
 
ci dessous mon code.

Reply

Marsh Posté le 16-08-2006 à 10:28:04    

Citation :

ci dessous mon code.

...

Reply

Marsh Posté le 16-08-2006 à 10:34:50    

anapajari a écrit :

Houston? we have a problem here ...
Es tu sur de bien savoir/comprendre de quoi tu parles?
A vu de nez je dirais que l'ID dont tu parles est celui d'une table de ta base de donnée ( table ayant un champs id en auto_incremenet) et que tu souhaites le récupérer pour l'inserer dans un table ayant une clé étrangère vers l'id précédent... Ce qui n'a STRICTEMENT RIEN A VOIR avec des objets et de l'héritage.
Maintenant peut-être que je lis mal entre les lignes [:spamafote]
 
Mais sinon montre donc où-tu en es dans ton code, il nous sera plus facile de comprendre ce que tu veux faire!


 oui dans la table mère qui est publication j'ai ID auto increment.
et dans la table livre j'ai ID_publication.
 
voila mon code de classe livre

Code :
  1. <?
  2. class Livre extends Publication{
  3. var $editeur;
  4. var $isbn;
  5. var $type_livre;
  6. var $num_publi;
  7. function Livre(){
  8. $this->editeur;
  9. $this->isbn;
  10. $this->type_livre;
  11. $this->Publication();
  12. }
  13. function creer_livre($num_publi,$editeur,$isbn,$type_livre)
  14. {
  15.    
  16. $query = "insert into livre (num_publication,isbn,type_livre,editeur)
  17. VALUES ('$num_publi','$isbn','$type_livre','$editeur');";
  18. $result=mysql_query($query)or die(mysql_error());
  19.     if ($result)
  20.       {
  21.       $this->num_publi = mysql_insert_id();
  22.       }
  23.     else
  24.       {
  25.       $this->num_publi= -1;
  26.       }
  27. }
  28. }

 
 
le code de la classe mère publication:

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. </head>
  5. <?php
  6. include("connexion.php" );
  7. class  Publication{
  8. var $num_publi;
  9. var $titre_publication;
  10. var $date_publi;
  11.     var $langage;
  12. var $resume;
  13.  
  14.      // le constructeur permet d'initialiser
  15. // les variables membres
  16. /*function Publication($num_publi){
  17.    
  18.   $this->num_publi=$num_publi;}
  19. */
  20. function Publication(){
  21.   $this->num_publi=-1;
  22.   $this->titre_publication;
  23.   $this->date_publi;
  24.   $this->langage;
  25.   $this->resume;
  26.   }
  27. /*******************************************************************/
  28. /* cette fonction permet de fixer toute les informations liées  à la publication */
  29. function setDetail_pub(){
  30. $requete="select * from publication where num_publi=$this->num_publi";
  31.    if(mysql_select_db("bibliographie" )){
  32.       if($result = mysql_query($requete)) {       
  33.        if ($ligne = mysql_fetch_array($result))
  34.    {
  35.   $this->num_publi=$ligne[0];
  36.      $this->titre_publication=$ligne[1];
  37.   $this->date_publi=$ligne[2];
  38.   $this->langage=$ligne[3];
  39.    $this->resume=$ligne[4];
  40.     }
  41.       }
  42.   else echo "Erreur. echec de recherche en base concernant les publications.";
  43.    }else die("Echec de connexion à la base." );
  44. }
  45. /*******************************************************************/
  46. /* cette fonction permet d'afficher un tableau contenant toutes les informations du chercheur  */
  47. function afficherDetail_pub()
  48.  {
  49.    $this->setDetail_pub();
  50.         echo" <table>
  51.                  <tr>     
  52.                    <td><font color='#000099' size='4'>Titre  :</font></td>
  53.                    <td><font color='#000099' size='3'>$this->titre_publication</td>
  54.                  </tr>
  55.     <tr>     
  56.                    <td> <font color='#000099' size='4'>Date :</td>
  57.                    <td><font color='#000099' size='3'>$this->date_publi</td>
  58.                  </tr>
  59.     <tr>     
  60.                    <td> <font color='#000099' size='4'>Language:</td>
  61.                    <td><font color='#000099' size='3'>$this->langage</td>
  62.                  </tr>
  63.      <tr>
  64.     <td> <font color='#000099' size='4'>Résumé  :
  65.      </tr>
  66.     </table>
  67.     <table>
  68.     <tr>
  69.                  
  70.       <TEXTAREA name='resume' rows='10' cols='80' readonly style='position:relative; left:75'>$this->resume</TEXTAREA> </td>
  71.                  </tr>
  72.                  </table>";
  73. }
  74. /*******************************************************************/
  75. /* cette fonction permet de creer un nouvelle publication*/
  76. function creer_publication($titre_publication,$date_publi,$langage,$resume)
  77. {
  78.     $query = "insert into publication (num_publication,titre_publication,date_publication,langage,resume)
  79. VALUES ('','$titre_publication','$date_publi','$langage','$resume');";
  80. $result=mysql_query($query)or die(mysql_error());
  81.     if ($result)
  82.       {
  83.       $this->num_publi = mysql_insert_id();
  84.       }
  85.     else
  86.       {
  87.       $this->num_publi= -1;
  88.       }
  89. }
  90. /*******************************************************************/
  91. /* cette fonction permet de modifier une publication*/
  92. function mod_publication($num_publi,$titre_publication,$date_publi,$langage,$resume)
  93.     {
  94. $query="update publication set titre_publication='$titre_publication', date_publication='$date_publi',langage='$langage',resume='$resume' where num_publication='$num_publi';";
  95.    echo"$query";
  96.  
  97. $result=mysql_query($query) or die (mysql_error());
  98.  echo" le resultat est bien  $result";
  99.     if($result)
  100.       {
  101.       $this->num_publi = $this->num_publi;
  102.       }
  103.     else
  104.       {
  105.       $this->num_publi = -1;
  106.       }
  107.     }
  108. /*******************************************************************/
  109. /* cette fonction permet de supprimer  un chercheur*/
  110. function supp_publication($num_publi)
  111.     {
  112.     $query= "delete from publication where num_publi = '$num_publi';";
  113.    $result= (mysql_query($query))or die (mysql_error());
  114.  
  115.     if ($result)
  116.       {
  117.       $this->num_publi = $num_publi;
  118.       }
  119.     else
  120.       {
  121.       $this->num_publi = -1;
  122.       }
  123.     }
  124. }
  125. ?>
  126. <body>
  127. </body>
  128. </html>


 
en ce qui concerne les publications je saisie , je modifie , je supprime sans problème.
dans la classe publication j'ai les attributs communs d' article et livre  
 
par contre je ne sais pas comment faire pour saisir la suite d'une publication exemple si la publication est un livre il faut saisir isbn, l'editeur, et type de livre.
 
si la publication est un article je doit saisir le nom de revue ou il est publié, numero de page.
 
 
 
voila j'éspère que je suis claire.  

Reply

Marsh Posté le 16-08-2006 à 10:40:24    

dans ta methode creer_livre, il faut que tu appeles la methode creer_publication de la classe mère pour créer un enregistrement dans publication et avoir ton attribut num_publi correc.

Reply

Marsh Posté le 16-08-2006 à 10:43:40    

au fait mon problème c'est que je ne sais pas comment proceder en général car en cemoment j'ai crée une page qui permet de saisir les attributs communs dans la table publication puis à la fin de saisie je propose des liens qui permet de saisir la suite d'une publication selon sa nature si c'est un livre on clic sur le lien livre qui nous donne la page de saisie qui contient isbn, editeur,type de livre puis stockés dans la table livre.
 
je ne sais pas si c'est une bonne façon de proceder avec l'héritage .
j'attends vos avis et conseils  
merci!  

Reply

Marsh Posté le 16-08-2006 à 10:46:47    

anapajari a écrit :

dans ta methode creer_livre, il faut que tu appeles la methode creer_publication de la classe mère pour créer un enregistrement dans publication et avoir ton attribut num_publi correc.


 mais comment appeler cette methode?
dans la classe livre il faut que j'appelle la methode creer livre dans ce cas il faut instancier livre dans sa classe ou instancier publication dans la classe livre,
j'avoue que je n'ai pas compris !


Message édité par zana74 le 16-08-2006 à 11:16:43
Reply

Marsh Posté le 16-08-2006 à 10:46:47   

Reply

Marsh Posté le 16-08-2006 à 11:23:48    

je m'adresse à vous tous, si vous avez un script d'héritage  en php n'ésitez pas à me le poster pour me baser dessus.
 
je vous remercie d'avance!  

Reply

Marsh Posté le 16-08-2006 à 11:32:17    

$this (ton objet) courant pour appeler la méthode
 
Sinon je pense qu'un script ne te servirait a rien, vu que je doute de ta compréhension de "l'objet" en général. AMHA tu devrais revoir la théorie,
Commence par wikipedia ( http://fr.wikipedia.org/wiki/Progr [...] %A9e_objet ) et tu dois avoir des liens qui vont bien en bas

Reply

Marsh Posté le 16-08-2006 à 11:39:45    

merci de ta réponse !
 
je l'ai fait déja dans le constructeur de la classe livre  

Code :
  1. function Livre(){
  2. $this->editeur;   
  3. $this->isbn;   
  4. $this->type_livre; 
  5. $this->Publication();    }


Message cité 1 fois
Message édité par zana74 le 16-08-2006 à 11:41:15
Reply

Marsh Posté le 17-08-2006 à 13:19:00    

zana74 a écrit :

merci de ta réponse !


 
tu devrais lire sa reponse en entier je pense vraiment que certains trucs t echappent
je comprends l idee de ton script mais je crois que tu comprends mal la notion d objet
la tes objets sont completement figés
dis moi comment tu pourras reutiliser tes classes dans un site de voitures  

Reply

Sujets relatifs:

Leave a Replay

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