Vous n'êtes pas identifié(e).
Bonjour,
Sur les recommandations fondées de JC j'avais pris le temps depuis mon dernier post de remettre à plat ma base de donnée chose que j'ai faites et qui est désormais en cours de finalisation.
J'ai également pris connaissance du doc PDO traduit par Maljuna.
Aussi je me retrouve désormais à devoir programmer ce que je souhaite.
Je vais donc fonctionner par étape.
La première d'entre elle réside donc dans la connexion à la base.
je pense avoir cerner les base d'une connexion classique:
1. try
2. {
3. $conn = new PDO($connStr, 'chef','motdepasse');
4. }
5. catch(PDOException $pe)
6. {
7. die('Connexion impossible à la base de données pour : ' .
8. $pe->getMessage();
9. }
10. $q = $conn->query();
11. if(!$q)
12. {
13. $ei=$conn->errorinfo();
14. die('Requête rejetée pour : '. $ei[2]);
15. }
toutefois en ce qui concerne une classe de connexion je ne suis pas sur d'avoir tout saisi!
En effet, j'ai comparé le script que j'avais mis en 1er post et la réponse de JC ca c'est ok, j'ai bien compris le pourquoi ça ne fonctionnait pas mais toutefois apres l'autre réponse de Pierrot concernant l'héritage de PDO je ne comprend pas.
Dois je conclure que c'est plus adapté?
cela serait il correct?
Class DbConnexion extends PDO {
private $host = "localhost";
private $db = "platf_gest_new";
private $db_user = "root";
private $db_password = "unpass";
private static $PDOinstance = null;
private static $_instance = null;
private function montreErreur($message)
{
echo "<h2>Erreur</h2>";
echo nl2br(htmlspecialchars($message));
exit();
}
private function __contruct() {
try {
$this->PDOinstance = new PDO('mysql:host='.$host.';dbname='.$db, $db_user, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$this->PDOInstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}
catch (PDOException $e)
{
montreErreur("Désolé, une erreur s'est produite.
Merci d'essayer plus tard.\n".trigger_error($e->getmessage(),E_USER_WARNING)
."<br />\n N° : ".$e->getCode()
);
}
}
public static function getInstance() {
if (is_null(self::$_instance)) {self::$_instance = new DbConnexion();}
return self::$_instance;
}
}
Vous en remerciant par avance
Bonjour,
Ayant mis en place ma base de donnée via MYSQLWORKBENCH je me retrouve avec un script sql qui commence par:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
Quelles modifs dois je apporter à ce script afin qu'il soit adapté pour mysql5?
merci d'avance!
pour info en fait j'ai une relation n:m entre
projet et budget
ET
taches et budget
de sorte a avoir
id projet et id budget
id tache et id budget
ca me parait correct a moi car cela répond a ma problématique mais je sais pas si c'est correct question mis en place pour un developeur pro comme toi!
donne moi ton avis please
je vais toutefois lire ton doc en plus! merci pour le partage
Bonjour a tous,
je suis en train de mettre au point ma base de données et me pose la question suivante.
j'ai une table projet et une autre table taches projets
désormais je dois créer une table liée au budget.
toutefois tant un projet qu'un tache de celui peut avoir un budget.
aussi ma question est:
dois je créer une table budget projet et une autre budget tache projets ou y a t'il une façon de procéder afin que ma table budget puisse être rattaché au deux?
merci d'avance
Bonjour,
dans le cas de mon appli en développement j'ai besoin de savoir comment je dois procéder si je veux pouvoir garder un historique de mes enregistrements.
est il plus facile d'avoir un champ sql avec version= 1 ou 2 etc et de voir la version la plus récente (dont le chiffre est le plus élevé )
ou
d'avoir un champ timestamp associé lors de l'enregistrement et de demandé la timestamp le plus récent si on veux avoir l'enregistrement dernier en date?
merci d'avance pour vos avis
ok merci pour vos commentaires:
je vais donc suivre vos conseils!
quelqu'un pour mon dernier post sinonµ?
merci à vous en tout cas!
ouais bien vu vais voir ca!
par contre autre question !
j'ai une table
Etablissement
1 table groupe Identifiants
je fais une liaison n:m entre etab et identifiants afin que 1 etab puisse avoir plusieurs groupes et qu'un groupe puissent etre liés à plusieurs étab.
d'ou une table de liaison appelée Etab has Groupes
ma question est la suivante:concernant ma table d'identifiants sommes nous bien d'accord qu'il me faut la lier à ma table nouvellement crée par un n:m appele style Identifiants in Etab has Groupe.
de sorte à avoir in fine une table avec
id groupe
id etab
id identifiant.
ca serait ok comme cela?
Apres verif je comprend mieux mais il me reste un poit
mieux vaut utiliser tinyint ou comme cela est indiqué à plusieurs endroits boolean??
merci pour ta réponse!
un établissement et pour un projet ne peut intervenir qu'a un un seul titre.
aussi je vais opter pour un champ numérique de forme tinyint(1), serait ce adapté?
par contre vais me renseigner sur le signé ou non signé car je ne connais pas la différence!
Bonjour,
Dans le cadre de la mise en place de ma structure de base de donnée sur papier à l'heure actuelle, je me pose une question supra basique.
Admettons un cas exemple avec 2 tables
1) Etablissement
id_etab
2) Projets
id_projet
je créer une relation n:m car un etab peut participer à plusieurs projets et 1 projets fait intervenir plusieurs etab
jusque la je ne pense pas faire d'erreur!
ma question est la suivante : 1 etab peut être soit coordinateur d'un projet, soit sous contractant simple participant etc.
dans notre table de liaison
j'aurai donc!
id_etab
id_projet
statut
dans le cadre d'une programmation correct, le champ statut vous mettriez quoi?
- un enum avec une liste défini de possibilité?
- 1 champ int avec un numéro ?
En effet je me pose cette question car:
1) les possibilités peuvent évoluer dans un cas autre et il faudrait donc modifier l'enum
2) admettons un site multilingues l'enum ne sera pas correct pour les langues autres que celle indiquée.
merci de me donner votre avis car ce simple truc me dérange!
merci d'avance
je ne remets pas en cause ni le bouquin ni ta traduction loin de la:
je demande juste à savoir si je me lance sur le bonne voie!
lol l'apprentissage nécessite effectivement plus de travail que l’application
mais je demandai juste confirmation
Je débute en PDO et ai une question de base.
J'ai lu le doc de Maljuna mais ne cerne pas bien le protocole de connexion.
En theorie on débute par
$conn = new PDO($config['db.conn'], $conifg['db.user'],$config['db.pass']);
Toutefois ne souhaitant spécifier cela qu'une fois et seulement une fois j'ai regarder d'autre tuto qui parle de singleton.
Aussi et me basant sur ce constat j'ai préparé une classe et aimerais avoir votre avis sur celle-ci. est elle correcte et optimisée?
De plus au delà de ce premier script, j'aimerai savoir comment mettre en place mon système de gestion d'erreur.
1) Affichage d'une erreur complète si $debug =true sur le site
2) Affichage d'une erreur claire et simple si debug=false sur le site
3) intégration d'une erreur complète et précise dans un fichier de consult_erreur.
Faut il que j"intègre tout cela dans cette même classe?
comment procéder afin que pour chaque query si une erreur soit détectée, mon systeme se mette en place? Je devrai utiliser les try catch a chaque fois?
Merci d 'avance
private static $instance;
function montreErreur($message)
{
echo "<h2>Erreur</h2>";
echo nl2br(htmlspecialchars($message));
exit();
}
public static function getInstance()
{
if(!isSet(self::$instance))
{
try
{
self::$instance = new PDO('mysql:host=localhost;dbname=platf_gest', 'root', '');
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
montreErreur("Désolé, une erreur s'est produite.
Merci d'essayer plus tard.\n".$e->getMessage()
."<br />\n N° : ".$e->getCode()
);
}
}
return self::$instance;
}
}
sous entendu qu'un closecursor doit toujours etre situé avant le return?
ok thanks!!
mais alors derniere chose de mise en page!
IdGroupe Desc Groupe Id Fonctionnalites Desc Fonctionnalites
1 Admin 1,2 Tout voir,Tout voir et tout modifier
2 LEAR 1 Tout voir
comment procéder afin que les id Fonctionnalites et les descFonc aille a la ligne
IdGroupe Desc Groupe Id Fonctionnalites Desc Fonctionnalites
1 Admin 1, Tout voir,
2 Tout voir et tout modifier
2 LEAR 1 Tout voir
merci pour votre aide en tout cas!
ps: je ne comprend pas la remarque de pierrot quant au closecursor 'est jamais appeler
hello!
j'ai donc intégrer group concat.
mais cela ne me retourne qu'un seul resultat a lieu de 2 dans mon exemple
cf post précédent pour résultat souhaité
:array
0 =>
array
'GROUP_CONCAT(DISTINCT G.idGroupe)' => string '1,2' (length=3)
0 => string '1,2' (length=3)
'descGroupe' => string 'Admin' (length=5)
1 => string 'Admin' (length=5)
'idFonctionnalites' => string '2' (length=1)
2 => string '2' (length=1)
'descFonctionnalites' => string 'Tout voir et tout modifier' (length=26)
3 => string 'Tout voir et tout modifier' (length=26)
ps: bien fait ton doc maljuna! (en cours de lecture) merci!
ok merci mais faudrait m'en dire un plus en vue de pouvoir l'optimiser !
bon j'ai donc vérifié mon script et l'ai adapté !
cela donne désormais la fonction suivante:
pour l'affichage des données j'ai procédé comme ceci:
echo '<tr><td>'.$fonc_group[$i]["idGroupe"].'</td><td>'.$fonc_group[$i]["descGroupe"].'</td><td>'.$fonc_group[$i]["idFonctionnalites"].'</td><td>'.$fonc_group[$i]["descFonctionnalites"].'</td></tr>';
}
echo '</table>';
et cela me donne:
IdGroupe Desc Groupe Id Fonctionnalite Desc Fonctionnalite
1 Admin 1 Tout voir
1 Admin 2 Tout voir et tout modifier
2 LEAR 1 Tout voir
La question est la suivante: Comment procéder afin que dans le cas ou l'id groupe et desc groupe similaire on puisse fusionner les cellule de sorte à avoir
IdGroupe Desc Groupe Id Fonctionnalite Desc Fonctionnalite
1 Admin 1 Tout voir
2 Tout voir et tout modifier
2 LEAR 1 Tout voir
merci d'avance pour votre aide!
Ps: Il s'agit de fonc bidons pour l'instant
Bonjour,
je ne suis pas certain de bien cerner votre réponse.
dans mon dernier post j'ai utiliser PDO.
je suis pret à faire tout en PDO désormais mais comment procéder pour récupérer les données en PDO?
Merci d'avance
Re salutation Maljuna,
Voici la fonction avec pdo:
mais ca me retourne
Bonjour JC
pourrais tu etre un peu plus clair?
merci d'avance
Bonjour
je me mets donc au PDO et souhaite mettre en place ma classe de connexion!
private static $instance;
const $PARAM_hote='localhost';
const $PARAM_port='3306';
const $PARAM_nom_bd='platf_gest';
const $PARAM_utilisateur='root';
const $PARAM_mot_passe='unpass';
public static function getInstance()
{
if(!isSet(self::$instance))
{
try
{
self::$instance = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
}
return self::$instance;
}
}
toutefois cela ne fonctionne pas, ou est donc mon erreur please?
bon si je comprend bien il faut que je me mette à PDO plus performant?
plus simple?
bah pas lu correctement sorry