IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Upload photo dans répertoire via mysql


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut Upload photo dans répertoire via mysql
    Bonjour,

    Je ne trouve pas depuis quelques temps, je cherche à permettre à mes clients d'une boutique d'uploader leurs photos.
    J'aimerais que les photos soient stockées dans un répertoire de mon serveur et que la photo uploadée soit associée dans un champs de ma table suivante pour qu'elle corresponde au client qui l'a uploadé :

    id_customer id_gender email passwd birthday lastname newsletter firstname

    Ou alors dans une autre table et la lier à la table au dessus.
    De ce fait je pourrais afficher où je veux la photo en fonction du client sur mon site. D'après le même système que les avatars.

    Le problème c'est que je ne vois vraiment pas comment je pourrais faire car je ne m'y connais pas assez en php/mysql pour écrire moi même le code. Donc si vous pourriez m'aider ou si vous connaissez un script déjà existant...

    Merci d'avance si vous preniez le temps de m'aider car je ne trouve pas.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Ce que tu cherches à faire est assez simple; il te faut une table users et une table users_files ou tu stocke l'id de l'utilisateur et le path du fichier (si tu peux stocker le mime et des commentaires c'est encore mieux).

    Images attachées Images attachées  

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Ok merci infiniment pour cette réponse détaillée. Je comprends mieux grâce à ton schéma.
    J'ai déjà ma table customers, le problème c'est que je ne comprends pas comment faire ça :

    une table users_files ou tu stocke l'id de l'utilisateur et le path du fichier
    Enfin je ne comprends pas comment je peux lier les 2 tables et stocker le path dans la bdd.
    D'autant que ça se complique beaucoup plus étant donné que la boutique (Prestashop) utilise le smarty et que le mieux serait de ne pas toucher aux fichiers core system. J'suis un peu perdu

    Ton tuto sur SDZ m'est vraiment très utile mais j'ai entendu dire qu'il pouvait y avoir des failles de sécurité ?!

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Enfin je ne comprends pas comment je peux lier les 2 tables et stocker le path dans la bdd.
    C'est le champ users_id de la table users_files qui assure la relation. Cette relation caractérise par ailleurs une cardinalité 1-n (1 utilisateur à n fichiers).
    On peut (et je te le recommande) sécuriser cette association au moyen d'une contrainte sur la clé étrangère users_id - une clé étrangère est un attribut d'une table qui provient d'une autre table, dans notre exemple, users_id est en fait l'attribut id de la table users, on doit donc s'assurer que chaque users_id présent dans users_files, on a bien un id correspondant dans la table users, sinon on risque de se retrouver avec des entrées orphelines dans la table users_id.

    D'autant que ça se complique beaucoup plus étant donné que la boutique (Prestashop) utilise le smarty et que le mieux serait de ne pas toucher aux fichiers core system. J'suis un peu perdu
    Tu aurais dû poster dans la section Prestashop au lieu de PHP/MySQL. Remarque, je ne comprends pas en quoi une gestion des images pour tes utilisateurs fait partie de ta boutique ? ça devrait être un module indépendant de prestashop non ? Je te déconseille de tout mettre dans le même sac; je te recommande plutôt de faire ton site de façon à avoir
    - mon site
    - page utilisateurs > gestion des images
    - boutique
    - une autre section (blog par exemple)

    Ton tuto sur SDZ m'est vraiment très utile mais j'ai entendu dire qu'il pouvait y avoir des failles de sécurité ?!
    En effet, il t'appartient de t'assurer qu'un utilisateur malveillant ne puisse pas envoyer des fichiers exécutables sur le serveur par exemple ou des fichiers de nature à empêcher les autres utilisateur d'utiliser le service correctement (XSS). C'est relativement simple en fait, tu dois juste vérifier que le fichier que tu reçoit n'est pas un .cgi / .php etc. Le renommer systématiquement avant d'enregistrer son emplacement en BDD est également une façon de se protéger (ça peut se faire très simplement avec move_uploaded_file).

    -- Edit: voici ce à quoi devrait ressembler ton SQL de création des tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    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 `users`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS `users` (
      `id` BIGINT(25) NOT NULL AUTO_INCREMENT ,
      `surname` VARCHAR(90) NOT NULL ,
      `name` VARCHAR(90) NOT NULL ,
      `password` VARCHAR(45) NOT NULL ,
      `birthday` DATE NULL ,
      PRIMARY KEY (`id`) )
    ENGINE = InnoDB;
     
    -- -----------------------------------------------------
    -- Table `users_files`
    -- -----------------------------------------------------
     
    CREATE  TABLE IF NOT EXISTS `users_files` (
      `id` BIGINT(25) NOT NULL AUTO_INCREMENT ,
      `path` VARCHAR(125) NOT NULL ,
      `mime` VARCHAR(15) NULL ,
      `comment` TEXT NULL ,
      `users_id` BIGINT(25) NOT NULL ,
      PRIMARY KEY (`id`) ,
      INDEX `fk_users_files_users` (`users_id` ASC) ,
      CONSTRAINT `fk_users_files_users`
        FOREIGN KEY (`users_id` )
        REFERENCES `users` (`id` )
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
     
    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Merci beaucoup je suppose qu'avec ce que tu m'as donné en SQL, la relation est déjà intégré car c'est en partie ce que je n'arrivais pas à faire.

    Je n'avais pas vu qu'il y avait une rubrique Prestashop, en fait j'essaie de créer mon propre module qui puisse ajouter la gestion des images. Pour tout te dire j'essaie d'insérer un mini réseau social à la boutique (avatar, friend requests,...) mais le tout incorporé à ma boutique.

    J'ai appris à créer un module sous Prestashop mais je ne comprends pas techniquement comment je pourrais le réaliser.
    Car un module Prestashop c'est : un folder (module) qui contient en général module.php et module.tpl qui est le fichier template mais qui contient aussi du php et du html.
    Je vais déjà essayer de modifier ma table SQL customers avec ce que tu m'as donné.
    Je ne saurais comment te remercier

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    je suppose qu'avec ce que tu m'as donné en SQL, la relation est déjà intégré
    En réalité, une relation entre deux tables se fait de manière logique. On peut cependant leur donner une existence concrète en utilisant des FOREIGN KEY et des CONSTRAINT sur ces clés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INDEX `fk_users_files_users` (`users_id` ASC) , >> Notre clé étrangère
    CONSTRAINT `fk_users_files_users` >> Notre contrainte sur cette clé
      FOREIGN KEY (`users_id` )
      REFERENCES `users` (`id` )
    Pour tout te dire j'essaie d'insérer un mini réseau social à la boutique (avatar, friend requests,...) mais le tout incorporé à ma boutique.
    Ok, pourquoi pas.

    Pour t'aider voici un exemple de requête qui liste les fichiers uploadés par un utilisateur (qu'on connait par son name):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT u.`id`, u.`name`, u.`surname`, f.`path`, f.`mime`, f.`comment`
    FROM users AS u JOIN users_files AS f ON (f.users_id=u.id)
    WHERE u.name='$username';
    Un code tout simple pour tester ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?php
    header('Content-Type: text/plain');
     
    $connection = mysql_connect("localhost","root","") or die("Cannot open mysql connection");
    mysql_select_db("UserFiles");
     
    $username = "Charles";
     
    $query = "SELECT u.`id`, u.`name`, u.`surname`, f.`path`, f.`mime`, f.`comment`".
             " FROM `users` AS u JOIN `users_files` AS f ON (f.`users_id`=u.`id`)".
    		 " WHERE u.name='$username'";
     
    if ($results = mysql_query($query))
    {
    	while ($row = mysql_fetch_assoc($results))
    	{
    		var_dump($row);
    	}
    }
    else
    {
    	$err = mysql_error();
    	var_dump($err);
    }
    (j'ai mis le jeu d'essai en pièce jointe)

    Produit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    array(6) {
      ["id"]=>
      string(1) "1"
      ["name"]=>
      string(7) "Charles"
      ["surname"]=>
      string(6) "Dubois"
      ["path"]=>
      string(34) "/var/www/mon_site/upload/file1.jpg"
      ["mime"]=>
      string(10) "image/jpeg"
      ["comment"]=>
      string(22) "Un commentaire stupide"
    }
    array(6) {
      ["id"]=>
      string(1) "1"
      ["name"]=>
      string(7) "Charles"
      ["surname"]=>
      string(6) "Dubois"
      ["path"]=>
      string(34) "/var/www/mon_site/upload/file2.jpg"
      ["mime"]=>
      string(10) "image/jpeg"
      ["comment"]=>
      string(28) "Un autre commentaire stupide"
    }
    On va d'ailleurs se simplifier le travail en utilisant une vue.
    Avec MySQL, comme avec la plupart des SGBD relationnelles, il est possible de créer des vues de données pour abstraire la complexité de certaines requêtes. Dans notre cas, on va s'en servir pour faciliter la requête que je viens de te donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE VIEW get_users_files AS 
    SELECT u.`id` , u.`name` , u.`surname` , f.`path` , f.`mime` , f.`comment`
    FROM `users` AS u
    JOIN `users_files` AS f ON ( f.`users_id` = u.`id` )
    On va désormais pouvoir faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM get_users_files WHERE name = "Peter"
    Tout simplement comme s'il s'agissait d'une table. En réalité, on a créé en quelque sorte une macro.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Hmmm ok vu comme ça j'ai compris. Je dois donc créer la vue get_users_files pour me faciliter la relation entre les 2 autres.
    J'ai plusieurs questions à te poser :

    1-
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     INDEX `fk_users_files_users`
    Peut-on mettre le nom d'index que l'on veut ?

    2-
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT u.`id`, u.`name`, u.`surname`, f.`path`, f.`mime`, f.`comment`
    FROM users AS u JOIN users_files AS f ON (f.users_id=u.id)
    WHERE u.name='$username';
    Qu'est ce que cela donnerait avec les tables ps_customer et ps_customer_files ? Car j'ai du mal à imaginer.

    3- Ensuite je crée la vue avec
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE VIEW get_users_files AS
    ?

    Et après je suis le tuto de SDZ pour savoir comment uploader dans un répertoire et que le path se mette dans la variable correspondante c'est ça ?
    Et au final je pourrais positionner l'image du client en affichant la variable path ?

    Désolé si mes questions peuvent paraître débiles, autant XHTML/CSS je maîtrise mais PHP/MYSQL je fais noob

  8. #8
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Peut-on mettre le nom d'index que l'on veut ?
    Oui mais il vaut mieux que ces noms soient uniques.

    Qu'est ce que cela donnerait avec les tables ps_customer et ps_customer_files ? Car j'ai du mal à imaginer.
    La structure de la requête restera globalement la même, pour répondre précisément il faudrait que je voies les structures (tu peux les obtenir avec un "show create table <table>;")

    Et après je suis le tuto de SDZ pour savoir comment uploader dans un répertoire et que le path se mette dans la variable correspondante c'est ça ?
    Oui, il faut que tu vérifie que Apache à bien les droits de lecture/écriture dans le répertoire ou tu vas stocker les images.
    Tu vas utiliser move_uploaded_file pour ça en spécifiant le chemin de destination (là ou tu veux poser tes fichiers). Petit rappel; PHP mets par défaut les fichiers uploadés dans un répertoire temporaire avec un nom temporaire, ceci afin d'éviter qu'un utilisateur malicieux ne puisse aller éxécuter un script coté serveur en conaissant ce path (qui généralement reste inchangé sur une plateforme). Il t'appartient de déplacer ce fichier (avec la fonction cité ci-dessus) et de lui remettre le bon nom - dans ton cas je te suggère d'en générer un.

    Et au final je pourrais positionner l'image du client en affichant la variable path ?
    Oui, supposons que ton HTTP ROOT soit /var/www/mon_site et que le répertoire ou tu pose les images soit /var/www/mon_site/upload/, il suffira que tu mettes des balises img de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="/upload/fichier.ext" alt="fichier.ext" width="50" height="50" title="fichier" />

  9. #9
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    ps_customer	
    CREATE TABLE `ps_customer` (
     `id_customer` bigint(25) unsigned NOT NULL AUTO_INCREMENT,
     `id_gender` int(10) unsigned NOT NULL,
     `id_default_group` int(10) unsigned NOT NULL DEFAULT '1',
     `secure_key` varchar(32) NOT NULL DEFAULT '-1',
     `email` varchar(128) NOT NULL,
     `passwd` varchar(32) NOT NULL,
     `last_passwd_gen` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
     `birthday` date DEFAULT NULL,
     `lastname` varchar(32) NOT NULL,
     `newsletter` tinyint(1) unsigned NOT NULL DEFAULT '0',
     `ip_registration_newsletter` varchar(15) DEFAULT NULL,
     `newsletter_date_add` datetime DEFAULT NULL,
     `optin` tinyint(1) unsigned NOT NULL DEFAULT '0',
     `firstname` varchar(32) NOT NULL,
     `dni` varchar(16) DEFAULT NULL,
     `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
     `deleted` tinyint(1) NOT NULL DEFAULT '0',
     `date_add` datetime NOT NULL,
     `date_upd` datetime NOT NULL,
     PRIMARY KEY (`id_customer`),
     UNIQUE KEY `customer_email` (`email`),
     KEY `customer_login` (`email`,`passwd`),
     KEY `id_customer_passwd` (`id_customer`,`passwd`),
     KEY `id_gender` (`id_gender`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
    Voici ma table ps_customer et je réfléchis à créer la table ps_customer_files avec ce que j'aurais besoin.

    J'ai pas compris le "fichier.ext" que tu mets dans les balise img, est ce que je ne pourrais pas afficher tout simplement la variable $path ?
    <img src=$path_user> ou quelque chose comme ça ?

  10. #10
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Si bien sûr, mais ça produira chez le client ce que je t'ai donné en exemple.

  11. #11
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Ok parfait et pour ma table qu'est ce tu en penses ? Ca donnerait quoi la requête avec une autre table ps_customer_files ?
    Car je vois pas à quoi ça correspond les u. et f.

    Merci encore après ça j'aurai tous les éléments nécessaires

  12. #12
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    ça donnerai quelque chose dans ce goût là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE  TABLE IF NOT EXISTS `ps_customer_file` (
      `id_file` BIGINT(25) NOT NULL AUTO_INCREMENT ,
      `path` VARCHAR(125) NOT NULL ,
      `mime` VARCHAR(15) NULL ,
      `comment` TEXT NULL ,
      `ps_customer_id` BIGINT(25) NOT NULL ,
      PRIMARY KEY (`id`) ,
      INDEX `fk_ps_customer_id` (`ps_customer_id` ASC) ,
      CONSTRAINT `fk_ps_customer_id`
        FOREIGN KEY (`ps_customer_id` )
        REFERENCES `ps_customer` (`id` )
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    (j'ai respecté ton formalisme).
    Tu peux ajouter des champs à ta convenance comme la date d'envoi ou la taille du fichier etc.

    Car je vois pas à quoi ça correspond les u. et f.
    Dans l'exemple de requête que je t'ai donné, tu as dû remarquer l'emploi du mot clé 'AS' de SQL. Ce mot clé sert à définir un alias pour un nom de table au sein d'une requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT a.id, b.id FROM table_a AS a, table_b AS b;
    Comme tu le vois avec l'exemple ci-dessus, on a 2 tables (table_a et table_b qui ont toutes deux un champ 'id', ce n'est pas pratique pour les sélectionner ensemble (d'ailleurs si tu tentes de le faire, MySQL lancera une erreur disant qu'il est incapable de lever l'ambigüité sur le champ id, en fait il ne saura pas dans quelle table la prendre.) Ajouter les alias 'a' et 'b' dans la clause from et préfixer le noms des champs sélectionnés permet de lever cette ambigüité et de faire fonctionner la requête. C'est aussi plus lisible (dans une clause ON par exemple - voir requête quelques post au dessus) et plus court pour écrire.
    Note; ce n'est pas une convention, si tu n'en a pas l'usage (parce que par exemple tu n'utilise qu'une seule table), libre à toi de ne pas t'en servir.

    Donc pour résumer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.name FROM table AS a;
    // equivaut à
    SELECT table.name FROM table;

  13. #13
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Une requête qui joindrait les deux tables 'ps_customer' et 'ps_customer_file' pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT f.path, f.mime, f.comment, u.id_customer, u.email 
    FROM ps_customer_file AS f 
    JOIN ps_customer AS u 
    ON (f.ps_customer_id=u.id_customer)
    WHERE email="<email>";
    J'ai supposé que Email était l'équivalent de ton champ login vu qu'il y a un index unique dessus. Sache également que les requêtes s'exécutent plus rapidement si la clause WHERE utilise un champ indexé.

    Pour la vue, c'est simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE VIEW ps_get_customer_file AS 
    SELECT f.path, f.mime, f.comment, u.id_customer, u.email 
    FROM ps_customer_file AS f 
    JOIN ps_customer AS u 
    ON (f.ps_customer_id=u.id_customer);
     
    // Une requête sur cette vue
    SELECT * FROM ps_get_customer_file WHERE email="<email>";
    J'en profite pour préciser qu'on ne peut pas insérer, mettre à jour ou supprimer des champs avec une vue.

  14. #14
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Merci beaucoup pour toutes ces informations, tu te gaves
    Maintenant que j'ai compris je vais passer à la pratique et ça risque d'être une autre histoire...
    Merci encore Benjamin !

Discussions similaires

  1. [AC-2010] Chercher photos dans répertoire
    Par pounette dans le forum VBA Access
    Réponses: 18
    Dernier message: 13/12/2013, 14h06
  2. Upload fichier dans répertoire défini ?
    Par Le Mad dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/06/2009, 14h35
  3. Introduire une photo dans une base mysql
    Par laurentche dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/04/2009, 17h44
  4. Insérer des images dans flash via Mysql
    Par lbbarrere dans le forum Intégration
    Réponses: 0
    Dernier message: 09/04/2008, 19h49
  5. inserer des photos dans une bdd mysql
    Par oceane751 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/05/2006, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo