06 juil
Par Clément dans Tutoriels
Mots-clefs :Application, Base de données, PHP, SQL, Watchmydesk, Zend, Zend Framework, Zend_Db_Table

Dans cette seconde partie, nous allons voir comment préparer la base de données pour notre application WatchMyDesk développée avec le Zend Framework et vous allez enfin savoir ce que va être notre application !
Les acteurs du web sont souvent fiers de leur bureau de travail. De temps en temps, on peut retrouver l’espace de travail de certain d’entre eux.

Les gens aiment particulièrement voir dans quel contexte travail telle ou telle personne.
L’objectif est de créer une plateforme communautaire sur laquelle les internautes peuvent créer la fiche de leur bureaux et ajouter une ou plusieurs photos.
L’aspect communautaire intervient grâce à la possibilité de commenter et donner une note aux bureaux.
Au niveau des fonctionnalités, nous avons du pain sur la planche. Mis en place dans le premier épisode, nous avons deux modules : Frontend et Backend. Ces deux dossier correspondent à la partie visible de site par un visiteur/membre et à l’administration.
Dans la partie frontend, nous allons avoir sur l’index, les 5 derniers bureaux postés, les 5 bureaux populaires et les accès rapide pour s’inscrire et s’identifier.
Dans la liste des bureaux, on aura une liste paginée avec les miniature et une courte description. On aura aussi la possibilité de trier la liste par titre, auteur, etc…
Dans la partie des détails du bureau, on aura toute les informations sur le bureau ainsi que la possibilité de lui mettre une note et d’ajouter un commentaire.
Une fois inscrit, le membre pourra ajouter son bureau avec un formulaire complet.
Dans la partie administration, on pourra gérer les membres inscrits, les commentaires, les bureaux, et voir les statistiques.
La création de la base de données va se passer à partir de phpMyAdmin de notre serveur local, à l’heure d’aujourd’hui le Zend Framework ne possède pas de processus de migration de base de données et de génération de table à la demande.
Pour cela, je vous met à disposition le .sql de notre base de données que vous importerez dans une base nommé watchmydesk.
Dans ce fichier sql, nous retrouvons 6 tables nommées :
Vous avez surement remarqué la table de liaison bureaux_photos, cette table sera très utile pour déterminé quel est la photos principale à afficher. Mais je vous en parlerais plus dans le prochaine épisode.
Sans m’en rendre compte, je vous ai donnée cette partie la semaine dernière dans le premier épisode, enfaite, la configuration se fait grâce au 7 lignes dans le fichier application.ini que nous avons configuré.
; initialize database resources.db.adapter = "MYSQLI" resources.db.params.host = "localhost" resources.db.params.username = "root" resources.db.params.password = "root" resources.db.params.dbname = "watchmydesk" resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss" resources.db.isDefaultTableAdapter = true
Selon Wikipédia : Le modèle représente le comportement de l’application : traitements des données, interactions avec la base de données, etc. Il décrit ou contient les données manipulées par l’application. Il assure la gestion de ces données et garantit leur intégrité. Dans le cas typique d’une base de données, c’est le modèle qui la contient. Le modèle offre des méthodes pour mettre à jour ces données (insertion, suppression, changement de valeur). Il offre aussi des méthodes pour récupérer ces données. Les résultats renvoyés par le modèle sont dénués de toute présentation. Dans le cas de données importantes, le modèle peut autoriser plusieurs vues partielles des données.
Dans notre cas, nous allons voir comment créer notre modèle afin d’effectuer des opérations sur la table bureaux créée précédemment.
Nous allons donc créer un fichier nommé Bureaux.php dans le répertoire models/DbTable/ de notre application.
Dans ce fichier, nous allons ajouter quelques lignes de code que je vais vous expliquer par la suite :
class Model_DbTable_Bureaux extends Zend_Db_Table
{
protected $_name = 'bureaux'; // On donne le nom de le table à laquelle se connecter
}
Le composant Zend_Db_Table est utilisé pour manipuler des données.
Ici on peut voir une utilisation de l’héritage dans un langage orienté objet. En effet, en héritant de la classe Zend_Db_Table, le modèle va donc posséder toutes les actions de la classe parente pour modifier, supprimer, créer et lire les informations dans la table.
Ensuite pour tester si notre application fonctionne bien, nous allons nous rendre dans le dossier /application/modules/frontend/controllers et éditer le fichier IndexController et modifier notre action indexAction :
public function indexAction(){
$bureaux = new Model_DbTable_Bureaux();
var_dump($bureaux->fetchAll());
}
Il vous suffit d’aller ensuite sur votre site locale et de voir ce qui apparait. Si la connexion c’est bien passée, vous devriez avoir un énorme tableaux de données mais sans aucun enregistrement (normal, la base de données est vide).
Dans cet épisode, nous avons vu comment mettre en place la base de donnée pour une application développée avec le Zend Framework. Cette initiation va nous permettre d’attaquer un peu plus fort la semaine prochaine en nous penchant sur les relations dans les bases de données.
Vous trouverez la même partie de ce tutorial pour Symfony sur La Ferme Du Web.
Je vous dis à Lundi prochain, pour la mise en place du MVC dans le Zend Framework.
« Utiliser la géolocalisation avec Safari, IE et Firefox comme Flickr mobile | jQuery Visualize, des graphiques avec du javascript et des canvas HTML »
Un trackback
32 commentaires
Benji07
6 juillet 2009 à 19:24
1Il ne manquerai pas le fichier sql ?
Clément
6 juillet 2009 à 21:17
2@Benji07: Je viens de le mettre, j’ai eu quelques soucis avec le blog ce matin
Bon tuto !
Sylvain
7 juillet 2009 à 12:24
3Très content de découvrir ce tuto sur Zend. J’apprécie bcp ce blog, Clément, et je sais qu’on va en avoir pour notre argent
En revanche, petite question sur la base : la table « bureaux_photos» est elle réellement utile ? En effet, une photo ne concernant qu’un et un seul bureau, une relation de type 1,1/1,n (aaaah, Merise) semble suffisante. Le champ se « bureaux_id» se retrouve donc dans photos en tant que clé étrangère, et la table photos peut aussi porter le champ « principale» .
Et si cette table est réellement utile (j’ai peut être loupé qqchose dans la description de l’appli), pourquoi utiliser une clé primaire auto incrémentée, et pas une clé primaire composée des deux clés étrangères bureaux_id et photos_id ?
A moins que ce choix ne soit dû à une contrainte d’utilisation de l’ORM de Zend ?
Jo
7 juillet 2009 à 15:13
4Bonjour,
Les 2 premiers épisodes que tu viens de rédiger son vraiment simples à comprendre et intuitifs. Cependant je suis assez impatient de voir la suite. Vas-tu parler des mapper pour la relation avec la BDD ?
Une bonne chose serait de donner une petite indication sur ce que l’on va voir « dans le prochain épisode…» .
Jo.
Clément
7 juillet 2009 à 15:24
5@Jo: Merci beaucoup ! Oui dans le prochain épisode, je vous expliquerais les relations dans les models
Bonne idée du « dans le prochain épisode» je vais voir ça !
Ulyx
10 juillet 2009 à 10:59
6Tu dis :
Nous allons donc créer un fichier nommé Model_DbTable_Bureaux dans le répertoire models/DbTable/ de notre application.
le fichier model n’est pas plutot « Bureaux.php» qu’on met dans le repertoire « models/DbTable/ » et qui contient la classe « Model_DbTable_Bureaux»
Et si c’est le cas, par la suite, voudrais tu etre un peu plus rigoureux en ce qui concerne la description et les explications pour ne pas que des non initiés comme moi soient largués dans les prochains épisodes que je suppose être un peu plus complexe
cela dit l’association d’une application complète (zend/symfony) est une bonne initiative
Clément
10 juillet 2009 à 11:07
7@Ulyx: Autant pour moi ! Merci de me rapporter ce petit problème d’écriture . Et merci à toi de suivre cette série.
Promis, je vais faire des efforts pour vous fournir des tutos de qualités
Sylvain
10 juillet 2009 à 22:09
8Je réitère ma question
Est-ce que j’ai loupé un truc dans le conception et/ou dans le fonctionnel de l’appli, ou la structure choisie pour la table bureaux_photos est-elle due à des contraintes imposées par l’ORM de Zend ? Ou par celui de Symfony (et donc volonté de développer les deux tutos sur une même structure de base) ?
Clément
10 juillet 2009 à 23:44
9@Sylvain: Oups j’avais loupé de répondre à cette question !
C’est Djo de LaFerme qui m’a fourni la BDD, dc je pense à la contraintes de Symfony sans en être sur !
De toute manière je pense que c’est une bonne chose, comme ça nous allons voir comment récupérer les enregistrements à partir d’une table de liaison ! Ce qui est vraiment bien géré avec le Zend Framework !
leknoppix
10 août 2009 à 9:47
10Merci beaucoup, très bien expliquer.
Psykotik
20 août 2009 à 15:43
11Re-bonjour clément,
comme je l’ai dis dans le premier tuto, tu me reverra .
Et bien me revoilà, avec un petit souci, j’ai cette erreur
Fatal error: Class ‘Zend_Db_Table’ not found in C:\wamp\www\watchmydesk\application\models\DbTable\Bureau.php on line 3
J’ai une vague impression que le chemin du Framework ne fonctionne pas. J’ai toujours la même structure que ce matin
PS: il faut bien que ca arrive à qqn.
PS: J’ai ZF 1.9.1 ne serait-ce pas pour cette raison que cela ne fonctionne pas?
Psykotik
20 août 2009 à 16:09
12rectification j’ai un truc….
object(Zend_Db_Table_Rowset)#72 (10) { ["_data":protected]=> array(0) { } ["_table":protected]=> object(Model_DbTable_Bureaux)#48 (18) { ["_name":protected]=> string(7) « bureaux» ["_definition":protected]=> NULL ["_definitionConfigName":protected]=> NULL ["_db":protected]=> object(Zend_Db_Adapter_Mysqli)#20 (12) { ["_numericDataTypes":protected]=> array(16) { [0]=> int(0) [1]=> int(1) [2]=> int(2) ["INT"]=> int(0) ["INTEGER"]=> int(0) ["MEDIUMINT"]=> int(0) ["SMALLINT"]=> int(0) ["TINYINT"]=> int(0) ["BIGINT"]=> int(1) ["SERIAL"]=> int(1) ["DEC"]=> int(2) ["DECIMAL"]=> int(2) ["DOUBLE"]=> int(2) ["DOUBLE PRECISION"]=> int(2) ["FIXED"]=> int(2) ["FLOAT"]=> int(2) } ["_stmt":protected]=> object(Zend_Db_Statement_Mysqli)#62 (12) { ["_stmt":protected]=> object(mysqli_stmt)#63 (9) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(0) ["field_count"]=> int(8) ["errno"]=> int(0) ["error"]=> string(0) « » ["sqlstate"]=> string(5) « 00000″ ["id"]=> int(1) } ["_keys":protected]=> array(8) { [0]=> string(2) « id» [1]=> string(10) « membres_id» [2]=> string(5) « titre» [3]=> string(11) « description» [4]=> string(4) « note» [5]=> string(10) « classement» [6]=> string(4) « etat» [7]=> string(10) « date_ajout» } ["_values":protected]=> array(8) { [0]=> &NULL [1]=> &NULL [2]=> &NULL [3]=> &NULL [4]=> &NULL [5]=> &NULL [6]=> &NULL [7]=> &NULL } ["_meta":protected]=> object(mysqli_result)#64 (5) { ["current_field"]=> int(0) ["field_count"]=> int(8) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(1) }
ca suffit pour allez au prochain tuto?? ^^
Seb
24 septembre 2009 à 10:32
13Salut Clément,
J’ai décidé de me mettre a un framework et notamment a ZEND… et devine quoi ? tes tutos m’aident beaucoup donc juste pour dire MERCI !
Ps : C’est pas impossible que je te dise un « WHAT THE ~#{| ?» dans un prochain com’ mais pour le moment un très grand MERCI ! haha
Amicalement,
Seb.
armalex
3 octobre 2009 à 22:18
14Et la connexion à la base ? c’est ou?
Max
6 octobre 2009 à 13:35
15Heum,
joli tuto…
mais je bloque ici.
A l’étape 1, ça m’afficha bien « Vous êtes sur mon site» , mais là , après la #2, j’ai une page blanche.
A quoi c’est dû?
Merci
fred74
6 novembre 2009 à 17:24
16Salut,
excellent tuto. Mais j’ai juste un petit problème. Tout marche sauf quand je déclare la classe Model_Dbtable_Bureaux
j’ai ce message
Fatal error: Class ‘Model_DbTable_Bureaux’ not found in D:\data\PHP\tutoriel-zf\application\modules\frontend\controllers\IndexController.php
Merci
de ton aide
fred74
fabrice
8 décembre 2009 à 12:15
17j’ai une erreur lors de l’affiche de la page, après avoir exporté ton .sql dans mysql !
charly
23 février 2010 à 13:25
18je suis un debutant veuillez m’envoyer le code zend d’ajout, de suppression,modification
charly
23 février 2010 à 13:27
19j’ai besoin de document pour débutant en zend
goosy
20 avril 2010 à 15:54
20Salut Clement ,
peut-être que c’est une bête question mais ta classe Model_DbTable bureaux peut-il fonctioner en entendant (extends) Zend_Db_Table_Abstract ?
yoki
2 juin 2010 à 15:41
21Merci pour ces tutos qui sont tres bien fait.
MAIS, j’ai un probleme, ça ne doit pas etre grand chose mais, à la fin du tuto lorsque je lance « http://localhost/watchmydesk/public» … la page n’est pas trouvée.
Quelque chose est a configurer?
Si quelqu’un peut m’eclairer
Merci d’avance
Cyrux
5 juillet 2010 à 10:28
22Salut tout le monde :
Pour ma part, la première partie c’est déroulée sans aucun problème mais ici je me retrouve avec ce message d’erreur :
An error occurred message ?> ; Exception information: Message: exception->getMessage() ?> Stack trace:
exception->getTraceAsString() ?>
Request Parameters:
request->getParams()) ?>
note : dans la premiere partie, je devais selectionner mon répertoire public pour avoir accès à la phrase « vous êtes sur mon site …» au lieu de http://localhost/watchmydesk/ peut être cela provient il de la ?
Merci d’avance de votre aide !!!
Cyrux
5 juillet 2010 à 10:58
23Problème résolu ! tout seul comme un grand
pour ceux à qui cela arriverait, il s’agissait d’une erreur dans le mot de passe
resources.db.params.password = « root»
dans le fichier application.ini
voila !
Bastien
11 août 2010 à 17:04
24Salut à tous,
Même problème que Psykotik …
Vous êtes sur mon site object(Zend_Db_Table_Rowset)#73 (10) { ["_data:protected"]=> array(1) { [0]=> array(8) { ["id"]=> int(1) ["membres_id"]=> int(1) ["titre"]=> string(10) « Mon_Bureau» ["description"]=> string(16) « Voici mon bureau» ["note"]=> NULL ["classement"]=> NULL ["etat"]=> NULL ["date_ajout"]=> string(19) « 2010-08-11 16:37:29″ } } ["_table:protected"]=> object(Model_DbTable_Bureaux)#49 (18) { ["_name:protected"]=> string(7) « bureaux» ["_definition:protected"]=> NULL ["_definitionConfigName:protected"]=> NULL ["_db:protected"]=> object(Zend_Db_Adapter_Mysqli)#24 (12) { ["_numericDataTypes:protected"]=> array(16) { [0]=> int(0) [1]=> int(1) [2]=> int(2) ["INT"]=> int(0) ["INTEGER"]=> int(0) ["MEDIUMINT"]=> int(0) ["SMALLINT"]=> int(0) ["TINYINT"]=> int(0) ["BIGINT"]=> int(1) ["SERIAL"]=> int(1) ["DEC"]=> int(2) ["DECIMAL"]=> int(2) ["DOUBLE"]=> int(2) ["DOUBLE PRECISION"]=> int(2) ["FIXED"]=> int(2) ["FLOAT"]=> int(2) } ["_stmt:protected"]=> object(Zend_Db_Statement_Mysqli)#63 (12) { ["_keys:protected"]=> array(8) { [0]=> string(2) « id» [1]=> string(10) « membres_id» [2]=> string(5) « titre» [3]=> string(11) « description» [4]=> string(4) « note» [5]=> string(10) « classement» [6]=> string(4) « etat» [7]=> string(10) « date_ajout» } ["_values:protected"]=> array(8) { [0]=> &int(1) [1]=> &int(1) [2]=> &string(10) « Mon_Bureau» [3]=>
Pourtant tout est OK comme sur le tuto mais pas de tableau, j’ai cherché toute l’après-midi et je vois pas du tout là. Si vous avez une idée…
Merci à tous
ALC
25 septembre 2010 à 18:34
25Merci pour les tutoriels de bonne qualités.
C’est dommage qu’un zip avec le code n’est pas fourni avec.
Pour ceux qui ont eu le problème de classe non trouvée : « Fatal error: Class ‘Model_DbTable_Bureaux’ not found in …»
Il faut modifier le nom de la classe en ajoutant « Application_» devant, penser à le faire au moment de l’appel aussi. Cela provient de votre autoload qui ne charge pas votre classe et dans lequel vous avez du spécifier : appnamespace = « Application»
Ce n’est peut être pas la solution la plus propre mais cela fonctionne. Si quelqu’un a une meilleur solution, n’hésitez pas!
benoit
24 novembre 2010 à 11:34
26bonjour clément,
j’ai le meme probleme que bastien et psykotik et tu n’as donné aucune réponse.
Je suis allé jusqu’au chapitre 7 mais toujours pareil.
Peux tu nous fournir de plus amples infos.
Merci
nana
15 mars 2011 à 15:33
27Bonjour à tous
Moi aussi j’ai n’est qu’une page blanche à l’étape 2.
Comment faire pour que ca fonctionne correctement?
franck
25 juin 2011 à 12:35
28Merci pour ces tutos qui sont tres bien fait.
MAIS, j’ai un probleme, ça ne doit pas etre grand chose mais, à la fin du tuto lorsque je lance « http://localhost/watchmydesk/public» … la page n’est pas trouvée.
Quelque chose est a configurer?
Si quelqu’un peut m’eclairer
Merci d’avance
Phil
25 juillet 2011 à 13:57
29Bonjour,
Tout d’abord bravo pour ce tutoriel ! Un grand merci.
J’ai un petit problème au niveau de l’import du SQL :
#1280 – Incorrect index name ‘fk_bureaux_membres’
Une idée ?
Andro
9 septembre 2011 à 10:50
30Pour Phil,
J’ai reduis la taille de noms des index par ex :
fk_bureaux_membres devient fk_bureaux_mem et ca passe,
peut être que les noms des constraints sont trop longues
Twist
13 mai 2012 à 15:35
31Bonjour,
Déjà félicitations pour ce tutoriel qui est un des rares à aborder clairement le découpage d’une appli Zend en Front-office et Back-office.
Je débute sur Zend depuis le mois dernier et c’est exactement ce que je cherhais
@Phil & @Andro :
Vos com’s datent un peu mais çà pourrait servir à d’autres lecteurs…
Même si çà peut résoudre le problème d’erreur MySQL qui survient à la génération de la BDD, le souci ne vient pas des nom de contraintes qui seraient trop long.
Pour ma part je créé toujours des tables sans clés étrangères, mais je las créées aprés coup via des ALTER TABLE que je mets à la fin de mon script SQL.
De plus il est impossible d’avoir 2 clés étrangères avec le même nom.
Pour contourner çà je les préfixes avec les initiales de la table en question.
Voilà à quoi ressemble mon script SQL :
– Début de Script SQL –
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’;
– —————————————————–
– Table `membres`
– —————————————————–
CREATE TABLE IF NOT EXISTS `membres` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR(20) NULL ,
`email` VARCHAR(150) NULL ,
`pass` VARCHAR(32) NULL ,
`date_inscription` DATETIME NULL ,
`ip_inscription` VARCHAR(16) NULL ,
`last_login` DATETIME NULL ,
`lvl` INT(1) NULL ,
`pays` VARCHAR(2) NULL ,
`etat` INT(1) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
CREATE UNIQUE INDEX `Login_unique` ON `membres` (`login` ASC);
– —————————————————–
– Table `bureaux`
– —————————————————–
CREATE TABLE IF NOT EXISTS `bureaux` (
`id` INT NOT NULL AUTO_INCREMENT ,
`b_membres_id` INT NULL ,
`titre` VARCHAR(100) NULL ,
`description` TEXT NULL ,
`note` DOUBLE NULL ,
`classement` INT(11) NULL ,
`etat` INT(1) NULL ,
`date_ajout` DATETIME NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
– —————————————————–
– Table `photos`
– —————————————————–
CREATE TABLE IF NOT EXISTS `photos` (
`id` INT NOT NULL AUTO_INCREMENT ,
`p_bureaux_id` INT NULL ,
`url` VARCHAR(250) NULL ,
`date_ajout` DATETIME NULL ,
`etat` INT(1) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
– —————————————————–
– Table `bureaux_photos`
– —————————————————–
CREATE TABLE IF NOT EXISTS `bureaux_photos` (
`id` INT NOT NULL AUTO_INCREMENT ,
`bp_photos_id` INT NOT NULL ,
`bp_bureaux_id` INT NOT NULL ,
`principale` INT(1) NULL DEFAULT 0 ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
– —————————————————–
– Table `commentaires`
– —————————————————–
CREATE TABLE IF NOT EXISTS `commentaires` (
`id` INT NOT NULL AUTO_INCREMENT ,
`c_membres_id` INT NULL ,
`c_bureaux_id` INT NULL ,
`texte` TEXT NULL ,
`ip` VARCHAR(16) NULL ,
`date_ajout` DATETIME NULL ,
`etat` INT(1) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
– —————————————————–
– Table `votes`
– —————————————————–
CREATE TABLE IF NOT EXISTS `votes` (
`id` INT NOT NULL AUTO_INCREMENT ,
`v_membres_id` INT NULL ,
`v_bureaux_id` INT NULL ,
`note` INT(2) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
ALTER TABLE `bureaux` ADD CONSTRAINT `fk_bureaux_membres` FOREIGN KEY (`b_membres_id`) REFERENCES membres(`id`);
ALTER TABLE `photos` ADD CONSTRAINT `fk_photos_bureaux` FOREIGN KEY (`p_bureaux_id`) REFERENCES bureaux(`id`);
ALTER TABLE `bureaux_photos` ADD CONSTRAINT `fk_bureaux_photos_photos` FOREIGN KEY (`bp_photos_id`) REFERENCES photos(`id`);
ALTER TABLE `bureaux_photos` ADD CONSTRAINT `fk_bureaux_photos_bureaux` FOREIGN KEY (`bp_bureaux_id`) REFERENCES bureaux(`id`);
ALTER TABLE `commentaires` ADD CONSTRAINT `fk_commentaires_membres` FOREIGN KEY (`cm_membres_id`) REFERENCES membres(`id`);
ALTER TABLE `commentaires` ADD CONSTRAINT `fk_commentaires_bureaux` FOREIGN KEY (`cb_bureaux_id`) REFERENCES bureaux(`id`);
ALTER TABLE `votes` ADD CONSTRAINT `fk_votes_membres` FOREIGN KEY (`vm_membres_id`) REFERENCES membres(`id`);
ALTER TABLE `votes` ADD CONSTRAINT `fk_votes_bureaux` FOREIGN KEY (`vb_bureaux_id`) REFERENCES bureaux(`id`);
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
– Fin de Script SQL –
Testé et approuvé, en revanche faites attention au copier-coller pour le reste du Tuto.
Modifiez vos requêtes en conséquence dans vos modèles
@++
soo
26 mars 2013 à 12:28
32salut j’ai un petit soucis lors de la création de la base lorsque j’execute le fichier .sql phpmyadmin affiche ça:
- Incorrect index name ‘fk_bureaux_membres’
Laisser un commentaire
Devenir Fan de Dator.fr
Nuage de tags
Sponsors
Warning: gzinflate() [function.gzinflate]: data error in /homez.27/dator/www/wp-includes/http.php on line 1787
Blogoliste
Blogs Amis
Derniers Posts
Derniers Commentaires
Les meilleurs sujets
Propulsé par WordPress