Insert et classe

Signaler
Messages postés
163
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
1 novembre 2006
-
Messages postés
163
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
1 novembre 2006
-
J ai créé une classe conge. La méthode select marche bien mais je n arrive pas à rédiger l'insert :

<?
class CConges
{
var $m_pt;


var $m_numeroConge = -1;
var $m_numeroUtil = -1;
var $m_dateDemande = "";
var $m_dateDepart = "";
var $m_dateRetour = "";
var $m_commentUtil = "";
var $m_acceptResp = false;
var $m_acceptDirection = "";
var $m_commentDirection = "";

// CONSTRUCTEUR PAR DEFAUT
function CConges ($_numeroConge = -1)
{
$this->m_pt = new dev_SQL; // On se connecte à la base de données
$this->m_numeroConge = $_numeroConge;


} // CConges ()


function Select ()
{
if ($this->m_numeroConge == -1) return false;


$Query = "SELECT *
FROM Conges
WHERE numero_conge = " . $this->m_numeroConge;


$this->m_pt->query ($Query);
if (!($Conges = $this->m_pt->fetch_array ())) // Si l'historique n'existe pas
{
$this->m_numeroConge = -1;
return false;
}


$this->m_numeroConge = addslashes ($Conges['numero_conge']);
$this->m_numeroUtil = addslashes ($Conges['numero_util']);
$this->m_dateDemande = addslashes (ChangeDate ($Conges['date_demande']));
$this->m_dateDepart = addslashes (ChangeDateHeure ($Conges['date_depart']));
$this->m_dateRetour = addslashes (ChangeDateHeure ($Conges['date_retour']));
$this->m_commentUtil = addslashes ($Conges['commentaires_util']);
$this->m_acceptResp = addslashes ($Conges['accept_responsable']);
$this->m_acceptDirection = addslashes ($Conges['accept_direction']);
$this->m_commentDirection = addslashes ($Conges['commentaires_responsable']);

return true;


} // Select ()

function GetNumeroConge () { return stripslashes ($this->m_numeroConge); }
function GetNumeroUtil () { return stripslashes ($this->m_numeroUtil); }
function GetDateDemande () { return stripslashes ($this->m_dateDemande); }
function GetDateDepart () { return stripslashes ($this->m_dateDepart); }
function GetDateRetour () { return stripslashes ($this->m_dateRetour); }
function GetCommentUtil () { return stripslashes ($this->m_commentUtil); }
function GetAcceptResp () { return stripslashes ($this->m_acceptResp); }
function GetAcceptDirection () { return stripslashes ($this->m_acceptDirection); }
function GetCommentDirection () { return stripslashes ($this->m_commentDirection); }


function SetNumeroConge ($_numeroConge) { $this->m_numeroConge = $_numeroConge; }
function SetNumeroUtil ($_numeroUtil) { $this->m_numeroUtil = $_numeroUtil; }
function SetDateDemande ($_dateDemande) { $this->m_dateDemande = $_dateDemande; }
function SetDateDepart ($_dateDepart) { $this->m_dateDepart = $_dateDepart; }
function SetDateRetour ($_dateRetour) { $this->m_dateRetour = $_dateRetour; }
function SetCommentUtil ($_commentUtil) { $this->m_commentUtil = $_commentUtil; }
function SetAcceptResp ($_acceptResp) { $this->m_acceptResp = $_acceptResp; }
function SetAcceptDirection ($_acceptDirection) { $this->m_acceptDirection = $_acceptDirection; }
function SetCommentDirection ($_commentDirection) { $this->m_commentDirection = $_commentDirection; }


function CreerConge($numeroUtil,$dateDemande,$dateDepart,$dateRetour,
$commentUtil,$acceptResp,$acceptDirection,$commentDirection)
{
$Query = "INSERT INTO Conges (numero_util, date_demande, date_depart, date_retour,
commentaires_util, accept_reponsable, accept_direction, commentaires_direction)
VALUE (" . $this->m_numeroConge . ",
'" . $this->m_numeroUtil . "',
'" . ReverseDate ($this->m_dateDemande) . "',
'" . ReverseDateHeure ($this->m_dateDepart) . "',
'" . ReverseDateHeure ($this->m_dateRetour) . "',
'" . $this->m_commentUtil . "',
'" . $this->m_acceptResp . "',
'" . $this->m_acceptDirection . "',
'" . $this->m_commentDirection . "')";


$this->m_pt->query ($Query);
return true;


}
?>

Ensuite dans ma page j ai :

// CONNEXION
$ptr = new dev_SQL;
$idCnx = pg_connect (STR_CNX) ;

$oConge = new CConges(-1) ;
$oUtil = new CUtil($HTTP_SESSION_VARS['IdUtil']);
//RECUPERATION DES INFORMATIONS UTILISATEUR
$oUtil->select();

// Cas d'une insertion
if (isset($btnValider) && ($btnValider != ""))
{

$oConge->CreerConge($oConge->GetNumeroUtil(), $oConge->GetDateDemande(), $oConge->GetDateDepart(), $oConge->GetDateRetour(),
$oConge->GetCommentUtil(),$oConge->GetAcceptResp(),$oConge->GetAcceptDirection(),$oConge->GetCommentDirection());
}

Je pense que je suis complètement à coté de la plaque alors si qq un peut m aider

Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
A voir également:

6 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
salut

t'as une classe complète sans aucun commentaire, on n'arrive pas bien à
voir quelle fonction fait quoi... C'est pas super pratique quand on a
besoin d'aide...



$Query = 'INSERT INTO Conges (numero_util, date_demande, date_depart, date_retour,


commentaires_util, accept_reponsable, accept_direction,
commentaires_direction)

VALUE (' . $this->m_numeroConge . ',


"' . $this->m_numeroUtil . '",


"' . ReverseDate ($this->m_dateDemande) . '",


"' . ReverseDateHeure ($this->m_dateDepart) . '",


"' . ReverseDateHeure ($this->m_dateRetour) . '",


"' . $this->m_commentUtil . '",


"' . $this->m_acceptResp . '",


"' . $this->m_acceptDirection . '",


"' . $this->m_commentDirection . '")';


déja, ça me parrait plus corect...



ensuite, il y a un petit problème :

$this->m_pt->query ($Query);



en php4, un objet ne peut pas contennir un autre objet...


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
163
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
1 novembre 2006

Merci bien pour ton aide et dézolé si je ne suis pas clair.


En fait mon plus gros pb c pour la clé primaire de la table qui est $m_numeroConge vu qu il s agit d'un auto increment. J ai peut etre une idée mais j'ai du mal a la mettre en oeuvre : refaire un select derriere pour le recupéré une fois qu'il a été alloué...

Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
Messages postés
163
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
1 novembre 2006

//Voici ma classe Conges :

class CConges
{
var $m_pt;


var $m_numeroConge = -1;
var $m_numeroUtil = -1;
var $m_dateDemande = "";
var $m_dateDepart = "";
var $m_dateRetour = "";
var $m_commentUtil = "";
var $m_acceptResp = false;
var $m_acceptDirection = "";
var $m_commentDirection = "";

// CONSTRUCTEUR PAR DEFAUT
function CConges ($_numeroConge = -1)
{
$this->m_pt = new dev_SQL; // On se connecte à la base de données
$this->m_numeroConge = $_numeroConge;


} // CConges ()

//Voici ma fonction d 'insertion qui est dans la classe CConges

function CreerConge($numeroUtil,$dateDemande,$dateDepart,$dateRetour,
$commentUtil,$acceptResp,$acceptDirection,$commentDirection)
{
$numeroUtil=substr(($numeroUtil), 0, 4);
$dateDepart=date($dateDepart);
$commentUtil=" ";
$commentDirection=" ";

$Query = "INSERT INTO Conges (numero_util, date_demande, date_depart, date_retour,
commentaires_util, accept_responsable, accept_direction, commentaires_direction)


// Les fonctions ReverseDateHeure transforme les dates du format fr au format Postgres
VALUE (" . $numeroUtil . ",
" . ReverseDate($dateDemande) . ",
" . ReverseDateHeure($dateDepart) . ",
" . ReverseDateHeure($dateRetour) . ",
" . $commentUtil . ",
" . $acceptResp . ",
" . $acceptDirection . ",
" . $commentDirectionn . ")";


$this->m_pt->query ($Query);
return true;


}

ensuite dans mon interface je l appelle comme cela :

// Cas d'une insertion
if (isset($btnValider) && ($btnValider != ""))
{
//$_numeroConge

$oConge->CreerConge($HTTP_SESSION_VARS['IdUtil'], date("d/m/Y"),
date ("d/m/Y H:i:s",$timestamp_depart_heure),
date ("d/m/Y H:i:s",$timestamp_retour_heure), " ","t","t"," ");

}

à l'éxécution j ai un message d 'erreur :

Database error: Invalid SQL: INSERT INTO Conges (numero_util, date_demande, date_depart, date_retour, commentaires_util, accept_responsable, accept_direction, commentaires_direction) VALUE (1, '2005-07-05', 2005-07-05 00:00, 2005-07-06 00:00, , t, t, )
Postgresql ErrorERROR: parser: parse error at or near "value

Si on observe les valeurs prises il n'y a aucun pb (a moins que postgres ai besoin des secondes de la date mais je ne crois pas ...)

Etant donné que je suis toujours aussi fort en php , je demande de l aide a qq un qui aurait une idée. Encore une fois desolé si je m exprime mal ....
MERCI !!!!!!!!
Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
tes dates doivent être entourées de guillemets.

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
163
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
1 novembre 2006

Ok c ' est bon... ca venait de la fonction reverseDate qui renvoyait deja une chaine et pas reverseDateHeure ...
J'aurai si possible une petite question pour comprendre un peu mieux les classes.
Dans cette meme classe CConges j ai une fonction de ce type :

function GetGroupe ()
{
//Permet de récupérer le libellé du groupe
$QueryGroupe = "SELECT libelle
FROM groupe
WHERE numero_groupe = (SELECT numero_groupe
FROM utilisateur
WHERE numero_util = {$HTTP_SESSION_VARS['IdUtil']});";
$this->$m_pt->query ($QueryGroupe);
$TabGroupe= $this->$m_pt->fetch_array();
return $TabGroupe;
}//function GetGroupe ()

elle me permet d aller chercher une information dans une autre table.

Mon pb c'est que je ne sais pas comment ecrire le code qui me permet de recuperer ce resultat sur mon IHM.
Je pensais à <?=$oUtil->GetGroupe ()?> mais il me dit qu il ne connait pas fonction GetGroupe...

Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
Messages postés
163
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
1 novembre 2006

j ai fait une erreur la fonction est dans une autre classe pas dans CConges...

Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!