php objet insertion base de donnée

php objet insertion base de donnée - PHP - Programmation

Marsh Posté le 19-04-2010 à 15:18:54    

bonjour
 
voila je voudrai insérer des informations récupérer via un formulaire dans une base donnée je doit faire cette insertion en php objet  
j'aimerai savoir comment prendre en compte mes champs recuperer dans des fonction :
 

Code :
  1. $nom=$_POST['nom'];
  2. $prenom=$_POST['prenom'];
  3. class verif_form
  4. {
  5. var $nom;
  6. var $prenom;
  7. function vide($champ,$champ1)
  8. {
  9. if (empty($_POST['nom'])or empty($_POST['prenom']))
  10.  {
  11.  echo "vous devez remplir tout les champs";
  12.  return false;
  13.  }
  14.  else
  15.  return true;
  16.          }
  17. }


 
a partir de ce code je voudrai que var $prenom et var $nom prenent les valeurs que l'utilisateur rentre dans le formulaire mais je ne sais pas comment faire ca dans ma classe  
 
merci de votre aide je débute en objet

Reply

Marsh Posté le 19-04-2010 à 15:18:54   

Reply

Marsh Posté le 19-04-2010 à 15:22:30    

Salut,
 
Je comprends mal ta question... quel est le souci d'utiliser une classe pour affecter des variables ?

Reply

Marsh Posté le 19-04-2010 à 15:26:16    

ben en fait comme tu le voit dans le code pour verifier si le champ est vide j'utilise  $_POST['nom']  mais je voudrais utiliser $nom ( la variable a laquelle j'ai affecté  $_POST['nom'] )
car plus court et plus simple  
 
j'espère avoir été plus clair sinon demandé je suis dispo  
en tout cas merci d'avoir pris la peine de lire mon post


Message édité par cyrildu07 le 19-04-2010 à 15:26:29
Reply

Marsh Posté le 19-04-2010 à 16:12:54    

OUPS j'avais pas bien lu, autant pour moi :/

 

Le code d'une classe est plutôt du style :

 
Code :
  1. class maclasse {
  2.   // Déclaration des propriétés de la classe
  3.   var $_nom;
  4.   var $_prenom;
  5.   function __construct (paramètres) {
  6.     // Ici, tu mets tout le code qui sera exécuté lors de la création de l'instance
  7.     $this->_nom = $_POST['nom'];
  8.     $this->verif_form();
  9.   }
  10.   function verif_form() {
  11.     // Là tu refous le code que tu as mis dans vide()
  12.   }
  13.   function __destruct() {
  14.     // Ici, le code qui sera exécuté lors de la destruction de l'instance (facultatif)
  15.   }
  16. }


Message édité par Fred999 le 19-04-2010 à 16:13:49
Reply

Marsh Posté le 19-04-2010 à 16:17:19    

Reply

Marsh Posté le 19-04-2010 à 16:23:25    

super merci  
 
le $this->verif_form(); veut dire que le _nom pourra etre utilisé dans ma fonction verif_form

Reply

Marsh Posté le 19-04-2010 à 17:11:45    

le $this->_nom, pas le $_nom


Message édité par Fred999 le 19-04-2010 à 17:11:53
Reply

Marsh Posté le 19-04-2010 à 18:23:09    

Voila j'ai apliqué ce que tu ma dit mais cela ne semble pas fonctionner :
 

Code :
  1. class verif_form
  2. {
  3. var $_nom;
  4. var $_prenom;
  5.  private static $adi = 0;
  6. function construct($_nom,$_prenom)
  7. {
  8.  $this->_nom = $_POST['nom'];
  9.  $this->_prenom = $_POST['prenom'];
  10.  $this->_pseudo= $_POST['pseudo'];
  11.  $this->_mail = $_POST['mail'];
  12.  $this->_mail2 = $_POST['mail2'];
  13.  $this->_password = $_POST['password'];
  14.  $this->_password2= $_POST['password2'];
  15.  $this->_ville =$_POST['ville'];
  16.  $this->_codepostal=$_POST['codepostal'];
  17.  $this->_adresse =$_POST['adresse'];
  18.      
  19.    $this->vide();
  20. }
  21. function vide($champ,$champ1,$champ2,$champ3,$champ4,$champ5,$champ6,$champ7,$champ8,$champ9)
  22. {
  23. if (empty($this->_nom)or empty($_POST['prenom'])or empty($_POST['pseudo'])or empty($_POST['mail'])or empty($_POST['mail2'])or empty($_POST['password'])or empty($_POST['password2'])or empty($_POST['ville'])or empty($_POST['codepostal'])or empty($_POST['adresse']))
  24.  {
  25.  echo "vous devez remplir tout les champs";
  26.   self::$adi++;
  27.  return false;
  28.  }
  29.  else
  30.  return true;
  31. }


 
cela me met tout le temps le message comme quoi des champs sont vides alors que non  :??:

Reply

Marsh Posté le 20-04-2010 à 00:52:43    

Oulah.

 

Tu as 9 arguments à la méthode vide() (c'est quoi ce nom ???), mais tu ne les renseigne pas quand tu l'appelles.

 

Dedans tu n'utilise aucun de ces argument et tu utilises un mélange de propriété de l'objet et de $_POST...

 

Je pense qu'il faut que tu relises ton code, ça n'a aucun sens là.

Message cité 1 fois
Message édité par theredled le 20-04-2010 à 00:53:06

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-04-2010 à 10:10:02    

theredled, oui, effectivement :D
 
Et sinon, s'il t'indique que des champs sont vides, c'est sans doute car... des champs sont vides [:icon3]
 
A toi, donc, de tracer la valeur de chaque champ pour voir lequel pose problème.

Reply

Marsh Posté le 20-04-2010 à 10:10:02   

Reply

Marsh Posté le 20-04-2010 à 12:01:00    

theredled a écrit :

Oulah.
 
Tu as 9 arguments à la méthode vide() (c'est quoi ce nom ???), mais tu ne les renseigne pas quand tu l'appelles.
 
Dedans tu n'utilise aucun de ces argument et tu utilises un mélange de propriété de l'objet et de $_POST...
 
Je pense qu'il faut que tu relises ton code, ça n'a aucun sens là.


 
 
merci d'avoir répondu si j'ai melangé c'est pour faire des test lorsque je met que des POST cela marche bien mais apartir du moment ou je met des $this->_nom ca ne marche plus  
 
pourquoi 9 arugument car apres je creer l'objet de la sorte :
 
$test = new verif_form();
$test -> vide("nom","prenom","pseudo","mail","mail2","password","password2","ville","codepostal","adresse" );
 
je peut ainsi vérifier les champs que je souhaite en les mettant en argument  
sinon mon code était bon ou pas concernant le $this->_nom c'est comme ca qu'il fallait le mettre ??

Reply

Marsh Posté le 20-04-2010 à 12:04:32    

cyrildu07 a écrit :

 


merci d'avoir répondu si j'ai melangé c'est pour faire des test lorsque je met que des POST cela marche bien mais apartir du moment ou je met des $this->_nom ca ne marche plus

 

pourquoi 9 arugument car apres je creer l'objet de la sorte :

 

$test = new verif_form();
$test -> vide("nom","prenom","pseudo","mail","mail2","password","password2","ville","codepostal","adresse" );

 

je peut ainsi vérifier les champs que je souhaite en les mettant en argument
sinon mon code était bon ou pas concernant le $this->_nom c'est comme ca qu'il fallait le mettre ??


Ton code ne rime à rien, repostes-en un correct, ou apprends les bases de la POO si tu ne les connais pas.


Message édité par theredled le 20-04-2010 à 12:04:43

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-04-2010 à 12:51:26    

cette fois j'ai rectifier quelque choses  
 

Code :
  1. class verif_form
  2. {
  3. var $_nom;
  4. var $_prenom;
  5.  private static $adi = 0;
  6. function construct($_nom,$_prenom)
  7. {
  8.  $this->_nom = $_POST['nom'];
  9.  $this->_prenom = $_POST['prenom'];
  10.  $this->_pseudo= $_POST['pseudo'];
  11.  $this->_mail = $_POST['mail'];
  12.  $this->_mail2 = $_POST['mail2'];
  13.  $this->_password = $_POST['password'];
  14.  $this->_password2= $_POST['password2'];
  15.  $this->_ville =$_POST['ville'];
  16.  $this->_codepostal=$_POST['codepostal'];
  17.  $this->_adresse =$_POST['adresse'];
  18.      
  19.    $this->vide();
  20. }
  21. function vide($champ,$champ1,$champ2,$champ3,$champ4,$champ5,$champ6,$champ7,$champ8,$champ9)
  22. {
  23. if (empty($champ)or empty($champ1)or empty($champ2)or empty($champ3)or empty($champ4)or empty($champ5)or empty($champ6)or empty($champ7)or empty($champ8)or empty($champ9))
  24.  {
  25.  echo "vous devez remplir tout les champs";
  26.   self::$adi++;
  27.  return false;
  28.  }
  29.  else
  30.  return true;
  31. }
  32. }
  33. $test = new verif_form();
  34. $test -> vide($_POST['nom'],"prenom","pseudo","mail","mail2","password","password2","ville","codepostal","adresse" );

Reply

Marsh Posté le 20-04-2010 à 13:18:47    

Toi t'as pas été voir le lien que j'ai filé (ou tu l'as lu en diagonale) :D

 

C'est pas construct mais __construct le nom de la fonction. __construct et __destruct sont des fonctions au nom réservé, qui sont AUTOMATIQUEMENT appelées lors de la création et de la destruction de l'instance.

 

Idéalement, tu n'utilises pas la variable $_POST dans le code de la classe.


Message édité par Fred999 le 20-04-2010 à 13:19:36
Reply

Marsh Posté le 20-04-2010 à 13:32:20    

desolé je pensait que les tirait n'était pas obligé  
mais sinon mon dernier bout de code marche mais j'aimerai mettre le $this->nom dans
 
 

Code :
  1. $test -> vide($_POST['nom'],"prenom","pseudo","mail","mail2","password","password2","ville","codepostal","adresse" );


 
comme ca :  
 

Code :
  1. $test -> vide($this->_nom,"prenom","pseudo","mail","mail2","password","password2","ville","codepostal","adresse" );


 
mais ca me met une jolie erreur :
Fatal error: Non-abstract method verif_form::insert() must contain body in

Reply

Marsh Posté le 20-04-2010 à 13:57:13    

Bin oui, c'est bien ce que je disais, t'as pas été lire le lien...
 
Dans le bout de code de la fin (i.e. HORS DECLARATION DE CLASSE), tu ne peux pas utiliser $this car on ne l'utilise que dans la déclaration de la classe.
 
Tu peux accéder aux propriétés de l'instance (comprends bien la différence entre classe et instance) par :
 
$instance = new maclasse();
$instance->_nom = 'toto';

Reply

Marsh Posté le 20-04-2010 à 14:17:27    

je comprend pas tout et si je veux mettre autre chose que $_POST['nom'] dans justement une variable plus courte qui comprend $_POST['nom'] faut que je fasse comment  
 

Code :
  1. $test -> vide($_POST['nom'],"prenom","pseudo","mail","mail2","password","password2","ville","codepostal","adresse" );

Reply

Marsh Posté le 20-04-2010 à 14:28:01    

Lors de la création de l'instance de la classe, tu peux utiliser des paramètres :
 
$instance = new maclasse($param1, $param2...);
 
Ces paramètres sont ceux de la fonction __construct de ta classe.
 
Est-ce plus clair ? C'est vrai qu'à me relire, c'est un peu lapidaire :o

Reply

Marsh Posté le 20-04-2010 à 14:31:38    

non pas a te relire a comprendre  :D  je suis un petit peu perdu

Reply

Marsh Posté le 20-04-2010 à 14:39:42    

Pour donner un bref exemple :
 
Déclaration de la classe
 

Code :
  1. class maclasse {
  2.   var $_nom;
  3.   var $_prenom;
  4.   function __construct($name, $firstname) {
  5.     $this->_nom = $name;
  6.     $this->_prenom = $firstname;
  7.   }
  8.   function affiche_identite() {
  9.     echo 'Je m\'appelle ' . $this->_prenom . ' ' . $this->_nom . '.';
  10.   }
  11. }


 
Utilisation de la classe
 

Code :
  1. // Création de l'instance de ta classe
  2. $identite = new maclasse('Wahiba', 'Ribéry (mais plus pour longtemps)');
  3. // Appel à la fonction affiche_identite() de l'instance
  4. $identite->affiche_identite();
  5. // Donnera sur la sortie standard
  6. => Je m'appelle Wahiba Ribéry (mais plus pour longtemps).


 
J'espère que c'est plus clair maintenant.

Reply

Marsh Posté le 20-04-2010 à 14:49:57    

le truc c'est que ca je comprend niquel mais moi mon truc me semble plus compliqué est l'est d'ailleur mais moi dans mon exemple ca donnerai ca si je veux recuperer mes champs :  
 
 

Code :
  1. class maclasse {
  2.   var $_nom;
  3.   var $_prenom;
  4.   function __construct($_POST['nom'], $_POST['firstname']) {
  5.     $this->_nom = $_POST['nom'];
  6.     $this->_prenom = $_POST['firstname'];
  7.   }
  8.   function affiche_identite() {
  9.     echo 'Je m\'appelle ' . $this->_prenom . ' ' . $this->_nom . '.';
  10.   }
  11. }


[edit]
euh non en  fait dans les chou ça marchera pas ça par contre:
 

Code :
  1. $identite = new maclasse($_POST['nom'], $_POST['firstname']);


Message édité par cyrildu07 le 20-04-2010 à 14:58:08
Reply

Marsh Posté le 20-04-2010 à 14:51:17    

Quelle patience, c'est digne d'un modo :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-04-2010 à 14:53:22    

theredled a écrit :

Quelle patience, c'est digne d'un modo :o


 
en meme temps si on m'explique pas je risque pas de comprendre, après c'est le but des forum d'aider c'est pas comme si je demandais du travail tout fait  ;)  

Reply

Marsh Posté le 20-04-2010 à 14:58:29    

cyrildu07 a écrit :


 
en meme temps si on m'explique pas je risque pas de comprendre, après c'est le but des forum d'aider c'est pas comme si je demandais du travail tout fait  ;)  


Le truc c'est que je ne comprend pas pourquoi tu veux faire ça "en objet" alors que visiblement tu n'a aucune idée d'en quoi ça consiste ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-04-2010 à 14:59:52    

theredled a écrit :


Le truc c'est que je ne comprend pas pourquoi tu veux faire ça "en objet" alors que visiblement tu n'a aucune idée d'en quoi ça consiste ?


 
Pour tout te dire je l'ai tout fait en procedural et marche a la perfection mais but de mon TP je doit tout transformer en objet (pour apprendre  un peu mieux l'objet )

Reply

Marsh Posté le 20-04-2010 à 15:01:08    

Ah, c'est un TP... Tu as lu tes cours déja ?


Message édité par theredled le 20-04-2010 à 15:01:46

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-04-2010 à 15:03:03    

theredled a écrit :

Quelle patience, c'est digne d'un modo :o


:D

 

cyril faut pas le prendre mal :o

 

En fait dans le 1er post j'ai fait un truc pas propre (utiliser $_POST dans le corps de la classe) mais c'est parce qu'on procède déjà comme ça dans plein d'écrans à mon taf... et du coup j'suis sûr que ça l'a enduit d'erreur, du coup j'me sens coupable :/

 

Je pense qu'on lui a demandé de le faire en objet, il a pas eu le choix :D (il a 19 ans)

 

cyril, compare ton code :

 

function __construct($_POST['nom'], $_POST['firstname']) {

 

et le mien :

 

function __construct($name, $firstname) {

 

$_POST c'est une variable globale qui est affectée lorsqu'on récupère les données d'un formulaire, cela n'a aucun sens de l'utiliser en tant qu'argument d'une fonction.

 

edit : et j'ai des doutes, oui, sur la lecture du cours :o


Message édité par Fred999 le 20-04-2010 à 15:03:26
Reply

Marsh Posté le 20-04-2010 à 15:13:09    

je vais simplifier le tout pour faire des essai car la trop de choses merci pour votre aide   :) je reviendrai quand j'aurais plus capté  

Reply

Marsh Posté le 22-04-2010 à 15:36:05    

j'ai un autre probleme que je ne comprend pas
j'ai une variable qui recupere le resultat d'un requete et qui vaut 20
une autre variable qui recupere la valeur d'un champ et vaut 20 par exemple

 

quand j'aditionne mes deux variables ca ne marche pas le code:

 
Code :
  1. echo " champ nombre".$this->_nbr; 
  2.   echo"<br>";
  3.      
  4. $nbr1= $this->_nbr;
  5. echo "nombre 1:" .$nbr1;echo"<br>";
  6. $nbr = ( $nbr1 + $nbrRef);
  7. echo  'resultat de l\'adition' .$nbr;
 

je précise tout les nombres sont bien récupéré je l'ai vérifié avec mes echo mais après l'adition ne se fait pas


Message édité par cyrildu07 le 22-04-2010 à 15:36:34
Reply

Marsh Posté le 23-04-2010 à 15:02:58    

Il doit manquer du code : $nbrRef n'est pas initialisé.
mais avec $this tu es toujours avec des classes...


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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