Remplacement . " " .

Nya
Invité n'ayant pas de compte PHPfrance

16 août 2009, 19:23

Bonjour,

Ayant récupérer un ancien programme fonctionnant via un navigateur web fait avec une version 4 de php, je fais des corrections pour qu'il puisse fonctionner avec php 5.3.0.
Quand je clique sur un lien, une fenêtre s'ouvre (ce qui est normal),mais j'obtiens ce message.

Notice: Trying to get property of non-object in C:\wamp\cabinetcvs\app\pageDossierBriocheCabPatient.inc on line 20

Si j'édite le fichier pageDossierBriocheCabPatient.inc, voici ce que j'ai à la ligne 20.

$nomplein = $patients->nomp . " " . $patients->prenom;

Pourriez-vous me dire ce qui pose problème,svp? dois-je remplacer les . " " . ?

Si oui, par quoi

Eléphant du PHP | 369 Messages

16 août 2009, 19:52

Bonjour,
Ayant récupérer un ancien programme fonctionnant via un navigateur web fait avec une version 4 de php, je fais des corrections pour qu'il puisse fonctionner avec php 5.3.0.
Quand je clique sur un lien, une fenêtre s'ouvre (ce qui est normal),mais j'obtiens ce message.
Notice: Trying to get property of non-object in C:\wamp\cabinetcvs\app\pageDossierBriocheCabPatient.inc on line 20 Si j'édite le fichier pageDossierBriocheCabPatient.inc, voici ce que j'ai à la ligne 20.
$nomplein = $patients->nomp . " " . $patients->prenom;
Pourriez-vous me dire ce qui pose problème,svp? dois-je remplacer les . " " . ?
Si oui, par quoi
Salut,

Je te conseille de faire un :
print_r($patients);
...déduction faite après lecture du message php. Non object, non instance.
Pour les quotes et/ou doubles quotes: aucun soucis. En tout cas utilsés ainsi ;)

@+ bon code ;)

Nya
Invité n'ayant pas de compte PHPfrance

16 août 2009, 20:07

Je ne comprends pas bien ce que je dois faire avec ce print_r() dans

$nomplein = $patients->nomp . " " . $patients->prenom;

Où cela prend-il place?

Eléphant du PHP | 369 Messages

16 août 2009, 20:38

Re,
Je ne comprends pas bien ce que je dois faire avec ce print_r() dans
$nomplein = $patients->nomp . " " . $patients->prenom;
Où cela prend-il place?
Désolé je le refais lol

Ta variable $patients n'est pas un objet.
Et pour confirmer la chose, je pensais que tu la connaissais, je te proposais d'écrire
(par exemple, juste avant ta concaténation) la fonction print_r.

http://www.manuelphp.com/php/function.print-r.php

@+ bon code ;)

Nya
Invité n'ayant pas de compte PHPfrance

16 août 2009, 21:47

Merci pour le tuyau, je vais lire tout ça.

Nya
Invité n'ayant pas de compte PHPfrance

18 août 2009, 20:59

Bonjour,

Je remets ça, mais la je sèche...

Voici un bout du code:
#Constructeur
  function pageDossierBriocheCabPatient(&$dbr) {
    global $fdosbrioche;
    $this->pageDossierBriocheCab($dbr);
    $this->pv = new PPageVierge();
    $patients = $this->dbr->rs->getEnr("patients", $this->dbr->recup);
    $nomplein = $patients->nomp . " " . $patients->prenom;                  ici la ligne 20 qui me pose problème...
    $acb = new AutoCheckbox();
    if (! $this->dbr->options->getOption("NOUV_DOSS")){
      $futopt = new optionsBriocheCab($this->dbr->options->getChaine());
      $futopt->setOption("NOUV_DOSS", 1);
      $c = new TPanel(5, 1);
      $x = new BoutonImage("Nouveau patient", "images/nouveau.gif", 32, 32,
                           "javascript:if(! qModif()) {document.forms.donnees.options.value='" .
                           $futopt->getChaine() .
                           "';document.forms.donnees.action.value=" .
                           ($this->dbr->actif) . ";document.forms.donnees.submit();}",
Ce qui me chiffone, c'est que la ligne au dessus, $patients = qqch...

J'ai encore besoin de vos lanternes...

Merci.

Nya

Eléphant du PHP | 369 Messages

19 août 2009, 09:21

Salut,
Bonjour,
Je remets ça, mais la je sèche...
Voici un bout du code:
[...]
<?php
   //
   // [HS] Humour
   //
   $txt = "Pour une plus grande compréhension, merci d'utiliser les balises php...";
   echo $txt;
   die(0);
?>
Ce script, hors de sa class, sert pas à grand chose dsl.
Sans descriptif, ni ce dont il a besoin pour fonctionner,
c'est difficile à suivre.

Exemple:

L'argument de ta fonction est donné en référence, ok, mais $dbr, c'est quoi?
Si c'est un objet, en php5, marquer sa référence en argument est inutile.

As-tu fais un print_r sur ton onbjet?
Quel en est le résultat?

Ta variable $fdosbrioche, pourquoi est-elle globale?
-les "global" sont à proscrirent depuis... !

Pardonne cette question mais:
Hum, ce script est pour un usage perso ou est pour usage prof?
...Parano quand tu nous tiens, lol

Pour info: si tu veux développer, la premiere question à se poser c'est:
"Est-ce qu'un autre codeur pourra lire/comprendre mon code?"
Alors essaie que ce soit le cas, la c'est... (no offense hein) illisible.
[...]
Ce qui me chiffone, c'est que la ligne au dessus, $patients = qqch...
J'ai encore besoin de vos lanternes...
Merci.
Nya
Je ne peux t'aider plus si je n'ai pas les éléments, désoler, revois ta
copie... 'fin ton post peut-être que ce sera possible par la suite mais la,
c'est impossible.

@+ ;)

PS:Toujours sans offense de ma part, je te conseille d'étudier un peu la POO et Les différentes
normes dont l'excellent: http://www.geekto.be/index.php/2008/05/ ... ement-php/

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 août 2009, 09:34

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Nya
Invité n'ayant pas de compte PHPfrance

20 août 2009, 19:15

@Zeus

Je freai attention quant à l'utilisation de balises pour la clareté des messages :oops:

@FuZZyLine

Merci pour les remarques, j'en prends note.

Comme dis plus haut, c'est un code que j'ai récupéré. Il s'agit d'un programme de facturation et de comptabilité pour les médecins en Suisse, créer par un médecin suisse.
Il est fait pour fonctionner avec un navigateur internet, ainsi, il est possible de l'utiliser en monoposte ou en multipostes.

Donc, pas de soucis pour tes remarques, je ne les prends pas pour moi :wink:

A l'origine, il a été développer pour un serveur LAMP. Il a été créer avec du php 4.3.0, sauf erreur. Je sis pas si ça explique l'utilisation de variables globales
(en même temps, si une fois débogué, le programme fonctionne bien, en quoi cela pose-t-il problème?)

Mon but, n'est pas de modifier fondamentalement le code, mais de le "déboguer" pour de faire en sorte qu'il tourne avec un serveur WAMP ou LAMP avec (PHP5)
Le code n'est pas clair, mais je sais que ça fonctionne (il y a un site de démo) et dans un premier temps, je souhaite juste faire en sorte qu'il tourne avec PHP5.
Son utilisation est personnel. Il se peut qu'une envie de le proposer à des gens me viennent, mais pas sans avoir compris tous les rouages et améliorer certains points, comme tu le mentionnes. Au fait, pourquoi parles-tu de parano :?:

Je ne sais que répondre pour le print_r(), car je n'ai pas compris ce que je dois faire avec...

Merci pour le lien sur geekto, je connaissais pas.

Nya

Eléphant du PHP | 369 Messages

20 août 2009, 20:06

[...]
Merci pour les remarques, j'en prends note.
Comme dis plus haut, c'est un code que j'ai récupéré. Il s'agit d'un programme de facturation
et de comptabilité pour les médecins en Suisse, créer par un médecin suisse.
Il est fait pour fonctionner avec un navigateur internet, ainsi, il est possible de l'utiliser en monoposte
ou en multipostes.
Donc, pas de soucis pour tes remarques, je ne les prends pas pour moi :wink:
A l'origine, il a été développer pour un serveur LAMP. Il a été créer avec du php 4.3.0, sauf erreur.
Je sis pas si ça explique l'utilisation de variables globales
(en même temps, si une fois débogué, le programme fonctionne bien, en quoi cela pose-t-il [*]problème?)
Mon but, n'est pas de modifier fondamentalement le code, mais de le "déboguer" pour de faire en sorte
qu'il tourne avec un serveur WAMP ou LAMP avec (PHP5) Le code n'est pas clair, mais je sais que ça fonctionne
(il y a un site de démo) et dans un premier temps, je souhaite juste faire en sorte qu'il tourne avec PHP5.
Son utilisation est personnel. Il se peut qu'une envie de le proposer à des gens me viennent, mais pas sans
avoir compris tous les rouages et améliorer certains points, comme tu le mentionnes. Au fait, pourquoi
parles-tu de [**]parano :?:
Je ne sais que répondre pour le [***]print_r(), car je n'ai pas compris ce que je dois faire avec...
Merci pour le lien sur [****]geekto, je connaissais pas.
Nya
[*]Moins il y a de globales plus tu gères l'intégrité des datas IN/OUT (j'en vois sourire? lol)
[**] Tu viens de répondre à ma question et me confirmer que je le suis pas ;)
[***]Je t'avais mis un lien je crois sur cette fonction... tsss, tsss. l'explication est très bien ;)
[****]Donc, maintenant à toi de modifer ton script en conséquence pour qu'il soit à la norme ;)

Pour revenir au sujet.
Tant que tu n'aporteras pas le maximum d'informations on (moi au tout cas) ne pourrons t'aider.
La, c'est avancer dans la brume, une perte de temps pour toi, une perte de temps pour nous.

Déja quelles sont tes connaissances/notions en php et POO?

Créé un fichier, copie ce bout de code et lance le.
<?php
   class Test
   {
     /**
      * test_01, Variable de test privée
      *
      *  @var integer
      */
      private $_test_01= NULL;

     /**
      * test_02, Variable de test publique
      *
      *  @var integer
      */
      public $test_02 = NULL;

     /**
       * Constructeur 
       *
       * param: String, chaine de teste à assigner
       * return: none, le constructeur ne renvoit JAMAIS quoi que ce soit
       */
      function function __construct($tst)
      {
         /**
          * Vérifie s'il s'agit bien d'une chaine...
          * la coller ici était pas utile mais j'aime bien les tests lol
          */
         if(!is_string($tst)) die("Argument invalide !");

         $this -> _test_01 = $tst;  
      }
   }

// Ce sui suit provoque une erreur
//
$tst ->  test_02 = "TOTO";

// ---------------------------------

// La, l'instanciation est faite, donc l'objet existe: pas d'erreur
//
$tst = new Test("Essai");
print_r($tst); 
//
$tst -> test_02 = "TOTO";
print_r($tst);

exit(0);
?>
Comme tu le vois print_r sert à lister un tableau/object, voili, voilou...

L'interet de print_r est primordiale (tu aprendras aussi qu'il exite var_dump, ...etc),
si tu n'en saisis pas la porté c'est domage. Je te conseille vivement de lire/bouquiner.
Et ce, sans offense, hein ;)

@+ ;)

PS: Si tu observes bien la class elle t'en aprendra déja pas mal... 'fin je pense ;)