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 :

Conception BDD


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 42
    Points
    42
    Par défaut Conception BDD
    Bonjour tout le monde j'ai des petit soucis dans ma structure de ma BDD et la voila :

    Accessoire :

    reference,Nom,Prix,FamillesID


    Familles :

    ID,desciption,photo


    dans la table accesoire on a :

    reference ,Nom,Prix,FamillesID

    GUI56 ,Gibson,500,1
    AMP89,ampli,250,2

    Dans la tables Familles on a :

    ID,Description,Photo
    1,dans cette famille on trouve les guitare,photo.jpg
    2,dans cette famille on trouve les amplis,photo2.jpg
    ...


    Bon pour la description et la photo elles seront générale, par exemple lorsque je visite la catégorie guitare je verrais une petite description avec une photo, qui sera générales et présentes dans toutes les guitares .
    mais mon problème est celui-ci lorsque je visite n'importe qu'elle catégorie ça n'affiche que la première page , ça serais génial si quelqu’un pourrai m'apporter un peu d'aide et a plus

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    mais mon problème est celui-ci lorsque je visite n'importe qu'elle catégorie ça n'affiche que la première page
    Ca c'est un problème de fonctionnement, donc de code.
    Il faut alors poster le code, sinon on va pas pouvoir deviner ce qui n'irait pas.


    Au passage, tu utiliserais comme clé primaire une référence dans la table "accessoire".
    C'est juste une remarque, mais une Bdd est plus performante lorsque les clés primaires/secondaire sont des identifiants numériques (nombre entiers).
    Aussi, ces clés primaires/secondaires sont là pour faire fonctionner la Bdd, mettre en relation les tables, c'est plus un mécanisme technique qu'autre chose.
    Ces références ne sont pas là pour faire fonctionner la Bdd mais pour représenter une partie de ton métier (insérer des référence de produits).

    On peu concilier les 2 sans problème, c'est à dire de créer un champ genre "id" en clé primaire et en auto_increment et conserver ce champ reference à coté (id | reference | etc ...).
    Vu qu'une référence doit être unique (tout comme l'id), il suffit de rajouter une contrainte d'unicité UNIQUE sur ce champ "reference".

    Si un jour et pour X ou Y raison tu dois modifier la valeurs d'une des références, ça risque d'être compliqué, voire pire provoquer des bugs, des effets de bords en l'utilisant comme clé primaire.
    A l'inverse, utiliser un champ "id" comme clé primaire et à coté un champ "reference" UNIQUE, là on diminue les risques (ce champ reference sera moins présent dans d'autres tables, ce sera très rare même).

    Faut voir.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    C'est pas une erreur de Codage "Vue que je créer mon site avec Dreamweaver" c'est juste un problème (ou mal conception dans ma base de données ) , a votre avis avec cette conception ça marcherais ? et si je veux afficher la photo c'est qu'elle champs devrais-je afficher (photo) ?

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salam ; +1 RunCodePhp , et oui faut posté votre code.
    dreamwever n'est pas aussi intelligent , c'est automatisé.!!!
    je voie pas le champs photo , normalement est de type Blob sauf si vous stocker vos image dans un fichier.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Voici le code PHP de ma page


    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <?php require_once('Connections/streamy.php'); ?><?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $colname_DetailRS1 = "-1";
    if (isset($_GET['recordID'])) {
      $colname_DetailRS1 = $_GET['recordID'];
    }
    mysql_select_db($database_streamy, $streamy);
    $query_DetailRS1 = sprintf("SELECT * FROM accesoire WHERE reference = %s", GetSQLValueString($colname_DetailRS1, "text"));
    $DetailRS1 = mysql_query($query_DetailRS1, $streamy) or die(mysql_error());
    $row_DetailRS1 = mysql_fetch_assoc($DetailRS1);
    $totalRows_DetailRS1 = "-1";
    if (isset($_GET['recordID'])) {
      $totalRows_DetailRS1 = $_GET['recordID'];
    }
    $epi_DetailRS1 = "-1";
    if (isset($_GET['ref'])) {
      $epi_DetailRS1 = $_GET['ref'];
    }
    $lang_DetailRS1 = "-1";
    if (isset($_GET['prix'])) {
      $lang_DetailRS1 = $_GET['prix'];
    }
    $colname_DetailRS1 = "-1";
     
    $colname_DetailRS1 = "-1";
    if (isset($_GET['recordID'])) {
      $colname_DetailRS1 = $_GET['recordID'];
    }
    $epi_DetailRS1 = "-1";
    if (isset($_GET['ref'])) {
      $epi_DetailRS1 = $_GET['ref'];
    }
    $lang_DetailRS1 = "-1";
    if (isset($_GET['prix'])) {
      $lang_DetailRS1 = $_GET['prix'];
    }
    mysql_select_db($database_streamy, $streamy);
    $query_DetailRS1 = sprintf("SELECT * FROM accessoire, familles WHERE reference = %s  AND accessoire.nom = %s AND categori.prix AND categori.famillesID = %s", GetSQLValueString($colname_DetailRS1, "text"),GetSQLValueString($epi_DetailRS1, "text"),GetSQLValueString($lang_DetailRS1, "text"));
    $DetailRS1 = mysql_query($query_DetailRS1, $streamy) or die(mysql_error());
    $row_DetailRS1 = mysql_fetch_assoc($DetailRS1);
    $totalRows_DetailRS1 = mysql_num_rows($DetailRS1);
     
    mysql_select_db($database_streamy, $streamy);
    $query_Recordset1 = "SELECT * FROM familles";
    $Recordset1 = mysql_query($query_Recordset1, $streamy) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
     
    <p>&nbsp;</p>
    <?php do { ?>
      <table border="1" align="center">
        <tr>
          <td>titre</td>
          <td><?php echo $row_DetailRS1['reference']; ?></td>
        </tr>
        <tr>
          <td>episode</td>
          <td><?php echo $row_DetailRS1['nom']; ?></td>
        </tr>
        <tr>
          <td>langue</td>
          <td><?php echo $row_DetailRS1['prix']; ?></td>
        </tr>
        <tr>
          <td>lien</td>
          <td><?php echo $row_DetailRS1['famillesID']; ?></td>
        </tr>
      </table>
      <?php } while ($row_DetailRS1 = mysql_fetch_assoc($DetailRS1)); ?>
      <p><img src="images/<?php echo $row_DetailRS1['photo']; ?>" /></p>
    </body>
    </html><?php
    mysql_free_result($DetailRS1);
     
    mysql_free_result($Recordset1);
    ?>

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par redoran Voir le message
    salam ; +1 RunCodePhp , et oui faut posté votre code.
    dreamwever n'est pas aussi intelligent , c'est automatisé.!!!
    je voie pas le champs photo , normalement est de type Blob sauf si vous stocker vos image dans un fichier.
    oui le stockage est fait dans un fichier sur la BDD c juste le nom qui est stocker

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    A mon sens, il faudrait faire le ménage dans le code, car à plein de reprises certaines variables seraient "écrasée" (en quelque sorte perdues).
    -> Lorsque la 1ère requête SQL sera exécutée pour récupérer l'accessoire (ou les accessoires) stocker dans : $row_DetailRS1
    cette variable $row_DetailRS1 sera écrasée lors de l'exécution de la 2ème requête.
    Vaut revoir ça.


    Puis il y a du code répétitifs surement à éliminer, genre la sélection de la Bdd : 1 seule fois suffit, surement à placer dans le fichier de connexion.


    Aussi, et concernant ce paramètre recordID, variable $colname_DetailRS1, champ reference, variable $totalRows_DetailRS1 ... ceci ressemble à un vrai jeu de piste.
    J'ai du mal à comprendre la logique.

    Si on doit lancer une requête SQL pour rechercher un ou plusieurs accessoires selon la valeur d'une référence, alors il vaut mieux nommer le paramètre et la variable : reference/$reference, ça sera plus facile à suivre, histoire nommer les choses de manières cohérente.


    Un conseil, évite de nommer des variables comme :
    $query_Recordset1, $row_Recordset1, $totalRows_Recordset1
    C'est tout sauf intuitif, explicite, compréhensible.
    Même dans le domaine scolaire je doute qu'on fasse de la sorte.
    Il est 100 fois mieux de nommer les variables selon ce quelles contiennent.
    Si on lance une requête SQL pour récupérer les familles de produits, comme ceci serait bien mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Chaine SQL de la requête des familles
    $famille_sql = "SELECT * FROM familles";
    // Ressource que retourne la requête sur la famille
    $famille_rs = mysql_query($famille_sql, $streamy) or die(mysql_error());
    // Ligne de la famille (un tableau associatif)
    $famille = mysql_fetch_assoc($famille_rs);
    // Nombre total de résultat de la requête sur la famille
    $total_famille = mysql_num_rows($famille_rs);
    Mais encore, il est plus simple à mon sens d'utiliser une boucle avec while (simple) que do/while.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    while ($row_DetailRS1 = mysql_fetch_assoc($DetailRS1)) {
    ?>
    ... etc ... HTML
    <?php
    }
    ?>
    La doc de Php fourni un exemple : mysql_fetch_assoc()


    Est-ce que c'est DreamWeaver qui te génère tout ce code ?
    Si c'est le cas, j'y mets de grosse réserve sur le choix du Soft pour créer son site, particulièrement si on a pour but de le faire soit même, d'apprendre le Html, Css, Php, SQL, etc ...
    M'enfin ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2007, 22h02
  2. Epine de conception BDD : calculs de valeurs
    Par YeP dans le forum Modélisation
    Réponses: 5
    Dernier message: 16/08/2007, 18h55
  3. conception BDD immobiliere
    Par mealtone dans le forum Débuter
    Réponses: 4
    Dernier message: 14/06/2006, 17h34
  4. conception BDD
    Par Naruto_kun dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/04/2006, 17h46
  5. [Conception] BDD & PHP, néophite à besoin d'aide pour un site
    Par Cusack dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 14/02/2006, 20h53

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