Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1553 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  php objet insertion base de donnée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

php objet insertion base de donnée

n°1985481
cyrildu07
Posté le 19-04-2010 à 15:18:54  profilanswer
 

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

mood
Publicité
Posté le 19-04-2010 à 15:18:54  profilanswer
 

n°1985482
Fred999
Rabat-joie
Posté le 19-04-2010 à 15:22:30  profilanswer
 

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

n°1985485
cyrildu07
Posté le 19-04-2010 à 15:26:16  profilanswer
 

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
n°1985498
Fred999
Rabat-joie
Posté le 19-04-2010 à 16:12:54  profilanswer
 

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
n°1985504
Fred999
Rabat-joie
Posté le 19-04-2010 à 16:17:19  profilanswer
 
n°1985505
cyrildu07
Posté le 19-04-2010 à 16:23:25  profilanswer
 

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

n°1985521
Fred999
Rabat-joie
Posté le 19-04-2010 à 17:11:45  profilanswer
 

le $this->_nom, pas le $_nom


Message édité par Fred999 le 19-04-2010 à 17:11:53
n°1985540
cyrildu07
Posté le 19-04-2010 à 18:23:09  profilanswer
 

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  :??:

n°1985712
theredled
● REC
Posté le 20-04-2010 à 00:52:43  profilanswer
 

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
n°1985763
Fred999
Rabat-joie
Posté le 20-04-2010 à 10:10:02  profilanswer
 

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.

mood
Publicité
Posté le 20-04-2010 à 10:10:02  profilanswer
 

n°1985848
cyrildu07
Posté le 20-04-2010 à 12:01:00  profilanswer
 

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 ??

n°1985852
theredled
● REC
Posté le 20-04-2010 à 12:04:32  profilanswer
 

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
n°1985884
cyrildu07
Posté le 20-04-2010 à 12:51:26  profilanswer
 

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" );

n°1985899
Fred999
Rabat-joie
Posté le 20-04-2010 à 13:18:47  profilanswer
 

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
n°1985911
cyrildu07
Posté le 20-04-2010 à 13:32:20  profilanswer
 

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

n°1985919
Fred999
Rabat-joie
Posté le 20-04-2010 à 13:57:13  profilanswer
 

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';

n°1985927
cyrildu07
Posté le 20-04-2010 à 14:17:27  profilanswer
 

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" );

n°1985930
Fred999
Rabat-joie
Posté le 20-04-2010 à 14:28:01  profilanswer
 

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

n°1985931
cyrildu07
Posté le 20-04-2010 à 14:31:38  profilanswer
 

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

n°1985934
Fred999
Rabat-joie
Posté le 20-04-2010 à 14:39:42  profilanswer
 

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.

n°1985937
cyrildu07
Posté le 20-04-2010 à 14:49:57  profilanswer
 

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
n°1985939
theredled
● REC
Posté le 20-04-2010 à 14:51:17  profilanswer
 

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
n°1985941
cyrildu07
Posté le 20-04-2010 à 14:53:22  profilanswer
 

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  ;)  

n°1985943
theredled
● REC
Posté le 20-04-2010 à 14:58:29  profilanswer
 

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
n°1985944
cyrildu07
Posté le 20-04-2010 à 14:59:52  profilanswer
 

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 )

n°1985946
theredled
● REC
Posté le 20-04-2010 à 15:01:08  profilanswer
 

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
n°1985948
Fred999
Rabat-joie
Posté le 20-04-2010 à 15:03:03  profilanswer
 

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
n°1985952
cyrildu07
Posté le 20-04-2010 à 15:13:09  profilanswer
 

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é  

n°1986685
cyrildu07
Posté le 22-04-2010 à 15:36:05  profilanswer
 

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
n°1987009
stef_dober​mann
Personne n'est parfait ...
Posté le 23-04-2010 à 15:02:58  profilanswer
 

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...
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  php objet insertion base de donnée

 

Sujets relatifs
Conversion de baseProblème de base de données Access
Pb d'insertion de données SQLAide Base de données overclocking
Affichage dans un jtable apartir d'une base[Structure de donnée] Quelle structure de donnée pour un RdN
Boost lambda et objet complexeechec de connexion base de donnée
connexion à la base de donnée 
Plus de sujets relatifs à : php objet insertion base de donnée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR