begin process at 2012 05 31 12:42:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Problème DAOFactory et consors


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème DAOFactory et consors

lundi 16 novembre 2009 à 23:19:48 | Problème DAOFactory et consors

vlec

Bonjour,

Alors voilà, j'ai un petit problème, non en fait un gros problème. :)
Je fais actuellement un site pour une association. Site dans l'ensemble assez simple, en php, avec une base Mysql qui contient 3 tables.
J'ai essayé de faire de la programmation de type MVC et pour la gestion d'accès aux tables mysql j'ai fait des DAO.

J'ai un controleur qui dispatch donc en fonction des actions choisies.
Je fais donc swich et case.
J'ai différentes classes Entities, de même que plusieurs classes actions, des classes formulaires, des classes vues et des classes DAO donc.

Le problème qui se pose c'est que si dans mon controleur je ne mets qu'une seule action qui fait une màj d'une table ça fonctionne correctement, mais quand je mets une autre action qui fait une maj d'une autre table (appartenant à la mm base) là y'a problème.

Je ne peux mettre en effet qu'un seul include d'action.

Voici les include en début de mon controleur :
include('entities/Client.php');
include('entities/Commentaire.php');
include('actions/ActionInscrire.php');
include('actions/ActionCommentaire.php');
include('vues/VueClient.php');
include('vues/VueCommentaire.php');
include('others/FormInscription.php');
include('others/FormCommentaire.php');

le fait d'avoir :
include('actions/ActionInscrire.php');
include('actions/ActionCommentaire.php');

en mm temps fait planter lorsque je veux faire une ou l'autre action.
Si je ne mets qu'un seul include, l'action en question se passe correctement.

Vous allez me dire qu'y a t'il dans ces classes Action.
L'Action commentaire est la suivante :

<?php
include('daos/DAOFactory.php');

class ActionCommentaire {

function execute($form){
$commentaire = new Commentaire();
$commentaire->setProjet($form->getProjet());
$commentaire->setCommentaire($form->getCommentaire());

$daoCommentaire = DAOFactory::createDAOCommentaire();
$n = $daoCommentaire->insert($commentaire);
return $commentaire;
}
}
?>

L'Action Inscrire est la suivante :
<?php

include('daos/DAOFactory.php');

class ActionInscrire {

function execute($form){
$client = new Client();
$client->setNom($form->getNom());
$client->setPrenom($form->getPrenom());
$client->setAdresse($form->getAdresse());
$client->setMdp($form->getMdp());

$daoClient = DAOFactory::createDAOClient();
$n = $daoClient->insert($client);
return $client;
}
}
?>

Voilà pour les Classes Action.
Pour ce qui est des DAO

Mon DAOFactory
<?php

include('daos/DAOMysqlClient.php');

class DAOFactory {
static function createDAOClient(){
$dao = new DAOMysqlClient();
return $dao;
}
static function createDAOCommentaire(){
$dao = new DAOMysqlCommentaire();
return $dao;
}
}
?>

Le DAOClient :
<?php

abstract class DAOClient {
abstract function insert($client);
abstract function select($c) ;
abstract function selectAll();


}
?>

Le DAOCommentaire :
<?php

abstract class DAOCommentaire {
abstract function insert($commentaire);
abstract function select($c) ;
abstract function selectAll();
}
?>

Au tour des DAOMysql
DAOMysqlClient

<?php

include("daos/DAOClient.php");
include("daos/DAOMysqlManager.php");
class DAOMysqlClient extends DAOClient{

function insert($c){
$cx = DAOMysqlManager::getConnection();
$sql = "insert into Agora.membre (nom,prenom,adresse,mdp) ";
$sql = $sql."values ('".$c->getNom()."'";
$sql = $sql.", '".$c->getPrenom()."'";
$sql = $sql.", '".$c->getAdresse()."'";
$sql = $sql.", '".$c->getMdp()."')";

$count = mysql_query($sql, $cx);
if(!$count){
die('Requ&#8730;&#8482;te '.$sql. 'Impossible: ' . mysql_error());
}
$count = mysql_insert_id();
DAOMysqlManager::closeConnection();
return $count;
}

Je ne mets que la première fonction. Les 2 autres existent

DAOMysqlCommentaire
<?php

include("daos/DAOCommentaire.php");
include("daos/DAOMysqlManager.php");
class DAOMysqlCommentaire extends DAOCommentaire{

function insert($c){
$cx = DAOMysqlManager::getConnection();
$sql = "insert into Agora.comments (projet,commentaire) ";
$sql = $sql."values ('".$c->getProjet()."'";
$sql = $sql.", '".$c->getCommentaire()."')";
$count = mysql_query($sql, $cx);
if(!$count){
die('Requ&#8730;&#8482;te '.$sql. 'Impossible: ' . mysql_error());
}
$count = mysql_insert_id();
DAOMysqlManager::closeConnection();
return $count;
}

Et pour finir mon DAOMysqlManager
<?php

class DAOMysqlManager {

var $nom_base_donnees = "Agora";

static function getConnection(){
// Connexion permanente au serveur MySQL : mysql_Pconnect
$conn = mysql_connect('localhost:8889', 'root', 'root');
if (!$conn) {
die('Impossible de se connecter : ' . mysql_error());
}

// Choix de la base sur laquelle travailler
mysql_select_db($nom_base_donnees, $conn);
return $conn;
}

static function closeConnection(){
mysql_close();
}
}
?>

Bon je pense que j'ai fait le tour.
Le problème viendrait d'un conflit de connexion Mysql ? J'avoue être totalement perdu, ça fait 11h que je passe sur ce satané problème aujourd'hui et là je sature, je ne vois pas la solution au problème.

Si quelqu'un de courageux a analysé mon code et voit quel est le problème, je lui en serait extrêmement reconnaissant.

Merci à ceux qui auront lu jusqu'au bout ce pavé je vous dis bravo. Dernière précision j'utilise MAMP (étant un utilisateur Mac)
mardi 17 novembre 2009 à 01:01:27 | Re : Problème DAOFactory et consors

Arto_8000

Réponse acceptée !
Si je me fie seulement à "Si je ne mets qu'un seul include, l'action en question se passe correctement. "

Je serais porter à dire que le problème vient peut-être du fait que tu include 2 fois le fichier "daos/DAOFactory.php". Essaie de changer "include('daos/DAOFactory.php')" par "include_once('daos/DAOFactory.php')".
mardi 17 novembre 2009 à 10:21:34 | Re : Problème DAOFactory et consors

vlec

Et bien je te remercie tu as vu juste.
Vraiment super, parce que là je ne savais vraiment pas quoi faire.

C'est la première fois que je fais du php, j'étais surtout habitué à faire du Java sur Netbeans, me retrouver là à faire du php sur un éditeur de texte basique ça change quelque peu. :-)
L'avantage c'est que ça oblige d'avoir une plus grande rigueur je trouve.

Enfin c'est super, vraiment merci beaucoup. Je ne connassais pas le include_once, je ne risque pas de l'oublier maintenant.
mardi 17 novembre 2009 à 11:00:31 | Re : Problème DAOFactory et consors

kohntark

Membre Club
Salut,

Si la réponse convient n'oublies pas de la valider


un éditeur de texte basique ça change quelque peu. :-)


Pourquoi ne pas faire du PHP sur Netbeans ??


Cordialement,


Kohntark -

mardi 17 novembre 2009 à 15:28:20 | Re : Problème DAOFactory et consors

vlec

Pour Netbeans en fait j'ai un problème car mon ordi a rendu l'âme donc je suis revenu sur un vieux macbook qui a pas mal vécu et c'est horrible Netbeans dessus, ça rame vraiment trop.

Et désolé de ne pas avoir validé. Dans l'euphorie...


Cette discussion est classée dans : problème, php, mysql, sql, include


Répondre à ce message

Sujets en rapport avec ce message

php dans <form> ? [ par Tit0x ] Bonsoir,J'aime savoir s'il été possible de mettre du php dans les ? Voici mon code :  include('design/header.php');include('config.inc.php');//On se c problème avec requete sql et php [ par machmacha ] bonjour,j'ai une requête simple sur php la voilà:$sql = mysql_query("SELECT *                   FROM test                   WHERE login='".$_POST['log Problème d'appel une page php [ par machmacha ] salut a tous,j'ai un blocage j'espère quelqu'un pourra m'aider à le résoudre, mon problème est le suivant :j'ai une page test1.php voici le code:sessi Problème connexion en ligne à mysql [ par machmacha ] Bonjour a tous, j'ai un problème, je construis un site web avec php/html et lorsque je l'heberge, sur ma page ou il ya du code php j'ai l'erreur suiva probleme de recuperation de variable en tableau associatif [ par lespleiades ] salut tt le monde^^bon voila j ai un probleme et la je cale vraiment, d'habitude je m'en sort comme un grand, mais la je ne sais vraiment pas comment Insertion recherches mysql [ par rubenxela ] Salut, vous allez tout de suite comprendre que je suis une bille ! Je pense cependant que mon problème n'est pas insurmontable et que vous êtes nombre php et sql [ par fatatra ] bonjour;j'essaie de rentrer des données dans ma bases a partir d'un formulaire.Ce queje fais c'est que je recupére les variable 'post' pour les mettre problème php/mysql [ par nicomilville ] Bonjour j'ai une page qui doit normalement m'afficher le contenu de ma table "news" mais ça ne marche pas !!!Dans ma table "news" il y a 4 champs : "i bouton requete sql [ par carlosrb54 ] Bonjour, j'ai une page php, avec une zone texte et un bouton. Je voudrais que quand on clique sur le bouton, cela génère une requête SQL pour supprime Problème html/php [ par LHaricot ] Voila un jour que je planche et j'ai toujours le même message d'erreur. Quelqu'un pourrai m'aider?Merci par avance Le message d'erreur est Parse error


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales