Votre question

Aide à la correction d'un script PHP, langage POO

Tags :
  • Php
  • Script
  • Programmation
Dernière réponse : dans Programmation
Anonyme
9 Janvier 2012 11:36:05

Bonjour,
J'ai un script php dont je voudrais améliorer le fonctionnement car j'ai repéré une erreur que je n'arrive pas à corriger pourtant j'ai essayé plusieurs solutions et je suis restée bloqué ! Donc je me suis permis de venir sur ce site pour vous demander de l'aide svp...
Alors vous verrez le script ci-dessous, ce script est directement relié à une base de données MYSQL et nous permet d'afficher et chercher un individu journaliste possédant un ID, un nom ou prénom ainsi qu'une carte-presse à partir d'une table "Individu" et d'une table "journaliste" sur la BDD.
Or, ce script affiche les caractéristiques d'un individu que si nous entrons un numéro d'ID, je trouves ceci pas trop pratique et je cherchais une solution pour qu'il les affiche également si on entre seulement le NOM (et le prénom éventuellement) d'un Individu sans avoir besoin d'entrer le numéro d'ID...
J'ai pensé à une boucle IF mais je n'y parviens pas!
Je vous remercies d'avance de me filer un coup de main et si vous repérez d'autres erreurs n'hésitez pas de m'en faire part svp.

  1. <?php
  2. // Functions
  3. class Individu
  4. {
  5. protected $Id;
  6. protected $Nom;
  7. protected $Prenom;
  8.  
  9. public function __construct($x, $y, $z)
  10. {
  11. if($x==-1&&strlen($y)&&strlen($z)){
  12. $q='INSERT INTO Individu(Nom, Prenom) VALUES ("'.$y.'","'.$z.'")';
  13. echo "<h3>".$q."</h3>";
  14. }
  15.  
  16. if($x>0)
  17. $q="select * from Individu where Id>=\"$x\"";
  18.  
  19. else{
  20. if(!strlen($x))$x=0;
  21. if(!strlen($y))$y = "NULL";
  22. if(!strlen($z))$z = "NULL";
  23. $q="select * from Individu where Id>=\"$x\" AND (Nom=\"$y\" OR Prenom=\"$z\")";
  24. }
  25. echo "<h3>".$q."</h3>";
  26. $p=mysql_query($q);
  27. if($r->Id>0){
  28. $this->Id=$r->Id;
  29. $this->Nom=$r->Nom;
  30. $this->Prenom=$r->Prenom;
  31. }
  32. else{
  33. $this->Id = "Aucun";
  34. $this->Nom="Inconnu";
  35. $this->Prenom="Inconnu";
  36. }
  37. }
  38. public function display()
  39. {
  40. echo "<hr><h2>Renseignements</h2>";
  41. echo "<h3>Individu si existant:</h3>";
  42. echo "<UL>";
  43. echo "<LI>".$this->Id;
  44. echo "<LI>".$this->Nom;
  45. echo "<LI>".$this->Prenom;
  46. echo "</UL>";
  47. }
  48. }
  49.  
  50. class Journaliste extends Individu
  51. {
  52. protected $Carte;
  53. protected $Id_journ;
  54. public function __construct($x, $y, $z, $c)
  55. {
  56. parent::__construct($x,$y,$z);
  57. $q="select * from Journaliste where Id_ind =".$this->Id;
  58. $p=mysql_query($q);
  59. echo "<h3>".$q."</h3>";
  60. if($r = mysql_fetch_object($p)){
  61. $this->Carte=$r->Carte;
  62. $this->Id_journ=$r->Id;
  63. }
  64. elseif($x==-1&&$c>0){
  65. $n='INSERT INTO Journaliste(Id_ind, Carte) VALUES ('.$this->Id.','.$c.')';
  66. echo "<h3>".$n."</h3>";
  67. $this->Id_journ=$r->Id;
  68. $q="select * from Journaliste where Id =".mysql_insert_id();
  69. $p=mysql_query($q);
  70. echo "<h3>".$q."</h3>";
  71. if($r = mysql_fetch_object($p)){
  72. $this->Carte=$r->Carte;
  73. }
  74. }
  75. else{
  76. $this->Carte="Aucune";
  77. $this->Id_journ="Non";
  78. }
  79. }
  80.  
  81. public function display()
  82. {
  83. parent::display();
  84. echo "<h3>Carte de presse si existante:</h3>";
  85. echo "<UL>";
  86. echo "<LI>".$this->Carte;
  87. echo "</UL>";
  88. }
  89. }
  90.  
  91. /////////////////////////////////
  92. // Main
  93. /////////////////////////////////
  94.  
  95. ?>
  96.  
  97. <html>
  98. <head>
  99. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  100. <link rev="made" href="mailto:*****@****.fr" />
  101. <link rel="stylesheet" type="text/css" href="style.css" />
  102. </head>
  103. <body>
  104. <h1>Rechercher/Ajouter journaliste</h1>
  105. <form action="newtestOO.php" ENCTYPE="multipart/form-data" METHOD="POST">
  106. <table>
  107. <tr>
  108. <th>Login</th>
  109. <th>Pasword</th>
  110. <th>Base</th>
  111. </tr>
  112. <tr>
  113. <td>
  114. <input type="text" name="login" value="<?php echo $_POST['login']?>" size="24" class="textfield"/>
  115. </td>
  116. <td>
  117. <input type="password" name="pwd" value="<?php echo $_POST['pwd']?>" size="24" class="textfield"/>
  118. </td>
  119. <td>
  120. <input type="text" name="base" value="<?php echo $_POST['base']?>" size="24" class="textfield"/>
  121. </td>
  122. </tr>
  123. </table>
  124. <table>
  125. <tr>
  126. <th>Id</th>
  127. <th>Nom</th>
  128. <th>Prenom</th>
  129. <th>Carte</th>
  130. <tr>
  131. <td>
  132. <input type="text" name="Id" value="<?php echo $_POST['Id']?>" size="5" class="textfield"/></td>
  133. <td>
  134. <input type="text" name="Nom" value="<?php echo $_POST['Nom']?>" size="24" class="textfield"/>
  135. </td>
  136. <td>
  137. <input type="text" name="Prenom" value="<?php echo $_POST['Prenom']?>" size="24" class="textfield"/>
  138. </td>
  139. <td>
  140. <input type="text" name="Carte" value="<?php echo $_POST['Carte']?>" size="24" class="textfield"/>
  141. </td>
  142. </table>
  143. <input value="Exécuter" type="submit" id="input_go" />
  144. <hr>
  145. <h2>SQL utilisé</h2>
  146. <?php
  147.  
  148. //Opening Database
  149.  
  150. $db = mysql_connect('localhost',$_POST['login'],$_POST['pwd']);
  151. if($db){
  152. mysql_select_db($_POST['base']);
  153.  
  154. //Calls
  155.  
  156. $x= new Journaliste($_POST['Id'],$_POST['Nom'],$_POST['Prenom'],$_POST['Carte']);
  157. $x->display();
  158.  
  159. //Closing
  160. }
  161. ?>
  162.  
  163. </body>
  164. </html>

Autres pages sur : aide correction script php langage poo

a c 232 L Programmation
9 Janvier 2012 11:46:33

Salut,

Il me semble que ton code le fait déjà non ?
Si $x est inférieur à -1, tu devrais passer dans le else de la ligne 21 et faire une recherche par nom/prénom
non ?
Anonyme
9 Janvier 2012 11:50:41

Non $x renvoie à la variable ID justement et non à la variable "NOM"
et si $x<-1, il affiche "aucun" nom et "aucun" prénom car il y a la condition Id>=\"$x\" AND (Nom=\"$y\" OR Prenom=\"$z\") ligne 25, qui n'affiche le résultat que si un ID est inséré sinon il n'affiche aucun résultat
Contenus similaires
Pas de réponse à votre question ? Demandez !
a c 232 L Programmation
9 Janvier 2012 13:58:20

je sais bien que $x renvoie à la variable ID...

Mais la condition est bonne, non ?
Imaginons que $x soit égal à -2, que $y et $z soient définis, on va dire $y = toto et $z = tata
La condition :
Id>=\"$x\" AND (Nom=\"$y\" OR Prenom=\"$z\")
deviendrait:
Id>="-2" AND (Nom="toto" OR Prenom="tata")

Id >= -2 c'est toujours vrai, alors il suffit que le reste soit vrai, c'est à dire que tu aies un individu avec le nom toto ou le prénom tata

Anonyme
9 Janvier 2012 14:27:02

Oui j'ai compris je ne doutes pas sur l'efficacité de cette requête, seulement maintenant je veux obtenir un individu en entrant sur le formulaire seulement le "Nom" sans avoir besoin de rentrer obligatoirement l'ID correspondant...
Vous me comprenez ?
Anonyme
9 Janvier 2012 14:59:15

si vous ne voyez pas la solution à mon problème, est ce que vous voyez d'autres erreurs susceptibles d'être corrigés afin d'améliorer le fonctionnement de ce code ? merci d'avance
a c 232 L Programmation
9 Janvier 2012 19:14:22

Bah non on a pas l'impression que tu aies compris...

Déjà est-ce que ça fonctionne si tu rentres -2 avec un nom ? Ca te retourne bien la personne recherchée ou pas ?
Si c'est le cas, dans ton code, tu regardes si $x est vide, s'il est vide, tu le mets à -2, et ça exécutera le code qu'il faut.
Ou sinon tu changes les conditions
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS