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

Langage PHP Discussion :

[Tableaux] Variable non reconnue


Sujet :

Langage PHP

  1. #21
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    oauis desolé j'a un peu de mal lol

    bon, j'ai mon formulaire avec des champs que je rajoute, jusqu'ici tout va bien
    jusqu'au moment (où tu es intervenu) où j'ai eut mon soucis avec le $x.

    le but de ce formulaire (je parle du formulaire que j'ai et celui sur lequel je me prends la tete est l'insertion de caracteristique) est d'inserer un nouveau produit (ref_produit, designation, caracterisqtique, marque, type, prix...)

    j'ai deja tous les autres zone de texte du formulaire permettant d'inserer le prix, la designation, le prix...
    et comme dans ma bdd, les caracteristiques sont de type : <b>vitess machin : </b> blablabla <br> car quand je veux afficher les differentes caracteristiques, sur mes pages web, de façon structurées c'est à dire le nom de la caracteristuqes en gras puis sa description et ensuite a la ligne la suite des differentes caracteristiques correspondantes au produit (ordinateur portable, souris, clavier...)

    c'est pour cela (je me prends peut être la tete pour rien) que je voudrais une zone texte appelée "champ" et une zone texte appelée "description" (correspondant à la description de la caracteritique), tout cela pour une seule caracteristique puis en rajoutant d'autres si necessaire.

  2. #22
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    exemple du champs "caracteristique" de ma table "produit" (bon je sais certaine caracteristiques peuvent etre obsolete mais je changerai apres)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <b>Ecran : </b>17"<br>
    <b>Type tour : </b>Monobloc<br>
    <b>Processeur : </b>PowerPC G4 à 1,25 GHz<br>
    <b>Fréquence processeur : </b>1,25 GHz <br>
    <b>Mémoire vive : </b>256 Mo<br>
    <b>Disque dur : </b>40 Go<br>
    <b>Lecteur : </b>DVD-ROM <br>
    <b>Graveur : </b>CD-RW 8x<br>
     
    <b>Lecteur disquette : </b>non<br>

  3. #23
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    franchement je sais que c'est pas top mais j'ai pas trouvé de solution pour bien mettre en page les caracteristiques des differents produits

  4. #24
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Bon, ça va, le problème est moins grave que je le pensais :p
    En fait, tu veux juste concaténer du texte dans un champs TEXT de ta base de donnée.

    Ok ! Cela dit, si tu ne vas pas dans le gouffre, tu ne profite pas de toute la quintécense d'une base de donnée bien construite :



    Soit 3 tables, intitulés PC, TYPE et POSSEDE.
    PC contient un champ ID (de type entier) et tous les champs que tu as déjà définis MAIS PAS le champs caractéristique.
    TYPE possede 2 champs : un id (entier numerique) et un nom (texte).
    Possede a 3 champs : 2 clé étrangères appelés id_type, id_pc (tous 2 des entiers donc) et un champ texte nomé Description.

    Dans type, tu auras des enregistrement un peu comme ça :
    1, "carte mere"
    2, "processeur"
    3, "carte graphique"
    4, "alimentation"
    etc...

    le but du jeu, c'est plutot que de stocker du code HTML sans signification logique dans ta BDD, a chaque piece de ton PC, tu vas rajouté un enregistrement dans POSSEDE (on appel la table POSSEDE une relation) qui va associé à un PC un type de pièce et une description...

    si tu veux ajouter un processeur au PC identifié par l'ID n° 10 par exemple, tu vas rajouté un enregistrement dans possede :

    mysql_query('insert into possede values (2, 10, "Athlon64 4000+")');

    le 2 correspondant au type de pièce "processeur", le 10 correspondant a l'identifiant de ton PC et athlon64 est la description de ta piece...

    Avantages :

    si tu veux ajouter un nouveau type, il suffit de le rajouter dans la table type_piece.

    Sur la page de saisie des caractéristiques de ton PC, tu devras proposer un menu déroulant avec tous les types contenu dans ta table TYPE de dans. po ça, il faut parcourir la table TYPE et mettre tout les libellé dans un <select> avec leur ID_TYPE dans value:

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '<select name="type_piece">
    ';$req = mysql_query('select * from type');
    while($tp = mysql_fetch_array($req))
        echo '<option value="'.$tp['id_type'].'">'.$tp['nom'].'</option>';
    echo '</select>';
    de cette manière, tu n'as rien a modifier dans le code du programme pour rajouter un type de piece (ta page sera donc dynamique)

    d'autre part, tu peux faire un formatage beacoup plus propre a l'écran... exemple :

    caracteristique du PC ayant l'ID n° 10 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query('select * from possede, type where possede.id_pc = 10 and type.id_type = possede.id_type');
    while($carac = mysql_fetch_array($req))
    {
          echo '<b>'.$carac['nom'].'</b> : '.$carac['description'].'<br>';
    }
    Disons que c'est pas que c'est mieux , mais c'est LA bonne façon de faire !

  5. #25
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    javou que si je creé une table "caracteristique" (par exple) avec comme champs id_caracteristique, type, description et comme association "posseder" avec comme champs ref_produit, id_caracteristique, ce serait beaucoup plus pratique !!! je me demande pourquoi je me prends autant la tete

    mais ça me fait quand meme bizard de faire une table juste pour les caracteristiques parce que je risque d'en avoir enormement dans cette table et je vais etre obligé de les inserer dans un bon ordre et non au hasard car je ne vais pas mettre type + description = "type de graveur + sa vitesse dee gravage" (par exemple) avant "type de processeur + sa frequence ou son nom"

    tu vois ce que je veux dire?

  6. #26
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    pfffuu j'arrive vraiment pas à regler le pb en ce qui concerne l'insertion dans le cas où il y a plusieurs zone texte "champ" et "description" (name=champ "'.$x.'") grrrrrr

  7. #27
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Non, tu devrais avoir une petite vingtaine / trentaine d'enregistrement maximum dans type ! si tu penses en avoir enormément, c'est que t'as mal compris !

    Pour l'ordre, t'as juste a rajouté un champ priorité (type entier) dans la table type...
    de la sorte, quand tu fera l'affichage des caractréristiques, la requete deviendra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query('select * from possede, type where possede.id_pc = 10 and type.id_type = possede.id_type order by type.priorite');
    while($carac = mysql_fetch_array($req))
    {
          echo '<b>'.$carac['nom'].'</b> : '.$carac['description'].'<br>';
    }
    Plus le chiffre que tu mettra dans ordre sera proche de 0, plus ça apparaitra en haut de ta liste.

  8. #28
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    si tu continus à ecrire :

    en dépis des 2 messages que j'ai envoyé à ce sujet, ça risque pas de marcher un jour... Ca, en HTML, ça ne veut rien dire et ca n'est pas censé pouvoir marcher !

  9. #29
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    Citation Envoyé par gloubi
    Non, tu devrais avoir une petite vingtaine / trentaine d'enregistrement maximum dans type ! si tu penses en avoir enormément, c'est que t'as mal compris !
    effectivement j'ai mal compris parce que je ne vends pas que des PC je vends d'autres produits comme imprimantes, souris, clavier etc..

    c'est pour ça que j'avais mis une table caracteristique
    et comme pour un meme type de produit (par exemple clavier) les caracteristiques ne sont pas toutes les memes, pour certains il y a plus de caracteristiques que pour d'autres clavier

    peut etre que je devrais mettre dans une table "type" l'id, nom_type, caracteristique et mettre pour chaque type de produit le meme nombre de caracteristiques

    MCD possible :

    PRODUIT(table) == appartenir (association) == TYPE (table)

    PRODUIT (ref_p, designation, prix ..., #id_type)
    appartenir(#ref_p, #id_type)
    TYPE(id_type, nom_type, caracteristique)

    t'en penses quoi?

  10. #30
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    Citation Envoyé par gloubi

    Pour l'ordre, t'as juste a rajouté un champ priorité (type entier) dans la table type...
    de la sorte, quand tu fera l'affichage des caractréristiques, la requete deviendra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query('select * from possede, type where possede.id_pc = 10 and type.id_type = possede.id_type order by type.priorite');
    while($carac = mysql_fetch_array($req))
    {
          echo '<b>'.$carac['nom'].'</b> : '.$carac['description'].'<br>';
    }
    Plus le chiffre que tu mettra dans ordre sera proche de 0, plus ça apparaitra en haut de ta liste.
    comment ça un champs priorité?

  11. #31
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Pour le champs priorité, c'est juste un champ qui permet de déterminer la pertinance de la caractéritique...
    Il ne sert qu'a faire un ORDER BY dans la requete SQL, ce qui permet de trier des résultat d'après les valeurs d'une colonne donnée.
    En l'occurence, je te proposait de créer un champs exprès pour que plus la valeur que tu y met soit petite, plus l'enregistrement associé à cette caractéristique va apparaitre haut dans la liste quand tu feras ton select...order by
    Tu peux tester le bout de code que je t'ai passé, ça marchera !
    De cette façon, si tu attribu priorité 1 à "processeur" et 2 a "mémoire vive" tu aura la certitude que le processeur sera toujours affiché avant la mémoire vive !

    Ensuite, concernant le MCD, je vérais bien un truc comme ça :



    avec type_carac qui contiendrait en vrac des enregistrements style "fréquence", "taille mémoire", "nombre de couleurs", "puissance en watt", "Type emplacement" etc... bref, des caractéristiques qui peuvent être relative a tout type de produit (genre sté mémoire est valable pour une barette de mémoire, un carte graphique ou une clé USB par exemple).

    Caractéristique contient une description (en plus des clés étrangère)

    TYPE_PIECE contient des types de pieces : carte graphique, processeur, boituer, clé usb etc...

    PIECE doit contenir au moins le nom de la piece, genre ATI X800, est associé au type piece carte graphique, puis on créé et associe les caractéristiques "proceseur" : X800, "fréquence" : 50 Mhz, "memoire" : 256Mo etc...

    Ensuite, un PC est un assemblage de pieces en tout genre...

  12. #32
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    oauis mais là j'en suis dejà à 28 type_carac, et j'en suis qu'à mon 3eme type de produit... et j'ai en tout 15 types de produit et je risque d'en rajouter...

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2008, 18h04
  2. [Tableaux] Variable non considéré comme un chiffre
    Par Merlon dans le forum Langage
    Réponses: 7
    Dernier message: 27/06/2007, 12h08
  3. variable non reconnue dans une requête sql
    Par sanatou dans le forum C++
    Réponses: 3
    Dernier message: 13/12/2006, 17h43
  4. variable non reconnue
    Par shnouf dans le forum Langage
    Réponses: 7
    Dernier message: 13/02/2006, 16h44
  5. variables non reconnues
    Par syscom14 dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2005, 18h37

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