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 :

Code impure & form/variables


Sujet :

PHP & Base de données

  1. #21
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne comprends pas quelle partie de ton ancien code tu essaies de reviser la.
    Concernant le type de colonne (COLUMN_TYPE) on l'a déjà recupéré et mis dans l'index 'type' du tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Je comprends bien que je ne me fais pas comprendre .
    Mais c'est je pense du à ma partielle incompréhension du code.

    En se basant sur le code que tu m'as donné ci dessus pour faire afficher les commentaire SQL en TD Title des titres de colonnes, je souhaiterais maintenant pour finaliser juste savoir comment refaire sortir les données en questions pour chaque fiche...

    Comment afficher le contenu de mes champs en utilisant ce code ?
    Que je puisse comme avant avoir le contenu des enum, le contenu des variables par défaut, etc...

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ahhh j'ai compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $result = mysql_query("SELECT COLUMN_NAME, COLUMN_TYPE, DATA_TYPE, COLUMN_COMMENT, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$table'");
    while ($row = mysql_fetch_array($result)) {
     
    $col = $row['COLUMN_NAME'];
     
    $tblInfoColum[$col]['comment'] = $row['COLUMN_COMMENT'];
    $tblInfoColum[$col]['default'] = $row['COLUMN_DEFAULT'];
    $tblInfoColum[$col]['type'] = $row['DATA_TYPE']
     
    if ($row['DATA_TYPE'] == 'enum') {
           $enum = substr($row['COLUMN_TYPE'], 6 , -2);
           $enum = str_getcsv($enum, ',', "'");
           $tblInfoColum[$col]['enum'] = $enum;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Evidemment on ne répète pas chaque 'select', on fait une boucle (je ne met pas de fonction pour ne pas surcharger l'explication) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $tblColonnes = array('Dispo' , 'Type' , 'Etat', 'Ref');
    foreach ($tblColonnes as $colonne) {
        if (!isset($tblInfoColum[$colonne])) {
             exit('Colonne ' . $colonne . ' non définie');
        }
        elseif ($tblInfoColum[$colonne]['type'] == 'enum') {
             echo '<select name="' . $colonne . '" />';
             foreach ($tblInfoColum[$colonne]['enum'] as $value) {
                  $value = htmlspecialchars($value);
                  echo '<option value="' . $value . '">' . $value . '</option>';
             }
             echo '</select>';
        }
    }
    Par contre avec tes textarea je ne vois pas bien ce que tu veux faire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #25
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Oula, tout change...
    Autant je comprenais à 60% le code précédent, autant la, je ne dépasse pas les 15%.

    Citation Envoyé par sabotage Voir le message
    (...)
    Par contre avec tes textarea je ne vois pas bien ce que tu veux faire.
    En fait, j'ai mis cela pour pouvoir obtenir les variables des champs remplis.
    Voici le formulaire tel qu'il est aujourd'hui :


    Les bénévoles référencent un à un les lot en doublons, et cela se rajoute dans la base SQL à chaque insertion.

    Sur le code actuel, cela me sort à présent 4 enum sans rien dedans :

  6. #26
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu pourrais me donner l'export de ta table ?
    Ca serait plus facile.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #27
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu pourrais me donner l'export de ta table ?
    Ca serait plus facile.
    -=> Export SQL

  8. #28
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'avais un peu raté mon découpage, ce qui provoquait un apostrophe baladeur mais sinon ça marche :
    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
    $connexion = mysql_connect("localhost", "root", "");
    $result = mysql_query("SELECT COLUMN_NAME, COLUMN_TYPE, DATA_TYPE, COLUMN_COMMENT, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'destock'");
    while ($row = mysql_fetch_array($result)) {
     
    	$col = $row['COLUMN_NAME'];
     
    	$tblInfoColum[$col]['comment'] = $row['COLUMN_COMMENT'];
    	$tblInfoColum[$col]['default'] = $row['COLUMN_DEFAULT'];
    	$tblInfoColum[$col]['type'] = $row['DATA_TYPE'];
     
    	if ($row['DATA_TYPE'] == 'enum') {
    		   $enum = substr($row['COLUMN_TYPE'], 5 , -1);
    		   $enum = str_getcsv($enum, ',', "'");
    		   $tblInfoColum[$col]['enum'] = $enum;
    	}
     
    }
     
    $tblColonnes = array('Dispo' , 'Type' , 'Etat', 'Ref', 'Date', 'Donateur', 'Commentaire', 'Collection', 'Acqui', 'Valorisation');
    foreach ($tblColonnes as $colonne) {
        if (!isset($tblInfoColum[$colonne])) {
             exit('Colonne ' . $colonne . ' non définie');
        }
        elseif ($tblInfoColum[$colonne]['type'] == 'enum') {
             echo '<select name="' . $colonne . '" />';
             foreach ($tblInfoColum[$colonne]['enum'] as $value) {
                  $value = htmlspecialchars($value);
                  echo '<option value="' . $value . '">' . $value . '</option>';
             }
             echo '</select>';
        }
    	elseif ($tblInfoColum[$colonne]['type'] == 'text') {
    		echo '<textarea name="' . $colonne . '" />?</textarea>';
    	}
    }
    Par contre tu fais un abus d'enum.
    Tu qui as en tête une maintenance facile de ton appli, ce n'est pas ce qu'il te faut.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #29
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Citation Envoyé par sabotage Voir le message
    (...)
    Par contre tu fais un abus d'enum.
    Tu qui as en tête une maintenance facile de ton appli, ce n'est pas ce qu'il te faut.
    Comment aurais-tu fait, pour proposer des choix pré-définis à ces bénévoles ?

  10. #30
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quand tu as des choix fixes, par exemple Homme/Femme, tu peux utiliser un Enum.
    Quand tu as des catégories, que tu vas donc sûrement faire évoluer il vaut mieux rester sur un modèle relationnel :

    Tu crées une table "type" avec 2 colonnes :
    type_id - type_nom
    1 - Jeu
    2 - Application
    3 - Documentation
    ...

    Et dans ta table "destock" tu mets l'id du type et non plus son nom entier.

    Pour rassembler les deux tables quand tu veux lire toutes les infos, une jointure
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM destock
    JOIN type ON destock.type_id = type.type_id

    Pour faire ta transition vers cette solution, une fois que tu as créé ta table type, tu ajoutes une colonne "type_id" de type entier dans ta table destock et tu executes :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE destock JOIN type
    ON destock.type = type.type_nom
    SET destock.type_id = type.type_id
    Ta colonne type_id va recuperer tous les bons id (a condition que les noms soient bien identiques dans les deux tables) et tu peux supprimer ta colonne "type" dans destock.

    L'avantage immédiat c'est que pour lister les choix de "type" possibles, il suffit de lire la table "type".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #31
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Quand tu as des choix fixes, par exemple Homme/Femme, tu peux utiliser un Enum.
    Quand tu as des catégories, que tu vas donc sûrement faire évoluer il vaut mieux rester sur un modèle relationnel :
    (...)
    Merci de ton explication, néanmoins, cela semble un peu dépasser mes compétences. J'ai essayé, mais je pense qu'il faut me cantonner à un pb à la fois.

    Citation Envoyé par sabotage Voir le message
    J'avais un peu raté mon découpage, ce qui provoquait un apostrophe baladeur mais sinon ça marche :
    (...)
    Humm, la fonction ne semble pas reconnue par mon éditeur HTML et le test me donne :
    Fatal error: Call to undefined function str_getcsv() in /Destock/saisie.php on line 20

  12. #32
    Membre très actif Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Par défaut
    En effet, elle n'est pas présente dans package PHP. Quand tu n'est pas sure faire un simple phpinfo() ou vérifie ta conf.

    Fatal error: Call to undefined function str_getcsv() in /Destock/saisie.php on line 20
    Pour bypasser ce problème, il ne te reste plus qu'à soit mettre à jour le serveur (si tu peux) autrement il va falloir que tu parse toi même.

    Tu peux parser avec explode()

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $contenu_a_parse = "piece1;;piece2;;piece3;;piece4;;piece5;;piece6";
    $array= explode(';;', $contenu_a_parse);
     
    echo $pieces[0]; // piece1
    echo $pieces[1]; // piece2

  13. #33
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Merci de votre aide, mais encore une fois, je ne sais pas quoi "parser" ...

  14. #34
    Membre éclairé Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    Citation Envoyé par Shuty Voir le message
    (...)
    Pour bypasser ce problème, il ne te reste plus qu'à soit mettre à jour le serveur (si tu peux) (...)
    Je suis visiblement en PHP Version 5.2.17.
    Les admins. de 1and1 me disent que je peux bidouiller un fichier php.ini a mettre en racine du dossier en question.

    Question : Que rajouter donc à ce fichier ini pour avoir la fonction "str_getcsv" d'active ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2007, 09h35
  2. [Forms]Variable global en oracle form
    Par Sabact dans le forum Forms
    Réponses: 6
    Dernier message: 03/11/2006, 14h31
  3. Request.form + variable
    Par Phenomenium dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2006, 14h21
  4. [MySQL] code php dans une variable chaine php
    Par unmulot dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 11/07/2006, 10h48
  5. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2005, 12h55

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