[RESOLU] pb fonction

Eléphant du PHP | 166 Messages

04 juin 2018, 23:38

Bonjour

Je me lance dans la creation de fct.
j'ai un formulaire avec qqes champs, exemple "nom".
j'ai creer une fct :

Code : Tout sélectionner

<?php class EntreePerso{ private $nom; //Setter public function setNom($newNom){ if (isset($newNom) & !empty($newNom)){ $this -> nom = $newNom; } } //Getter public function getNom(){ return $this -> nom; } } ?>
et dans la page html j'ai se bout de code :

Code : Tout sélectionner

include('../classe/entreePerso.class.php'); $nom = new EntreePerso(); $nom->setNom($_POST['nom']); echo $nom->getNom();
Quand, je lance le navigateur j'ai une erreur :
Notice: Undefined index: nom in C:\
il suffit d'appuyer 1 fois sur le Btn "valide" du formulaire et ca fct ??
je pense que cela vient de mon test dans la class...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 juin 2018, 00:20

Bonjour,

Dans le message d'erreur, tu as la ligne et le nom du fichier où se produit l'erreur.
Quelle est la ligne concernée ?

Si il s'agit de la ligne $nom->setNom($_POST['nom']); c'est probablement parce que tu utilises une variable sans vérifier auparavant qu'elle existe (et en l'occurence si tu as un message d'erreur c'est qu'elle n'existe pas avant l'envoi de ton formulaire).
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 166 Messages

05 juin 2018, 12:46

Bonjour
oui cela concerne bien la ligne que tu as cité. Mais pourtant la fonction fait bien le test avec :
if (isset($newNom) & !empty($newNom))

Mammouth du PHP | 2703 Messages

05 juin 2018, 12:55

non, quand on écrit :
$nom->setNom($_POST['nom']);
cela exécute d'abord :
$_POST['nom']
ce qui génère le warning quand on est pas en méthode post après la soumission du formulaire.
puis la fonction setNom.

Eléphant du PHP | 166 Messages

05 juin 2018, 13:16

Merci or1
j'ai rajouté ceci :
$formNom = isset($_POST['nom']) ? $_POST['nom'] : NULL;

$nom = new EntreePerso();

$nom -> setNom($formNom);
echo $nom->getNom();

cela a l'ai de fonctionner

Eléphant du PHP | 166 Messages

06 juin 2018, 09:47

bonjour
j'ai un autre soucis, maintenant cela affiche une erreur :
Catchable fatal error: Object of class EntreePerso could not be converted to string in C:
à la ligne 118. c'est à dire celle ci :
$req->execute(array('nom' => $nom,'prenom' => $prenom,'qualif' => $qualif));

sachant que 'qualif' dans mon code fait parti de mon formulaire sous cette forme :
<select class="form-adjust" name="qualif">
<option value="Responsable">Responsable</option>
<option value="Technicien">Technicien</option>
</select>
et que dans ma Bdd le champ qualif est de type "Varchar".....

Mammouth du PHP | 2703 Messages

06 juin 2018, 10:01

le message est parlant.
$nom = new EntreePerso();
sauf à ce que $nom ai été affecté par autre chose ensuite. c'est une objet de la classe EntreePerso et non une chaine de caractère. un objet ne peut pas être converti en string, d'où l'erreur.
mettre des bons noms de variable aurait éviter cette erreur.