8796 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Oui, j'avais bien compris le but du jeu (même s'il s'agit plutôt dans ta phrase du MLD que du MCD Smiley cligne ). Quoi qu'il en soit tu as toutes les infos et il ne te reste plus qu'à retrouver les bons identifiants.

A noter qu'il faudra bien faire gaffe à la sécurisation côté PHP (vaste sujet) et notamment aux injections SQL.


Edit: En passant le problème vient peut-être du fait que 1and1 interdise la création de database en standard. A vérifier...
Modifié par Heyoan (08 Jul 2010 - 14:04)
Oui je pense que 1and1 n'autorise pas la création de base de donnée vie un script...

Je viens d'avoir une idée brouillon mais qui risque de marcher, dis moi ce que tu en pense...

Je vais créer la base manuèlement, il y aura une seul base pour tous ceux qui instaleront mon CMS par contre les tables seront de nom différentes...

Exemple :

a écrit :
table1_romain

table2_romain

table1_Anthony

table2_Anthony
Ou peut être que les accès que tu as mis n'ont pas le privilège de créer une base de données.
Va sur PhpMyAdmin et clique sur privilèges en haut, et vérifie si tes identifiants ont bel et bien le droit de créer une base de données.
Si c'est ça je vois pas comment on fait les développers de Joomla, yourprofolio ect...

J'ai déjà installer un site joomla sur le serveur que j'ai est ça marche, ça me créer la base de donnée. Alors pourquoi ça ne marcherais pas avec nous ?
Modifié par tonymx15 (08 Jul 2010 - 14:58)
re...

En fait les hébergeurs limitent le nombre de bases de données que l'on peut créer... la première fois que tu crées, tu utilise la première base dispo... elle est propre à 1 domaine... si tucrée une deuxième base je pencherai pour le fait qu'il te faille un autre domaine...

La solution de plusieurs table est certainement la plus simple..

Gaffe toutefois a avoir assez de place.. et surtout la sécurisation Smiley cligne bon courage
Re à tous,

Voilà j'ai créé le script cependant seulement la table "profil", "album" et "video" se créer, les autres n'apparaissent pas... Je ne sais pas pourquoi, aurez vous une idée ?

Le schéma entité-association :

http://img697.imageshack.us/img697/6809/schemaentiterelation.png

a écrit :

<?php
$host = "******"; //Le nom du serveur de votre bas de donnée entre guillemenets.
$user = "******"; //Le nom utilisateur de votre base de donnée entre guillemets.
$passwd = "******"; //Le mot de pass de votre base de donnée entre guillemets.

$con_serv = mysql_connect($host,$user,$passwd);
$con_bdd = mysql_select_db("******"); //Le nom de votre base de donnée.

//création des tables et des champs.
$profil = "create table profil(
id_profil int NOT NULL auto_increment,
prenom_profil char(255),
nom_profil char(255),
email_profil char(255),
adresse_profil char(255),
mdp_profil char(255),
ddn_profil int,
presentation_profil varchar(2000),
img_profil char(255),
PRIMARY KEY(id_profil)
) TYPE = InnoDB ";

$album = "create table album(
id_album int NOT NULL auto_increment,
date_album char(255),
nom_album char(255),
PRIMARY KEY(id_album)
) TYPE = InnoDB ";

$article = "create table article(
id_article int NOT NULL auto_increment,
date_article char(255),
titre_article char(255),
texte_article varchar(2000),
FOREIGN KEY (id_photo) REFERENCES photo(id_photo),
PRIMARY KEY(id_article)
) TYPE = InnoDB ";

$photo = "create table photo(
id_photo int NOT NULL auto_increment,
date_photo char(255),
url_photo char(255),
PRIMARY KEY(id_photo),
FOREIGN KEY (id_album) REFERENCES album(id_album)
) TYPE = InnoDB ";

$video = "create table video(
id_video int NOT NULL auto_increment,
date_video char(255),
url_video char(255),
PRIMARY KEY(id_video)
) TYPE = InnoDB ";



$commentaire = "create table commentaire(
id_commentaire int NOT NULL auto_increment,
date_commentaire char(255),
texte_commentaire char(255),
exp_commentaire varchar(2000),
PRIMARY KEY(id_commentaire),
FOREIGN KEY(id_article) REFERENCES article(id_article),
FOREIGN KEY(id_video) REFERENCES video(id_video)
) TYPE = InnoDB ";

$evenement = "create table evenement(
id_evenement int NOT NULL auto_increment,
date_evenement char(255),
titre_evenement char(255),
adresse_evenement char(255)
) TYPE = InnoDB ";

$requete1 = mysql_query($profil);
$requete2 = mysql_query($article);
$requete3 = mysql_query($photo);
$requete4 = mysql_query($video);
$requete5 = mysql_query($album);
$requete6 = mysql_query($commentaire);
$requete7 = mysql_query($evenement);

?>
Salut,

quand tu es en phase de développement il faut afficher les erreurs !

Typiquement : mysql_query($requete) or die($requete.'<br>'.mysql_error());

Ensuite ça ne peut pas fonctionner puisque tu effectues tes requêtes sans tenir compte de l'ordre de création. Concrètement tu essaies de créer une table ayant une clé étrangère sur une autre table qui n'est pas encore créée.
Euh... ben je viens de te le dire : il faut créer en premier la table dont l'id sera la clé étrangère et seulement ensuite la table qui comporte une clé étrangère. Smiley rolleyes
Sauf que j'ai seulement trois tables sans clès étrangère et une des trois ne se créer pas, la table évènement... Alors qu'elle ne comporte pas de clès étrangère. Puis si je fais comme tu m'a dis je peux pas créer toutes les tables puisque j'ai des jointures partout. Si tu pouvais m'adapter ou me modifier mon script je comprendrais peut être mieux.

Merci, c'est sympa de m'aider. Smiley smile
    <?php
    $host = "localhost"; //Le nom du serveur de votre bas de donnée entre guillemenets.
    $user = "root"; //Le nom utilisateur de votre base de donnée entre guillemets.
    $passwd = ""; //Le mot de pass de votre base de donnée entre guillemets.

    $con_serv = mysql_connect($host,$user,$passwd);
    $con_bdd = mysql_select_db("tonymx"); //Le nom de votre base de donnée.

    //création des tables et des champs.
    $profil = "create table profil(
    id_profil int NOT NULL auto_increment,
    prenom_profil char(255),
    nom_profil char(255),
    email_profil char(255),
    adresse_profil char(255),
    mdp_profil char(255),
    ddn_profil int,
    presentation_profil varchar(2000),
    img_profil char(255),
    PRIMARY KEY(id_profil)
    ) TYPE = InnoDB ";

    $album = "create table album(
    id_album int NOT NULL auto_increment,
    date_album char(255),
    nom_album char(255),
    PRIMARY KEY(id_album)
    ) TYPE = InnoDB ";

    $video = "create table video(
    id_video int NOT NULL auto_increment,
    date_video char(255),
    url_video char(255),
    PRIMARY KEY(id_video)
    ) TYPE = InnoDB ";

    $evenement = "create table evenement(
    id_evenement int NOT NULL auto_increment,
    date_evenement char(255),
    titre_evenement char(255),
    adresse_evenement char(255),
    PRIMARY KEY(id_evenement)
    ) TYPE = InnoDB ";

    $photo = "create table photo(
    id_photo int NOT NULL auto_increment,
    date_photo char(255),
    url_photo char(255),
    id_album int,
    PRIMARY KEY(id_photo),
    FOREIGN KEY (id_album) REFERENCES album(id_album)
    ) TYPE = InnoDB ";

    $article = "create table article(
    id_article int NOT NULL auto_increment,
    date_article char(255),
    titre_article char(255),
    texte_article varchar(2000),
    id_photo int,
    FOREIGN KEY (id_photo) REFERENCES photo(id_photo),
    PRIMARY KEY(id_article)
    ) TYPE = InnoDB ";

    $commentaire = "create table commentaire(
    id_commentaire int NOT NULL auto_increment,
    date_commentaire char(255),
    texte_commentaire char(255),
    exp_commentaire varchar(2000),
    id_article int,
    id_video int,
    PRIMARY KEY(id_commentaire),
    FOREIGN KEY(id_article) REFERENCES article(id_article),
    FOREIGN KEY(id_video) REFERENCES video(id_video)
    ) TYPE = InnoDB ";

    mysql_query('DROP TABLE IF EXISTS `commentaire`, `article`, `photo`, `evenement`, `album`, `profil`, `video`') or die(mysql_error());

    mysql_query($profil) or die($profil."<br>".mysql_error());
    mysql_query($album) or die($album."<br>".mysql_error());
    mysql_query($video) or die($video."<br>".mysql_error());
    mysql_query($evenement) or die($evenement."<br>".mysql_error());
    mysql_query($photo) or die($photo."<br>".mysql_error());
    mysql_query($article) or die($article."<br>".mysql_error());
    mysql_query($commentaire) or die($commentaire."<br>".mysql_error());

    ?>
A noter :
* tu avais oublié la clé primaire de evenement
* pour créer une contrainte de clé étrangère il faut créer le champ équivalent dans ta table
* à quoi te sert ici de créer des contraintes de clés étrangères puisque tu n'appliques aucune contrainte (ON DELETE / ON UPDATE) ? cf. Contraintes de clés étrangères FOREIGN KEY. Si tu le gères côté PHP elles sont inutiles (<edit>enfin pas complètement puisque cela t'empêche de créer un enregistrement avec une valeur de clé étrangère inexistante dans la table de référence mais du coup cela fait planter la requête et ce n'est pas forcément la meilleure façon de gérer cela.</edit>).
Modifié par Heyoan (12 Jul 2010 - 12:08)
Merci, je comprends mieux, par contre je vais regarder pour les contraintes car je ne vois pas à quoi ça sert... J'ai fais des clès étrangères pour par exemple ajouter une photos dans un album, pour qu'un commentaire appartienne à un article "x" ou une vidéo "x"...

Et pour réaliser des stats.

;)
Bien sûr qu'il faut utiliser des clés étrangères : ma question concernait l'utilisation des contraintes (FOREIGN KEY). Smiley cligne

Edit: du coup j'ai modifié mon message précédent qui n'était pas très clair...
Modifié par Heyoan (12 Jul 2010 - 12:08)
Ah je crois que en faites je me trompais sur l'utilité de "FOREIGN KEY" c'est bien pour créer une clès étrangère ?

Sinon merci c'est plus clair. Smiley smile Smiley smile
Pages :